aboutsummaryrefslogtreecommitdiff
path: root/sample/unary_numbers
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--sample/unary_numbers/AckSZ-3_5.in (renamed from sample/AckSZ-3_5.in)0
-rw-r--r--sample/unary_numbers/FibSZ_9.in (renamed from sample/FibSZ_9.in)0
-rw-r--r--sample/unary_numbers/hanoiSZ.in31
-rw-r--r--sample/unary_numbers/nqueenSZ.in (renamed from sample/nqueenSZ.in)8
4 files changed, 35 insertions, 4 deletions
diff --git a/sample/AckSZ-3_5.in b/sample/unary_numbers/AckSZ-3_5.in
index 4f41966..4f41966 100644
--- a/sample/AckSZ-3_5.in
+++ b/sample/unary_numbers/AckSZ-3_5.in
diff --git a/sample/FibSZ_9.in b/sample/unary_numbers/FibSZ_9.in
index b5a65a8..b5a65a8 100644
--- a/sample/FibSZ_9.in
+++ b/sample/unary_numbers/FibSZ_9.in
diff --git a/sample/unary_numbers/hanoiSZ.in b/sample/unary_numbers/hanoiSZ.in
new file mode 100644
index 0000000..a533d2d
--- /dev/null
+++ b/sample/unary_numbers/hanoiSZ.in
@@ -0,0 +1,31 @@
+// Tower of Hanoi Puzzle
+
+// Rules
+hanoi(return, source, target, aux) >< Z =>
+ // Erase the source, target and aux
+ source ~ Eraser,
+ target ~ Eraser,
+ aux ~ Eraser,
+
+ // result
+ return~[];
+
+hanoi(return, source, target, aux) >< S(n) =>
+ // Duplicate the source, target and aux
+ source ~ Dup(src1, Dup(src2, src3)),
+ target ~ Dup(tgt1, Dup(tgt2, tgt3)),
+ aux ~ Dup(aux1, aux2),
+
+
+ // recursive applications
+ n ~ Dup(nn1, Dup(nn2, nn3)),
+ hanoi(ret1, src1, aux1, tgt1)~nn1,
+ hanoi(ret2, aux2, tgt2, src2)~nn2,
+
+ // result
+ return << Append(ret1, (nn3,src3,tgt3):ret2);
+
+
+// Net
+hanoi(result, A, C, B) ~ S(S(S(Z)));
+result; \ No newline at end of file
diff --git a/sample/nqueenSZ.in b/sample/unary_numbers/nqueenSZ.in
index c61515c..b83b89c 100644
--- a/sample/nqueenSZ.in
+++ b/sample/unary_numbers/nqueenSZ.in
@@ -88,8 +88,8 @@ len_list_(len, done, ct) >< x:xs =>
len(ret) >< [] =>
ret~Z;
-len(ret) >< x:xs =>
- len_list(ret, Eraser)~x:xs;
+len(ret) >< list =>
+ len_list(ret, Eraser)~list;
@@ -162,8 +162,8 @@ queen(ret, n) >< () =>
queen_(r, b, n) >< Z =>
r~[], Eraser~b, Eraser~n;
-queen_(r, b, n) >< S(m) =>
- mem_ret, done_m, done_b << member(S(m), b),
+queen_(r, b, n) >< m =>
+ mem_ret, done_m, done_b << member(m, b),
queen__chk_m_in_b(r, done_b, n, done_m)~mem_ret;