Re: [cs-lisp] nerde kalmistik.?

2008-02-07 Başlik Utku Somer
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. h.

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


Re: [cs-lisp] nerde kalmistik.?

2008-02-07 Başlik Mehmet Yavuz Selim Soyturk
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. h.

 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


[cs-lisp] nerde kalmistik.?

2008-02-02 Başlik Aykut Caglayan
(defun my-replace (lst)
  (cond ((null lst) '())
((eq (car lst) 'a) (append (list 'e) (my-replace (cdr lst
((eq (car lst) 'b) (append (list 'd) (my-replace (cdr lst
(t (append (list (car lst)) (my-replace (cdr lst))
   
  Bu sablonu L-sistem'i ya da bir fraktallik uygulamasina nasil cevirebilirim?
   
  Yani (null lst) true dondugunde sona erdirilen dongu sonucu bize verilen yeni 
listeyi, istedigim kereler ayni muameleye tabi tutmak istiyorum.

   

   
-
Be a better friend, newshound, and know-it-all with Yahoo! Mobile.  Try it now.___
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


RE: [cs-lisp] nerde kalmistik.?

2008-02-02 Başlik Emre Sevinc
-Original Message-
From: [EMAIL PROTECTED] on behalf of Aykut Caglayan
Sent: Sat 2/2/2008 9:44 PM
To: cs-lisp@cs.bilgi.edu.tr
Subject: [cs-lisp] nerde kalmistik.?
 
 (defun my-replace (lst)
  (cond ((null lst) '())
((eq (car lst) 'a) (append (list 'e) (my-replace (cdr lst
((eq (car lst) 'b) (append (list 'd) (my-replace (cdr lst
(t (append (list (car lst)) (my-replace (cdr lst))
   
  Bu sablonu L-sistem'i ya da bir fraktallik uygulamasina nasil cevirebilirim?
   
  Yani (null lst) true dondugunde sona erdirilen dongu sonucu bize verilen 
 yeni listeyi, istedigim kereler ayni muameleye tabi 
 tutmak istiyorum.

Lindenmayer sistemleri ile ilgili olarak asagidaki orneklerin bir faydasi olur 
mu acaba?

http://groups.google.com/group/comp.lang.lisp/browse_thread/thread/05631fa93379bca8/248b67466ca2aa7d
http://www.fractalconcept.com:8000/public/open-source/cl-pdf/examples/l-systems.lisp
http://lispm.dyndns.org/lisp/pics/lindenmayer.jpg

Bu arada CM gelistiricisi ve besteci Taube tarafindan gecenlerde duyurulan 
Grace ve GraceCL sistemlerini deneme imkanin oldu mu? (Ya da olur mu ve bir 
'review' yazisi cikar mi Türkce?):

http://ccrma-mail.stanford.edu/pipermail/cmdist/2008-January/004572.html
http://ccrma-mail.stanford.edu/pipermail/cmdist/2008-January/004573.html
http://sourceforge.net/project/showfiles.php?group_id=9766package_id=260559
http://sourceforge.net/project/showfiles.php?group_id=9766package_id=260584

--
Emre Sevinc
___
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