sanirim (generate rules-list axiom-list)
tadinda bir sey istiyordun. yani kurallar listesi verilecek, baslangic liste verilecek, sonraki nesili cikaracak. tabii bunu yazarken kurallar listesi icindeki (burdaki grammer'in turkcesi?) butun kurallari taramak ve o anda gerekeni bulmak lazim gerekecek. hmmmm. Hmm, ben ilk verilen ornegi pek sevemedim. arkadas kurallari string olarak vermis, ve sonucta yaptigi sey de yine pattern matching ve string replace. Ben L-sistemi uc boyutlu olarak kullanip agaclar cizmistim vakti zamaninda ve stringler ile tutmustum. hic tavsiye etmiyorum, cok yer tutuyor, bir sekilde stream sistemi kurmak cok daha iyi olabilir. Benim uc boyutlu agaclarim on yasina (yada onuncu generasyona) geldiklerinde stringlerinin uzunlugu aya gidip geliyordu. Grafik motorum ne kadar iyi olursa olsun, o bilgiyi oyle cekip cizmek gayet yavas oluyordu. sonucta kaplumbaga grafiklerine bosuna kaplumbaga demiyorlar galiba. gerci L-system icin bu yeterli olsa da, sanki lispe daha yakin bir sekilde yapilabilir mi diye dusundum. sonucta dusunursek zaten uygulayacagimiz kurallar bir fonksiyon. foksiyon taramak gibi onlari yeniden aramak yerine, onlari fonksiyon olarak tanimlasak? kafalardaki data ve fonksiyonlar ayri seylerdir tutumunu yikmak cabasiyla.... demek istedigim su: (defun l () `(,#'l)) (defun r () `(,#'r)) ;90 derecelik koch egrisi ornegimiz olsun (defun f () `(,#'f ,#'l ,#'f ,#'r ,#'f ,#'r ,#'f ,#'l ,#'f)) (defun grow (fractal) (if (null fractal) () (append (funcall (car fractal)) (grow (cdr fractal))))) generasyon isini boylece halletmis oldum. cizim isi icin daha fazla sorun mu yarattim? bu da benim sorum olsun. :) not: bu arada "Algorithmic Beauty of Plants" kitabimi kaybettim, yenisi basilsa da alsam. _______________________________________________ cs-lisp mailing list cs-lisp@cs.bilgi.edu.tr http://church.cs.bilgi.edu.tr/lcg http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp