%I #19 Nov 04 2021 05:58:14
%S 1,1,25,2062017739,255053951339165796439851848897794625
%N Number of n-dimensional lattice walks from {n}^n to {0}^n using steps that decrease the Euclidean distance to the origin and that change each coordinate by at most 1.
%C Lattice points may have negative coordinates, and different walks may differ in length. All walks are self-avoiding.
%H Alois P. Heinz, <a href="/A347810/b347810.txt">Table of n, a(n) for n = 0..6</a>
%H Alois P. Heinz, <a href="/A347811/a347811.gif">Animation of a(2) = 25 walks</a>
%H Wikipedia, <a href="https://en.wikipedia.org/wiki/Lattice_path#Counting_lattice_paths">Counting lattice paths</a>
%H Wikipedia, <a href="https://en.wikipedia.org/wiki/Self-avoiding_walk">Self-avoiding walk</a>
%p s:= proc(n) option remember;
%p `if`(n=0, [[]], map(x-> seq([x[], i], i=-1..1), s(n-1)))
%p end:
%p b:= proc(l) option remember; (n-> `if`(l=[0$n], 1, add((h-> `if`(
%p add(i^2, i=h)<add(i^2, i=l), b(sort(h)), 0))(l+x), x=s(n))))(nops(l))
%p end:
%p a:= n-> b([n$n]):
%p seq(a(n), n=0..5);
%t s[n_] := s[n] = If[n == 0, {{}}, Sequence @@ Table[Append[#, i], {i, -1, 1}]& /@ s[n-1]];
%t b[l_List] := b[l] = With[{n = Length[l]}, If[l == Table[0, {n}], 1, Sum[With[{h = l+x}, If[h.h < l.l, b[Sort[h]], 0]], {x, s[n]}]]];
%t a[n_] := b[Table[n, {n}]];
%t Table[a[n], {n, 0, 5}] (* _Jean-François Alcover_, Nov 04 2021, after _Alois P. Heinz_ *)
%Y Main diagonal of A347811.
%Y Cf. A034841.
%K nonn,walk
%O 0,3
%A _Alois P. Heinz_, Sep 14 2021
|