Wprowadzenie
Jonny chce grać w Frogger. Jednak nie jest bardzo dobry. W rzeczywistości będzie próbował ruszyć do przodu i dopiero po przesunięciu platform.
Dowiedz się, czy żaba Jonny'ego dotrze do końca ścieżki, czy też umrze na swojej drodze.
Wyzwanie
Program będzie odbierał jako dane wejściowe siatkę Frogger złożoną z 0
s i 1
s, w następującym formacie:
- Siatka będzie miała losową szerokość i długość oraz co najmniej 3x3
1
reprezentuje platformy0
reprezentuje wodęF
przedstawia pozycję początkową żaby- Każda pierwsza i ostatnia linia siatki będzie się składać tylko z
1
s i nie będzie się ruszać, a żabaF
zostanie losowo umieszczona w ostatniej linii - Każda warstwa pośrednia zawsze będzie się poruszać i będzie miała znak
<
lub>
na końcu każdej linii wskazujący, czy porusza się w lewo, czy w prawo
Zastępowanie tych symboli własnymi symbolami jest dozwolone, o ile wszystkie są odrębne, a Ty podajesz zamienniki w swojej odpowiedzi.
Dane wejściowe mogą być w dowolnym kompatybilnym formacie (ciąg znaków z podziałem wiersza, tablica ciągów, tablica znaków, ...).
Zasady Wyzwania
- W każdej turze wszystkie platformy poruszają się o jedno pole, zgodnie z kierunkiem wskazanym przez znak
<
lub>
- Platformy pojawiają się ponownie po drugiej stronie siatki, jeśli zostaną wypchnięte z „ekranu”
- Jeśli żaba znajduje się na ruchomej platformie, będzie się poruszać wraz z nią
- Następnie żaba przeskoczy o jeden kwadrat w kierunku górnego rzędu. Żaba będzie się poruszać co turę.
- Żaba umiera, jeśli wskoczy do wody (
0
) lub dotknie boku siatki wraz z ruchomą platformą
Twój program musi wyprowadzić prawdziwą wartość, jeśli żaba przeżyje, aw przeciwnym razie wartość fałsz.
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach. Obowiązują standardowe luki.
Przykłady
Przykład 1
Wejście
11111
00111>
00101<
1F111
Wynik
1
Wykonanie
Turn 1:
11111
10011
01010
1F111
11111
10011
0F010
11111
Turn 2:
11111
11001
F0100
11111
11111
F1001
10100
11111
Turn 3:
11111
1F100
01001
11111
1F111
11100
01001
11111
Przykład 2
Wejście
11111
00100<
00100<
1F111
Wynik
0
Wykonanie
Turn 1:
11111
01000
01000
1F111
11111
01000
0F000
11111
Turn 2:
11111
10000
F0000
11111
11111
F0000
10000
11111
Turn 3:
11111
00001
00001
11111
<
lub >
koniec.
0
przed nią, czy będzie czekać na następny 1
? Jeśli może poczekać, czy pójdzie naprzód na każdym 1
, czy może będzie mądrze czekać? Tj. Z przypadkiem testowym 11111 00001< 00011< 11F11
, czy będzie falsey, ponieważ wskakuje do wody ( pastebin kroków ); czy będzie falsey, ponieważ przesuwa się poza ramkę ( pastebin kroków ); czy będzie to prawdą, ponieważ elegancko czeka na drugą platformę, zanim skoczy do przodu ( pastebin kroków )?
0
.
<
czy też>
możemy przyjąć tablice prostokątne jako dane wejściowe? Nawiasem mówiąc, miłe wyzwanie!