فهرست منبع

Import hanoi towers example

From Potassco guide.
DricomDragon 5 سال پیش
والد
کامیت
33ea85e370
2فایلهای تغییر یافته به همراه24 افزوده شده و 0 حذف شده
  1. 19 0
      potassco/hanoi/toh_enc.lp
  2. 5 0
      potassco/hanoi/toh_ins.lp

+ 19 - 0
potassco/hanoi/toh_enc.lp

@@ -0,0 +1,19 @@
+% Generate
+{ move(D,P,T) : disk(D), peg(P) } = 1 :- moves(M),  T = 1..M.
+
+% Define
+move(D,T)   :- move(D,_,T).
+on(D,P,0)   :- init_on(D,P).
+on(D,P,T)   :- move(D,P,T).
+on(D,P,T+1) :- on(D,P,T), not move(D,T+1), not moves(T).
+blocked(D-1,P,T+1) :- on(D,P,T), not moves(T).
+blocked(D-1,P,T)   :- blocked(D,P,T), disk(D).
+
+% Test
+:- move(D,P,T), blocked(D-1,P,T).
+:- move(D,T), on(D,P,T-1), blocked(D,P,T).
+:- goal_on(D,P), not on(D,P,M), moves(M).
+:- { on(D,P,T) } != 1, disk(D), moves(M), T = 1..M.
+
+% Display
+#show move/3.

+ 5 - 0
potassco/hanoi/toh_ins.lp

@@ -0,0 +1,5 @@
+peg(a; b; c).
+disk(1..4).
+init_on(1..4, a).
+goal_on(1..4, c).
+moves(15).