27 Eylül 2012 Perşembe

Fuzuli ile İki String Arasındaki Levenshtein Uzaklığını Hesaplama

Geçtiğimiz aylarda yayınlanan Fuzuli Programlama Dili ve Yorumlayıcı'nın (Interpreter) ilk sürümünden itibaren gerek bu blog içerisinde, gerekse stdioe.blogspot.com İngilizce blog içerisinde Fuzuli ile ilgili tanıtıcı ve öğretici yazılar yazmaktayız. Bu yazıda da oldukça yararlı olan ve bir çoğumuzun bilip kullandığı levenshtein fonksiyonunu, Fuzuli içerisinde kullanıp iki string ifadenin arasındaki uzaklığı hesaplayacağız.

Fuzuli kodunda anlamadığınız yerleri http://fuzuliproject.org/docs/ adresinden Fuzuli Documentation başlığı altında araştırıp, http://fuzuliproject.org/index.php?node=tryonline adresindeki online interpreter üzerinde online olarak çalıştırıp çıktısını görebilirsiniz.


(require "nfl/io.nfl")
(require "nfl/string.nfl")
 
(print "Please enter a word for calculating distance: ")
(let word (readline))
 
(let Array (list "windows" "ubuntu" "android"))
 
(foreach i in Array
  (let distance (levenshtein word i))
  (println distance " for " i)
)

Yukarıdaki kodlar, Fuzuli ile yazılmıştır. Fuzuli kodları ile yazılan sayfalar, .fzl dosya formatında kaydedilir. Biz de yukarıdaki dosyamızı levenshtein.fzl adıyla kaydedelim. Şu an Fuzuli 'nin Linux ve Windows sürümleri mevcuttur. Ancak Windows sürümü limitlidir ve her paketi içermez. Levenshtein fonksiyonu ve konsolda kullanıcıdan girdi bekleyen readline, sırasıyla string ve io paketlerinde olduklarından, bizim örneğimizin çalışması için, bu fonksiyonları içeren bir Fuzuli versiyonu yeterli olacaktır. Windows limitli sürümü ise bu paketleri içerir.

Windows limitli sürümünü indirmek için : http://code.google.com/p/fuzuli/downloads/detail?name=fuzuli-0.1.10-Windows.zip&can=2&q=

Konsolda

fuzuli levenshtein.fzl

yazıp enter tuşuna bastığınızda





Yukarıdaki gibi ekran çıktılarını alacaksınız. İlk ekran çıktısında kullanıcı girdisi "fuzuli" olmuştur ve  levenshtein fonksiyonu windows, ubuntu ve android kelimeleriyle aradaki uzaklığı hesaplayıp ekrana sırasıyla 6, 5, 5 yazdırmıştır. Ancak ikinci ekran çıktısında kullanıcı girdisinin "android" olduğu görülmektedir. Dolayısıyla levenshtein fonksiyonu, son satırda "0" bulmuştur, zira android kelimesi ile android kelimesi arasındaki fark, sıfır (0) olacaktır.

Kod sentaksı ile ilgili sorularınızın cevaplarını http://fuzuliproject.org sitesinde bulabilir, Fuzuli Kılavuzunu ise android cihazınıza Google Market üzerinden indirebilirsiniz.

Bol fuzuli günler dilerim.

Hiç yorum yok:

Yorum Gönder