Saturday, March 19, 2011

SICPよんでみる 3.2.2

計算機プログラムの構造と解釈のまんが記録。
環境モデルの適用の仕方その1。




Monday, March 14, 2011

塞翁が馬

金曜日は一日風邪で寝ていたおかげで、帰宅困難者にならずに済みました。
風邪が治らずに土日もずっと寝てたけど。

そして今日はJRがそこらじゅうで運休。最寄り駅が止まっているので身動き取れない。
明日はどうなるんだろ?

何人かの東北の知人も心配だし。

Saturday, March 5, 2011

Schemeでクイックソート

バブルソートを作ったからには、もちろんクイックソート(quick sort)も作らないとね。
(define (cat l1 l2)
  (cond ((null? l1) l2)
        (else (cons (car l1)(cat (cdr l1) l2)))))

(define (q-sort li)
  (define (split in lo hi mp)
    (cond ((null? in)(cat (q-sort lo)(cons mp (q-sort hi))))
          ((> mp (car in))(split (cdr in)(cons (car in) lo) hi mp))
          (else (split (cdr in) lo (cons (car in) hi) mp))))
  (cond ((null? li) li)
        (else (split (cdr li) '() '() (car li)))))

昨日のバブルソートよりはだいぶ見やすいプログラムになってる。
まあ昨日は酒が入ってたしね。

Friday, March 4, 2011

Schemeでバブルソート

「数学ガール」にバブルソートが出てきたので、何となく書いてみた。
とりあえずやっつけ。
(define (list-count l)
  (cond ((null? l) 0)
        (else (+ 1 (list-count (cdr l))))))

(define (one-path l)
  (cond
    ((or (null? l) (null? (cdr l))) l)
    ((> (car l)(cadr l))(cons (cadr l)
                              (one-path (cons (car l)(cddr l)))))
    (else (cons (car l)(one-path (cdr l))))))

(define (b-sort l num)
     (cond ((zero? num) l)
           (else (b-sort (one-path l) (- num 1)))))

(define (bubble-sort l)
  (cond
   ((null? l) l)
   (else (b-sort l (- (list-count l) 1)))))