Date le dimensioni della scacchiera e la posizione iniziale del cavaliere, calcola la probabilità che dopo le k
mosse il cavaliere si trovi all'interno della scacchiera.
Nota:
Il cavaliere compie tutte e 8 le mosse possibili con uguale probabilità.
Una volta che il cavaliere è fuori dalla scacchiera non può tornare dentro.
Ingresso
Gli input sono separati da virgola nel modulo:
l,k,x,y
dove l
è la lunghezza e la larghezza della scacchiera, k
è il numero di mosse che il cavaliere farà, x
è la posizione x della posizione iniziale del cavaliere ed y
è la posizione y della posizione iniziale del cavaliere. Nota che 0,0
è l'angolo in basso a sinistra della tavola ed l-1,l-1
è l'angolo in alto a destra della tavola.
Algoritmo:
Inizia con le coordinate iniziali del cavaliere. Fai tutte le mosse possibili per questa posizione e moltiplica queste mosse con la loro probabilità, per ogni mossa chiama ricorsivamente la funzione e continua questo processo fino a quando non viene soddisfatta la condizione finale. La condizione finale è se il cavaliere è fuori dalla scacchiera, in questo caso il ritorno 0, o il numero desiderato di mosse è esaurito, in questo caso il ritorno 1.
Come possiamo vedere, lo stato attuale della ricorsione dipende solo dalle coordinate correnti e dal numero di passi effettuati finora. Pertanto possiamo memorizzare queste informazioni in forma tabellare.
Credito
Questa sfida è originariamente tratta da un post sul blog di crazyforcode.com pubblicato sotto la licenza CC BY-NC-ND 2.5 IN . È stato leggermente modificato per renderlo un po 'più impegnativo.