From 49960d8950d001a372a0abde670a66ee60026957 Mon Sep 17 00:00:00 2001 From: Shinya Sato Date: Tue, 5 Mar 2024 18:19:27 +0900 Subject: v0.12.0 --- sample/puzzle/hanoi.in | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 sample/puzzle/hanoi.in (limited to 'sample/puzzle/hanoi.in') diff --git a/sample/puzzle/hanoi.in b/sample/puzzle/hanoi.in new file mode 100644 index 0000000..5be47c6 --- /dev/null +++ b/sample/puzzle/hanoi.in @@ -0,0 +1,30 @@ +// Tower of Hanoi Puzzle + +// Rules +hanoi(return, source, target, aux) >< (int n) +| n==0 => + // Erase the source, target and aux + source ~ Eraser, + target ~ Eraser, + aux ~ Eraser, + + // result + return~[] + +| _ => + // Duplicate the source, target and aux + source ~ Dup(src1, Dup(src2, src3)), + target ~ Dup(tgt1, Dup(tgt2, tgt3)), + aux ~ Dup(aux1, aux2), + + // recursive applications + hanoi(ret1, src1, aux1, tgt1)~(n-1), + hanoi(ret2, aux2, tgt2, src2)~(n-1), + + // result + return << Append(ret1, (n,src3,tgt3):ret2); + + +// Net +hanoi(result, A, C, B) ~ 3; +result; // should be [(1,A,C),(2,A,B),(1,C,B),(3,A,C),(1,B,A),(2,B,C),(1,A,C)] -- cgit v1.2.3