「On Lisp」の「Prolog」でハノイの塔を解く

「On Lisp」の「Prolog」でハノイの塔を解くには次のようにする。


(<- (hanoi 1 ?from ?to ?via) (move 1 ?from ?to) (cut))

(<- (hanoi ?n ?from ?to ?via) (is ?n1 (- ?n 1))
	(hanoi ?n1 ?from ?via ?to)
	(move ?n ?from ?to)
	(hanoi ?n1 ?via ?to ?from) )

(<- (move ?n ?from ?to) (lisp (progn (princ 'move) (princ " ")
				     (prin1 ?n) (princ " ")
				     (princ 'from) (princ " ")
				     (prin1 ?from) (princ " ")
				     (princ 'to) (princ " ")
				     (prin1 ?to) (terpri) t) ) )

(with-inference (hanoi 6 'a 'c 'b))


トップページへ