|
「ハノイの塔」は、使用するプログラム言語で再帰が簡単に
表現できるかどうかで、難しさに大きな差がでますね。
BASICやFortranなどでは、難しいですし、C/C++では、
再帰函数の定義が難しかったりします。
再帰を簡単に表現できる言語としては論理型プログラムが
得意な Plolog という言語があります。
これだと「ハノイの塔」は
hanoi(N) :- move(N, left, center, right).
move(0,_,_, _) :-!
move(N,A, B, C) :-
M is N -1
move(M, A, C, B),
inform(A, B),
move(M, C, B, A).
inform(X,Y) :- write([move, a, disc, from the, X, pole, to, the, Y, pole]), n1.
と簡単です。
これを実行すると一段階ごとの結果が表示されます
http://www.cam.hi-ho.ne.jp/munehiro/radio/
| |