ハノイの塔は随分前にC#でやったことあったけどもう忘れた。これ言うほど簡単じゃなくね?というのが本心です。
Web上には「ハノイの塔」の手続き中で出力処理(Printとか)を行ってるものが多いけど、それってどうなの。やはりこういうのよりよはこっちが好み。
Tower of Hanoi - ハノイの塔
(define (hanoi n from to using) (cond ((zero? n) '()) (else (append (hanoi (- n 1) from using to) (list (cons from to)) (hanoi (- n 1) using to from))))) |
(hanoi 3 '1 '2 '3) ;; => ((3 . 1) (3 . 2) (1 . 2) (3 . 1) (2 . 3) (2 . 1) (3 . 1)) (hanoi 3 'a 'b 'c) ;; => ((a . b) (a . c) (b . c) (a . b) (c . a) (c . b) (a . b)) (hanoi 5 'c 'a 'b) ;; => ((c . a) (c . b) (a . b) (c . a) (b . c) (b . a) (c . a) (c . b) (a . b) (a . c) (b . c) (a . b) (c . a) (c . b) (a . b) (c . a) (b . c) (b . a) (c . a) (b . c) (a . b) (a . c) (b . c) (b . a) (c . a) (c . b) (a . b) (c . a) (b . c) (b . a) (c . a)) |
0 件のコメント:
コメントを投稿