2016年8月18日木曜日

開発環境

  • OS X El Capitan - Apple (OS)
  • Emacs(Text Editor)
  • Scheme (プログラミング言語)
  • kscheme (ksi)(github) (処理系)

計算機プログラムの構造と解釈[第2版](ハロルド エイブルソン (著)、ジュリー サスマン (著)、ジェラルド・ジェイ サスマン (著)、Harold Abelson (原著)、Julie Sussman (原著)、Gerald Jay Sussman (原著)、和田 英一 (翻訳)、翔泳社、原著: Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)(SICP))の第1章(手続きによる抽象の構築)、1.2(手続きとその生成するプロセス)、1.2.2(木構造再帰)、問題1.12.を取り組んでみる。

その他参考書籍

問題1.12.

コード(Emacs)

(begin
  (newline)
  (load "procedures.scm")

  (define pascal-triangle
    (lambda (i j)
      (if (or (= j 1) (= i j))
          1
          (+ (pascal-triangle (- i 1) (- j 1))
             (pascal-triangle (- i 1) j)))))
  
  (define range
    (lambda (start end)
      (define iter
        (lambda (counter)
          (if (= counter end)
              '()
              (cons counter (iter (+ counter 1))))))
      (iter start)))
  
  (define nums '(1 2 3 4 5 6 7 8 9 10))
  (for-each (lambda (i)
              (for-each (lambda (j)
                          (display (pascal-triangle i j))
                          (display " "))                        
                        (range 1 (+ i 1)))
              (newline))
            nums)
  'done)

入出力結果(Terminal(kscheme), REPL(Read, Eval, Print, Loop))

$ ksi < sample12.scm
ksi> 
1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
1 5 10 10 5 1 
1 6 15 20 15 6 1 
1 7 21 35 35 21 7 1 
1 8 28 56 70 56 28 8 1 
1 9 36 84 126 126 84 36 9 1 
=> done
ksi> $

0 コメント:

コメントを投稿