2013年2月12日火曜日

ハノイの塔

短いプログラムを1つ。
これはハノイの塔です。
その解法を表示します。

再帰呼び出しのサンプルとしてよく使われます。
「ハノイの塔」がなんたるかについてはこちらで↓でどうぞ。
https://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%8E%E3%82%A4%E3%81%AE%E5%A1%94

/* ハノイの塔 for X68
// Oh!X 1988/5 p54
int n
str a="A",b="B",c="C"
while 1
    input "n(0=end)=" , n
    if n=0 then break
    hanoi( n , a ,c , b)
    print
endwhile
end
func hanoi(n;int,a;str,c;str,b;str)
     if n>0 then {
         hanoi(n-1,a,b,c)
         print a; "->" ; c; ",";
         hanoi(n-1,b,c,a)
     }
endfunc

0 件のコメント:

コメントを投稿