Algoritma

CORDIC algoritması

Trigonometrik fonksiyonlar, sonsuz sayıda elemandan oluşan bir serinin açılımı şeklinde ifade edilebilir. Taylor serisi denilen bu serilerin ilk 8-10 elemanını hesaplayarak gerçek değerlere yeterince yakın sonuçlar elde edebiliriz. Fakat bu seriler içerisinde çarpma işlemini barındırır ve çarpma işlemi bilgisayarlar için maliyetli bir işlemdir. Öyleyse bize çarpma/bölme gibi kompleks işlemleri barındırmayan başka bir metod lazım, CORDIC algoritması gibi. CORDIC (for COordinate…

Continue Reading

C

Bitlerin içerisine veri saklamak

Bir program yazdığınızı ve bu program için tarih verisini tutan bir veri yapısına ihtiyacınız olduğunu hayal edin. Eğer C dilini kullanıyorsanız yapacağınız ilk şey bir struct oluşturmak olacaktır. Veri yapımız bu şekliyle 20 byte yer kaplamaktadır. İlk başta bu kulağa çok büyük bir sayı gibi gelmiyor olabilir, fakat bir düşünün. Sırf 1-12 arasında değerler alabilen ayları hafızada tutmak için 2^32…

Continue Reading

Algoritma

Breadth first search

BFS, arama yaparken önce başlangıç düğümünün yakın çevresini, daha sonra da uzağındaki düğümleri arar. Dolayısıyla aranan düğüm başlangıç noktasına yakınsa arama işini kolaylaştırır. Aşağıda bir binary tree örneği görüyorsunuz. Konunun daha iyi anlaşılabilmesi için herhangi bir hedef konmadan tüm ağaç aranmıştır. BFS ile arama yaparken kuyruk veri yapısından faydalanıldı. Ağaç veri yapısının başlangıç durumu. Kuyruğa 0 numaralı düğüm eklendi. Kuyruktan…

Continue Reading

Algoritma

Depth first search

DFS’yi anlatmadan önce bunun bir arama algoritması olduğunu söylemekle başlayalım. Arama algoritmaları birçok yönden birbirinden ayrılsa da ortak noktaları birşeyler aramalarıdır. Bu bazen bir dizideki en büyük sayı olur, bazen de labirentten çıkış yolu. DFS, graflarda arama yapar ve anlaşılması görece kolaydır. Graflar DFS ile aranırken stack veri yapısı kullanılır. Aşağıda DFS ile aranmış bir graf örneği görüyorsunuz. Algoritmanın daha…

Continue Reading

Javascript

3.boyutta kamera perspektifi

Geçenki yazımda 3 boyutlu fonksiyon grafiği çizimini öğrendik. Şimdi sıra bu fonksiyon üzerinde dolaşabilmemizi sağlayacak, tam anlamıyla 3 boyutlu bir uzay inşa etmeye geldi. Uzayın içinde dolaşması için bir mankene ihtiyacımız var. İçerideki dünyayı onun gözlerinden görecek, onun hareketlerini kontrol edeceğiz. Mankenimizin ismi “Burak” olsun. Mankenimizin uzayı nasıl gördüğünü anlamak için üç tane vektör belirledik. Vektörlerden biri Burak’ın sağ kolu,…

Continue Reading

PHP

Ekşi sözlüğü trollemek

Üniversitemde ilk senemi bitirmiş, c, c++, java, javascript, php ile biraz uğraşmış, aklıma gelen herşeyi denemiştim. Yaz tatili gelmişti ama benim de projelerim bitmişti. Birgün soda içmekten ve fransızca pop dinlemekten beynim jöleye dönmüş bir şekilde aylak aylak uzanırken ekşi sözlükte dolaşmaya karar verdim. Ana sayfa açıldığında gözüme sağ üstteki kullanıcı adı ve şifre kutusu takıldı ve içimden “Php kullanarak…

Continue Reading

C

Türkçe karakter kullanımı

C dilinde bir string oluşturmak istediğimizde char veri tipinde bir dizi tanımlar veya pointer kullanırız. Ascii karakterlerini kullandığımızda string.h kütüphanesinin sağladığı tüm fonksiyonları kullanabilir, stringteki istediğimiz bir karakteri indis yardımıyla döndürebiliriz. Ama türkçe karakter kullandığınızda beklenmedik sonuçlarla karşılaşabilirsiniz. Aşağıdaki kodu inceleyelim. İlk printf fonksiyonu ekrana anlamsız bir karakter, ikinci printf fonksiyonu ise 9 değerini basar. Bunun sebebi ascii karakterleri için…

Continue Reading

Javascript

3 boyutlu fonksiyon grafiği çizimi

Javascript ile dönen küp çizimini daha önceki postumda görmüştünüz. Aslında tek yaptığımız 8 nokta çizmek ve bunları orijin etrafında döndürmekti. Peki 8 nokta ile küp çizebiliyorsak, daha fazla nokta kullanarak çok daha büyük yapılar inşa edemez miyiz? Ederiz. 3d küp çizmek için yazdığımız koddan devam ediyoruz. Noktaları oluşturduğumuz kısımda bazı değişiklikler yaptık. Artık noktalar iki boyutlu bir dizide tutulacak. x…

Continue Reading

Javascript

3 boyutlu dönen küp çizimi

Tarayıcılarda çalışabilirliği olsun, esnek yapısı olsun javascript en sevdiğim programlama dillerinden bir tanesidir. Hatta web sitemin header kısmında gördüğünüz resim bile javascript ile yazdığım 3 boyutlu simülasyondan alınmıştır. Tabi bu simülasyonu yazmak benim için o kadar kolay olmamıştır. Onlarca başarısız denemeden ve aylarca verilen aradan sonra, internette tesadüfen gördüğüm basit bir formül beni tekrar sahalara döndürmüştür. 🙂 “x’ = x*cos(theta)…

Continue Reading

Algoritma

Sözlükten kelime bulma algoritması

Mastermind oyununu bilenleriniz bilir (ben bilmiyorum). İki kişi oynanan bu oyunda taraflardan biri 6 farklı renkten bazılarını seçerek 4 renkten oluşan bir kombinasyon oluştur, diğer taraf ise bu renk sırasını tahmin etmeye çalışır. Her tahminden sonra kaç tane rengi doğru tahmin edildiği gibi bazı ipuçları verilir. Eğer tahmin eden taraf bu ipuçlarını takip eder ve en fazla 11 tahminde doğru…

Continue Reading