diff options
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.in | 31 | ||||
| -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; |
