|
MAPLE
|
b:= proc(x, y, d) option remember;
`if`(x<0 or y<x, 0, `if`(x=0 and y=0, 1,
b(x, y-2, true) +b(x-`if`(d, 1, 2), y, false)))
end:
a:= n-> b(2*n, 2*n, true):
|
|
MATHEMATICA
|
NN=26; Array[a, {NN*2+1, NN*2+1}]; seq={};
fodd[t_, k_]:=a[t, k]=If[k==1, 1, If[k==Floor[t/2], a[t, k-1]+a[t-1, k-1]+a[t-3, k-1], a[t-2, k]+a[t, k-1]+a[t-1, k-1]-a[t-2, k-1]]];
feven[t_, k_]:=a[t, k]=If[k==1, 0, If[k==Floor[t/2], a[t, k-1]+a[t-1, k-1], a[t-2, k]+a[t, k-1]+a[t-1, k-1]-a[t-2, k-1]]];
For[t=2, t<=NN*2, t++, For[k=1, k<=Floor[t/2], k++, If[OddQ[t], fodd[t, k], feven[t, k]; If[k==Floor[t/2], seq=Append[seq, a[t, k]]]]]]; seq
(* Second program: *)
b[x_, y_, d_] := b[x, y, d] =
If[x < 0 || y < x, 0, If[x == 0 && y == 0, 1,
b[x, y - 2, True] + b[x - If[d, 1, 2], y, False]]];
a[n_] := b[2*n, 2*n, True];
|