Sudan function: Difference between revisions

Add BCPL
(Add APL)
(Add BCPL)
Line 292:
{{out}}
<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}}==
2,095

edits