Wprowadzenie
Masz nieszczęście utknąć w uciekającym samochodzie na torze przeszkód. Wszystkie funkcje samochodu nie reagują, z wyjątkiem uszkodzonego układu kierowniczego. Może jechać prosto lub skręcić w prawo. Czy samochód można prowadzić bezpiecznie?
Mechanika
Twój samochód zaczyna się w lewym górnym rogu mapy 8x8 i próbuje się bezpiecznie znaleźć w prawym dolnym rogu. Samochód ma orientację (początkowo w prawo), mierzoną co 90 stopni. Samochód może wykonać jedną z dwóch czynności:
- Jedź o jeden kwadrat do przodu lub
- Obróć o 90 stopni w prawo, a następnie jedź o jeden kwadrat do przodu
Zauważ, że samochód nie jest w stanie skręcić wystarczająco ostro, aby wykonać obrót o 180 stopni na jednym kwadracie.
Niektóre kwadraty są przeszkodami. Jeśli samochód wjedzie na plac przeszkody, ulega awarii. Zakłada się, że wszystko poza polem 8x8 jest przeszkodą, więc zjechanie z niego jest równoznaczne z awarią.
Kwadrat po prawej stronie jest kwadratem bezpiecznym, który pozwala samochodowi uciec z toru przeszkód. Zakłada się, że kwadrat początkowy i bezpieczny kwadrat nie są przeszkodami.
Zadanie
Musisz napisać program lub funkcję, która przyjmuje jako dane wejściowe tablicę 8x8 (matryca, lista list itp.), Reprezentującą tor przeszkód. Program zwraca lub wypisuje wartość logiczną lub coś podobnego prawdziwego. Jeśli możliwe jest, aby samochód dotarł do bezpiecznego kwadratu bez awarii (tzn. Jeśli mapa jest do rozwiązania), wynik jest True
, w przeciwnym razie, jest False
.
Punktacja
Standardowe zasady gry w golfa - zwycięzcą jest kod z najmniejszą liczbą bajtów.
Bonusy:
Jeśli w przypadku mapy możliwej do rozwiązania kod wyprowadza prawidłową serię danych wejściowych kierowcy, które prowadzą samochód do bezpiecznego kwadratu, odejmij 10 punktów procentowych od wyniku. Przykładowym formatem wyjściowym może być
SRSSR
(wskazujący Prosto, Prawo, Prosto, Prosto, Prawo). To wyjście zastąpiłoby standardoweTrue
wyjście.Jeśli w przypadku nierozwiązywalnej mapy wynik kodu rozróżnia sytuacje, w których awaria jest nieunikniona, i sytuacje, w których można pokonywać tor przeszkód na zawsze, odejmij 10 punktów procentowych od swojego wyniku. Przykładem może być
Crash
sytuacja, gdy zderzenie jest nieuniknione lubStuck
samochód utknął na drodze z przeszkodami na zawsze. Te dane wyjściowe zastąpiłyby standardoweFalse
dane wyjściowe dla nierozwiązywalnej mapy.
Przykład
Jeśli program otrzyma tablicę 8x8, taką jak ta:
[[0, 0, 0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0],
[1, 1, 0, 0, 0, 0, 0, 0],
[0, 1, 0, 1, 0, 0, 0, 0],
[0, 0, 1, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 1, 0],
[0, 0, 0, 0, 0, 0, 1, 0],
[0, 1, 1, 0, 0, 0, 1, 0]]
Będzie to interpretowane jako mapa taka z czarnymi kwadratami wskazującymi przeszkody:
Możliwym rozwiązaniem może być:
Ponieważ istnieje rozwiązanie, program powinien zwrócić / wydrukować True
tę mapę. Pokazana sekwencja ruchów to SSSSRSRRRSRSSRRRSSRSSS
.
Crash
iStuck
. Są tutaj ze względu na ich długość. Wiersz 2 wypełniony, wszystko inne puste ->Crash
. Wiersz 7 wypełniony, wszystko inne puste ->Stuck