Drunkards Heimreise
In dieser Herausforderung musst du ein Programm schreiben, das einen Säufer simuliert, der von der Bar nach Hause stolpert.
Eingang:
Die Eingabe ist eine Adjazenzmatrix (die einen gerichteten Graphen darstellt), die Pfade darstellt, die der Betrunkene nehmen kann. An jedem Ort wählt der Betrunkene zufällig einen Weg (jede Option hat ungefähr die gleiche Chance und ist unabhängig von vorherigen Entscheidungen).
Angenommen, der Säufer beginnt immer an der Bar (erste Reihe in der Adjazenzmatrix).
Wenn der Betrunkene in eine Sackgasse gerät, kann davon ausgegangen werden, dass er entweder nach Hause gegangen ist oder wegen öffentlicher Vergiftung festgenommen wurde und das Programm seinen Weg zurückkehren sollte.
Es ist davon auszugehen, dass der Graph immer mindestens eine Sackgasse enthält.
Es kann auch davon ausgegangen werden, dass der Säufer den Balken immer verlassen kann (die erste Reihe besteht nicht aus Nullen) und dass, wenn der Säufer an einem Ort festsitzt, die Reihe durch Nullen dargestellt wird.
Ausgabe:
Das Ergebnis wird der Weg sein, den der Betrunkene bei seinem Versuch eingeschlagen hat, nach Hause zu kommen. Die Werte für die Speicherorte können entweder null oder eins sein.
Beispiele:
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
mit allen Nullen außer in der Spalte geben i
?
0
1,2,3,5
0
4