- 486 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 00:10:16 ]
- | ?- search(hanoi,S,G,P,A).
:- [search]. /* 初期状態と目標状態 これは、2枚のハノイ */ initial_state(hanoi, [[1,2,3],[],[]]). goal_state(hanoi, [[],[],[1,2,3]]). %------------------ ハノイの塔 operator(hanoi, left_to_right(Disk), [[Disk|RestA], B, C], [RestA, B, [Disk|C]]) :- con2(Disk, C). operator(hanoi, left_to_center(Disk), [[Disk|RestA], B, C], [RestA, [Disk|B], C]) :- con2(Disk, B). % 移動先で制約2を満たしていることをチェック operator(hanoi,center_to_left(Disk), [A, [Disk|RestB], C], [[Disk|A], RestB, C]) :- con2(Disk, A). operator(hanoi, center_to_right(Disk), [A, [Disk|RestB], C], [A, RestB, [Disk|C]]) :- con2(Disk, C). %-- 制約2 % 一番上にあるディスクよりも、小さいことを検査 /* ?- con2(2, [1,3]). ?- con2(1, [2,3]). */ コレを完成させるにはどうすればいいのでしょうか?
|

|