|
MAPLE
|
To get the array used to produce this sequence:
aaa := proc(m, n) option remember; local i, j, r, s, t1; if m=0 and n=0 then RETURN(1); fi; if n = 0 and m mod 2 = 1 then RETURN(1); fi; if m = 0 and n mod 2 = 0 then RETURN(1); fi; s := m+n; if s mod 2 = 1 then t1 := aaa(m+1, n-1); for j from 0 to n-1 do t1 := t1+aaa(m, j); od: else t1 := aaa(m-1, n+1); for j from 0 to m-1 do t1 := t1+aaa(j, n); od: fi; RETURN(t1); end; # the n-th antidiagonal in the up direction is aaa(n, 0), aaa(n-1, 1), aaa(n-2, 2), ..., aaa(0, n)
To get the array formed when the transformation is applied to an arbitrary input sequence b = [b[1], b[2], ..., b[N]]:
aab := proc(b, N, m, n) local i, j, r, s, t1; option remember; if m>N or n>N then error "asking for too many terms"; fi; if m = 0 and n mod 2 = 0 then RETURN(b[n+1]) end if; if n = 0 and m mod 2 = 1 then RETURN(b[m+1]) end if; s := m + n; if s mod 2 = 1 then t1 := aab(b, N, m + 1, n - 1); for j from 0 to n - 1 do t1 := t1 + aab(b, N, m, j) end do else t1 := aab(b, N, m - 1, n + 1); for j from 0 to m - 1 do t1 := t1 + aab(b, N, j, n) end do end if; RETURN(t1) end proc;
To get the output sequence when the transformation is applied to an arbitrary input sequence b = [b[1], b[2], ..., b[N]]:
ff := proc(b) local N, t1, i; N := min(35, nops(b)); t1 := []; for i from 0 to N-1 do if i mod 2 = 0 then t1 := [op(t1), aab(b, N, i, 0)]; else t1 := [op(t1), aab(b, N, 0, i)]; fi; od: t1; end;
|