Archive

Archive for the ‘Scheme’ Category

Çıkmaz Demeyin Şansınızı Deneyin

January 22nd, 2008 Aşkın Yollu 1 comment

Bu girdi Burdaki girdiden esinlenilerek yazıldı.

E madem pyton ile sayısal kuponu yapılıyor biz niye scheme ile yapmayalım bunu demi:)
Probleme göre kod bana çok uzun geldi. Belki ilerde optimize edebilirim. Ama şimdilik böyle oynayalım demi:)

  1. (define (sayisal)
  2. (display "Oynamak istediginiz kolan sayisini giriniz: \n")
  3. (let ((kolon (read)))
  4. (do ((i 1 (+ i 1))) ((> i kolon))
  5. (let loop ((lst (list (+ (random 49) 1)))
  6. (sayi (+ 1 (random 49))))
  7. (if (= (length lst) 6)
  8. (printf "~a. kolon: ~a\n" i (sort lst < ))
  9. (if (member sayi lst)
  10. (loop lst (+ (random 49) 1))
  11. (loop (append lst (list sayi))
  12. (+ (random 49) 1))))))))
  13. (sayisal);burası kodun çalıştırılması için.
  14. ;aslında define kısmı çıkartılarak buna gerek kalmamayabilir
  15. ;ama ilerde belki başka birşey içinde kullanırım:)

DrScheme v372 Çıktı

December 29th, 2007 Aşkın Yollu No comments

DrScheme LogoDrScheme v372 çıktı. Bu versiyonunda birçok hatanın düzeltildiği ve birkaç yeni özellik eklendiği belirtiliyor. Sanırım beni ençok etkileyen özellik kod tamamlama özelliği. Siz bir kod yazarken o size ekleyebileceğiniz konutları sıralıyor. Ancak bu özellik çok kullanışlı bir halde gelmiyor. Tamamlama istediğimiz zaman [ Ctrl / ] tuş kombinasyonunu kullanmamız gerekmekte. Bende [ Ctrl Shift 7 ] kombinasyonunun kullanılması gerekiyor.
Kod tamamlama
Ayrıca burdan indirebilirsiniz.

Alın size bir güzel kod:)

December 28th, 2007 Aşkın Yollu No comments

Alın size bir güzel kod:) Benim hoşuma gitti eminim sizin hoşunuzada gidecek.

  1. (define (goster str)
  2. (let loop ((str str))
  3. (if (equal? str "")
  4. (begin
  5. (sleep 0)
  6. (display ""))
  7. (begin
  8. (sleep 1/2)
  9. (display (string-ref str 0))
  10. (loop (substring str 1))))))
Categories: Programlama, Scheme Tags:

Scheme ile ekrana içi boş dikdörtgen bastırmak

December 20th, 2007 Aşkın Yollu No comments
  1. (define (kare x y)
  2. (do ((i 0 (+ i 1))) ((= i x))
  3. (newline)
  4. (do ((j 0 (+ j 1))) ((= j y))
  5. (if (or (= i 0) (= i (- x 1)))
  6. (display "*")
  7. (if (or (= j 0) (= j (- y 1)))
  8. (display "*")
  9. (display " "))))))

bu kod aşağıdaki gibi bir şekil oluşruracak

 
**********
*        *
*        *
*        *
*        *
*        *
*        *
*        *
*        *
**********

Ancak bu şekil pek hoş değil. Eğer display'in içini biraz düzenlersek çok dahahoş şekilerle karşılaşırız.

  1. (define (kare x y)
  2. (do ((i 0 (+ i 1))) ((= i x))
  3. (newline)
  4. (do ((j 0 (+ j 1))) ((= j y))
  5. (if (or (= i 0) (= i (- x 1)))
  6. (display "* ")
  7. (if (or (= j 0) (= j (- y 1)))
  8. (display "* ")
  9. (display " "))))))

Bu kod

* * * * * * * * * *
*                 *
*                 *
*                 *
*                 *
*                 *
*                 *
*                 *
*                 *
* * * * * * * * * *

şeklini oluşturacaktır. Tabiki etkileşim penceresinde şekil daha düzgün çıkacaktır.

Categories: Programlama, Scheme Tags:

Bubble sort algoritması ve scheme çözümü

December 17th, 2007 Aşkın Yollu No comments

Bubble sort algoritması kabaca: verilen dizideki elemanları ikili olarak karşılaştırıp gerekli olduğunda yerlerini değiştirmek esasına dayanır. Elimizde 11 5 8 4 6 84 7 sayılarında oluşan bir dizi olduğunu var sayalım ve bu diziyi küçükten büyüğe sıralamak isteyelim.

  1. önce 11 ile 5i karşılaştırırız, 11 5'ten büyük olduğu için 11 ile 5in yerini değiştiririz; 5 11 8 4 6 84 7
  2. sonra 11 ile 8i karşılaştırırız ve 11 ile 8'in yerini değiştiririz 5 8 11 4 6 84 7
  3. 11 ile 4; 5 8 4 11 6 84 7
  4. 11 ile 6; 5 8 4 6 11 84 7
  5. 11 ile 84; 84 büyük olduğu için sıralamaya dokunmayız. 5 8 4 6 11 84 7
  6. şimdi 84 ile 7'yi karşılaştırırız; 5 8 4 6 11 7 84

Son durumda 7 elemanlı bir dizi için 6 kontrol yaptık ve en büyük elemanı sona attık. Şimdiki karşılaştırmalarımızda artık son elamanı yok sayabiliriz. Yani problemimiz artık 6 elemanlı bir diziyi sıralamak oldu. Aynı işlemleri 6 eleman varsayarak yaptığımızda sırasıyla problem 5, 4, 3, 2 ve 1 elemanlı dizileri sıralamaya dönüşecek. 1 elemanlı dizi herzaman sıralı olduğu için hiç bi derdimiz sıkıntımızda kalmayacak:) Bu şekilde işlemleride 6 defa yaptık.
Şimdi sıra geldi koda

  1. (define vector-bubble-sort
  2. (lambda (vec op)
  3. (let ((tmp 0) (stop-do #f))
  4. (do ((i 0 (+ i 1))) ((or (= i (vector-length vec)) stop-do))
  5. (set! stop-do #t)
  6. (do ((j 0 (+ j 1))) ((= j (- (vector-length vec) i 1)))
  7. (if (not (op (vector-ref vec j) (vector-ref vec (+ j 1))))
  8. (begin
  9. (set! tmp (vector-ref vec j))
  10. (vector-set! vec j (vector-ref vec (+ j 1)))
  11. (vector-set! vec (+ j 1) tmp)
  12. (set! stop-do #f))))))
  13. vec))

DrScheme de etkileşim penceresine

(vector-bubble-sort #(5 11 8 4 6 84 7) < )

şeklide giriş yapmamız gerekiyor. "< " işareti yerine ">" işaretide koyabiliriz. Bu sayede birde büyükten küçüğe sıralamak için aynı kodları yazmamıza gerek kalmayacak.

Sezar şifreleme

December 12th, 2007 Aşkın Yollu No comments

Sezar şifreleme için yazdığım ilk kod aşağıdaki gibiydi

  1. (define str2 "")
  2. (define (sezar str lst)
  3. (do ((i 0 (+ i 1)) (j 0 (+ j 1))) ((= j (string-length str)))
  4. (if (= i (length lst))
  5. (set! i 0))
  6. (set! str2
  7. (string-append
  8. str2
  9. (string (integer->char
  10. (+ (list-ref lst i )
  11. (char->integer (string-ref str j)))))))))

Ancak bu kod pek hoşuma gitmedi üzerinde biraz daha oynama yapmak gerekiyordu. Mesela en baştaki

(define str2 "")

pek hoş durmuyordu ve hiç bir sonuç gönmüyordu. Ekstradan srt2 nin değerini sorgulamak gerekiyordu.
Read more...

Same oyunu

November 21st, 2007 Aşkın Yollu 5 comments

Merhaba arkadaşlarımın isteği üzerine ödev olarak verilmiş olan same oyununun kendi yazdığım scheme kodlarını internete koydum. Olaki bigün sizden de scheme ile same oyunu yazmanızı isterlerse bu kodlardan faydalanabilirsiniz.

http://www.askin.ws/doc/same.scm

Categories: Programlama, Scheme Tags: , , ,

Scheme sen nelere kadirsin

November 17th, 2007 Aşkın Yollu No comments

Bugun (yani 18 Kasım 2007 ve saat 03:32) http://blog.arsln.org Sitesini gezerken Ekran görüntülerinizi Gimp ile şekilendirin başlıklı yazıyı gördüm. Siz bi zahmet okuyun artık. Neye ordaki betiği bi inceleyim dedim. Demez olaydım Yaklaşık 7 saattir scheme çalışmış ve sabaha kadar da (zaten sabah oldu) çalışmak zorunda olan bir insan olarak hiç ummadığım bir zamanda scheme ile karşılaşmak beni heyecanlandırdı. Demek ki scheme bi scheme değil demek doğru değilmiş. Scheme bi scheme imiş:))

Categories: AQ, Programlama, Scheme Tags: ,