Drunkard's Journey Home
W tym wyzwaniu masz napisać program, który symuluje pijaka potykającego się z baru do domu.
Wkład:
Dane wejściowe będzie macierzą przyległości (reprezentującą skierowany wykres), która reprezentuje ścieżki, którymi może podążać pijak. W każdej lokalizacji pijak wybiera losowo jedną ścieżkę (każda opcja ma w przybliżeniu jednakową szansę i jest niezależna od wcześniejszych wyborów), którą należy podążać.
Załóż, że pijak zawsze zaczyna się od paska (pierwszy rząd w macierzy przylegania).
Jeśli pijak wejdzie w ślepy zaułek, można założyć, że albo udał się do domu, albo został aresztowany za publiczne zatrucie, a program powinien powrócić.
Można założyć, że wykres zawsze będzie zawierał przynajmniej jeden ślepy zaułek.
Można również założyć, że pijak zawsze będzie mógł wyjść z paska (pierwszy rząd nie będzie wszystkich zer) i że jeśli pijak utknie w miejscu, rząd będzie reprezentowany przez wszystkie zera.
Wydajność:
Wynikiem będzie ścieżka, którą pijak podjął, próbując wrócić do domu. Wartości lokalizacji mogą być zerowe lub zindeksowane.
Przykłady:
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
ze wszystkimi zerami oprócz kolumny i
?
0
linki do 1,2,3,5
, ale ostatni wyjściowa idzie od 0
do4