Sudan function: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (Add APL) |
Not a robot (talk | contribs) (Add BCPL) |
||
Line 292: | Line 292: | ||
{{out}} |
{{out}} |
||
<pre>Same as FreeBASIC entry.</pre> |
<pre>Same as FreeBASIC entry.</pre> |
||
=={{header|BCPL}}== |
|||
<syntaxhighlight lang="bcpl">get "libhdr" |
|||
let sudan(n, x, y) = |
|||
n = 0 -> x + y, |
|||
y = 0 -> x, |
|||
sudan(n-1, sudan(n, x, y-1), sudan(n, x, y-1)+y) |
|||
let showtable(f, n, x, y) be |
|||
$( writef("sudan(%N,x,y)*N", n) |
|||
writes(" ") |
|||
for i=0 to x do writed(i, 5) |
|||
for i=0 to y |
|||
$( writef("*N%I4:", i) |
|||
for j=0 to x do writed(f(n, j, i), 5) |
|||
$) |
|||
writes("*N*N") |
|||
$) |
|||
let show(f, n, x, y) be |
|||
writef("sudan(%I4,%I4,%I4) = %I6*N", n, x, y, f(n, x, y)) |
|||
let start() be |
|||
$( showtable(sudan, 0, 6, 5) |
|||
showtable(sudan, 1, 6, 5) |
|||
wrch('*N') |
|||
show(sudan, 1, 3, 3) |
|||
show(sudan, 2, 1, 1) |
|||
show(sudan, 2, 2, 1) |
|||
show(sudan, 3, 1, 1) |
|||
$)</syntaxhighlight> |
|||
{{out}} |
|||
<pre>sudan(0,x,y) |
|||
0 1 2 3 4 5 6 |
|||
0: 0 1 2 3 4 5 6 |
|||
1: 1 2 3 4 5 6 7 |
|||
2: 2 3 4 5 6 7 8 |
|||
3: 3 4 5 6 7 8 9 |
|||
4: 4 5 6 7 8 9 10 |
|||
5: 5 6 7 8 9 10 11 |
|||
sudan(1,x,y) |
|||
0 1 2 3 4 5 6 |
|||
0: 0 1 2 3 4 5 6 |
|||
1: 1 3 5 7 9 11 13 |
|||
2: 4 8 12 16 20 24 28 |
|||
3: 11 19 27 35 43 51 59 |
|||
4: 26 42 58 74 90 106 122 |
|||
5: 57 89 121 153 185 217 249 |
|||
sudan( 1, 3, 3) = 35 |
|||
sudan( 2, 1, 1) = 8 |
|||
sudan( 2, 2, 1) = 27 |
|||
sudan( 3, 1, 1) = 10228</pre> |
|||
=={{header|C}}== |
=={{header|C}}== |