This commit is contained in:
Ingy döt Net 2013-10-27 22:24:23 +00:00
parent 6f050a029e
commit 776bba907c
3887 changed files with 59894 additions and 7280 deletions

View file

@ -1,33 +1,30 @@
#define std'dictionary'*.
#define std'patterns'*.
#subject m, n.
#define system.
// --- Ackermann function ---
#symbol Ackermann &m:anM &n:anN =
#symbol ackermann = &&:m:n
[
#if anM
ifequal:0 [ ^ anN + 1. ]
| greater:0 ?
[
#if anN
ifequal:0 [ ^ Ackermann &&m:(anM - 1) &n:1. ]
| greater:0 ? [ ^ Ackermann &&m:(anM - 1) &n:(Ackermann &&m:anM &n:(anN - 1)). ].
].
control fail.
m =>
0 ? [ n + 1 ]
> 0 ? [
n => 0 ? [ $self:(m - 1):1 ]
> 0 ? [ $self:(m - 1):($self:m:(n-1)) ]
]
].
#symbol Program =
#symbol program =
[
loop &&from:0 &to:3 run: anM =
#var n := ackermann:3:5.
control from:0 &to:3 &do: &&:i
[
loop &&from:0 &to:5 run: anN =
control from:0 &to:5 &do: &&:j
[
'program'output << "A(" << anM << "," << anN << ")=" << (Ackermann &&m:anM &n:anN) << "%n".
console << "A(" << i << "," << j << ")=" << (ackermann:i:j).
console writeLine.
].
].
'program'Input get.
console readChar.
].