Possiamo riportare in una tabella il numero dei percorsi per raggiungere le varie posizioni dopo $n$ passi. Si tratta, al variare di $n$, di una lista di $2n+1$ tabelle $2n+1\times 2n+1$ da considerare come sezioni piane $z=n-k \quad \text{con}\;\; k=0, \dots, 2n$ dello spazio nel quale si svolge la passeggiata.
per $n=0$
1
per $n=1$
0
0
0
0
1
0
0
0
0
0
1
0
1
0
1
0
1
0
0
0
0
0
1
0
0
0
0
per $n=2$
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
0
0
0
2
0
2
0
0
0
2
0
0
0
0
0
0
0
0
0
1
0
0
0
2
0
2
0
1
0
6
0
1
0
2
0
2
0
0
0
1
0
0
0
0
0
0
0
0
0
2
0
0
0
2
0
2
0
0
0
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
per $n=3$
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
3
0
0
0
0
0
3
0
3
0
0
0
0
0
3
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
3
0
0
0
0
0
6
0
6
0
0
0
3
0
15
0
3
0
0
0
6
0
6
0
0
0
0
0
3
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
3
0
3
0
0
0
3
0
15
0
3
0
1
0
15
0
15
0
1
0
3
0
15
0
3
0
0
0
3
0
3
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
3
0
0
0
0
0
6
0
6
0
0
0
3
0
15
0
3
0
0
0
6
0
6
0
0
0
0
0
3
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
3
0
0
0
0
0
3
0
3
0
0
0
0
0
3
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Il numero di percorsi per raggiungere dopo $n$ passi una certa posizione $(x,y,z)$ forma uno schema numerico che ricorsivamente può descriversi in javascript nel modo seguente:
Si può costruire una matrice $2n+1 \times 2n+1 \times 2n+1$ relativa a $n$ passi anche iterativamente mediante il seguente codice che, a partire dalla matrice iniziale per $n=0$, trasforma la matrice relativa a un certo valore di $n$ in quella successiva così che M[m][r][c] è il numero di percorsi per raggiungere la posizione $(-n+r,n-c,n-m)$:
var M=[[[1]]];
var i,M0,M1;
for (var it=0; it<n; it++){
i=M.length;
M1=M.map(xy => trasf(xy));
for(var m=0; m<i; m++)
for(var r=1; r<i+1; r++)
for(var c=1; c<i+1; c++)
M1[m][r][c]+=((m>0)? M[m-1][r-1][c-1]:0) +((m<i-1)? M[m+1][r-1][c-1]:0);
M0=new Array(i+2).fill().map(() => Array(i+2).fill(0));
M0[(i+1)/2][(i+1)/2]=1;
M=[M0,...M1,M0];
}
function trasf(M) {
var l=M.length;
var R0=new Array(l+2).fill(0);
var M1=[...M.map(r =>[0,...r,0]),R0,R0];
var M2=[R0,...M.map(r =>[0,0,...r]),R0];
var M3=[R0,R0,...M.map(r =>[0,...r,0])];
var M4=[R0,...M.map(r =>[...r,0,0]),R0];
return M1.map(
(r,j)=>
r.map(
(e,i)=>
e+M2[j][i]+M3[j][i]+M4[j][i]
)
)
}
Ad esempio per n=
0
0
0
0
1
0
0
0
0
0
1
0
1
0
1
0
1
0
0
0
0
0
1
0
0
0
0
Ad esempio una visione a strati, da una della facce più esterna della doppia piramide a base quadrata di equazione $|X|+|Y|+|Z|=n$ agli strati via via più interni di equazioni $|X|+|Y|+|Z|=n-2k\ge 0$, per $n =$
1
3
3
3
6
3
1
3
3
1
15
15
15
Qui sotto possiamo vedere un'altra simulazione di un tale passeggiata casuale tridimensionale realizzata con con GeoGebra da Steve Phelps