On Feb 7, 2008 9:28 PM, Utku Somer <[EMAIL PROTECTED]> wrote: > 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.
Aslinda yukarida bir semboller listesi kullanilmis. Sembollerin fazla yer tutan seyler olduklarini sanmiyorum. Bence buyuk bir ihtimalle hafizadaki bir string'e (veya benzer bir yapiya) pointer'dirlar ve ayni semboller icin yeni hafiza ayrilmiyordur. > 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. :) Ben yine de sembollerle calisilmasini oneririm. Yukaridaki ornekte veri kurallara siki sikiya bagli, pek esnek degil. Soyle birsey yapilabilir: (defvar *rules* (make-hash-table)) (setf (gethash 'F *rules*) '(F L F R F R F L)) (defun get-replacement (old) (gethash old *rules* (list old))) (defun grow (fractal) (let ((new-fractal '())) (dolist (old fractal (nreverse new-fractal)) (dolist (new (get-replacement old)) (push new new-fractal))))) (defun deneme () (format t "~{~a ~}~%" (grow (grow '(F)))) (let ((*rules* (make-hash-table))) ; *rules*'a yeni deger verebiliyoruz (setf (gethash 'F *rules*) '(A F B F)) (format t "~{~a ~}~%" (grow (grow '(F)))))) -- Mehmet _______________________________________________ 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