Drunkard's Journey Home
In questa sfida dovrai scrivere un programma che simula un ubriacone che inciampa mentre torna a casa dal bar.
Ingresso:
L'input sarà una matrice di adiacenza (che rappresenta un grafico diretto) che rappresenta i percorsi che l'ubriacone può prendere. In ogni posizione, l'ubriacone sceglierà un percorso a caso (ogni opzione ha una probabilità approssimativamente uguale ed è indipendente dalle scelte precedenti) da seguire.
Supponiamo che l'ubriacone inizi sempre alla barra (prima riga nella matrice di adiacenza).
Se l'ubriacone entra in un vicolo cieco, si può presumere che sia tornato a casa o che sia stato arrestato per intossicazione pubblica e il programma dovrebbe tornare sul suo cammino.
Si può presumere che il grafico conterrà sempre almeno un vicolo cieco.
Si può anche presumere che l'ubriacone sarà sempre in grado di uscire dalla barra (la prima fila non sarà tutti zeri) e che se l'ubriacone fosse bloccato in una posizione, che la fila sarebbe rappresentata da tutti gli zeri.
Produzione:
L'output sarà il percorso intrapreso dall'ubriacone nel suo tentativo di tornare a casa. I valori per le posizioni possono essere zero o uno indicizzato.
Esempi:
Input
[1,0,1,1]
[0,0,0,0]
[1,0,0,0]
[1,1,1,1]
Possible Outputs
[0,2,0,3,2,0,0,3,1]
[0,3,0,3,1]
Input
[0,1,1,1,0,1]
[1,0,1,0,1,1]
[0,0,0,0,0,0]
[0,0,0,0,0,1]
[1,0,0,0,0,0]
[0,0,0,0,0,0]
Possible outputs
[0,1,5]
[0,5]
[0,1,4,0,2]
[0,3,5]
[0,3,0,1,4,0,5]
Deterministic path:
Input
[0,0,1,0]
[0,0,0,1]
[0,1,0,0]
[0,0,0,0]
Output
[0,2,1,3]
[ '1011', '0000', '1000', '1111' ]
?
i
con tutti gli zeri tranne nella colonna i
?
0
collega a 1,2,3,5
, ma l'ultimo output è passato da 0
a4