Zainspirowany tym .
tło
Zły rolnik postanowił nagrać pole pszenicy w dół, aby podjechać ceny. Aby zapewnić całkowite zniszczenie, namoczył twoje pole w benzynie. Co więcej, zdarzyło ci się chodzić po polu, gdy było oświetlone ogniem, i musisz szybko wyjść, aby przeżyć.
Wyzwanie
Biorąc pod uwagę pole zawierające pszenicę, ogień i swoją lokalizację, określ, czy możesz zdążyć na czas.
Pole składa się z pszenicy (tutaj reprezentowanej przez .
) i ognia ( F
). Tutaj Twoja lokalizacja jest oznaczona symbolem O
. Na przykład:
...F...F
F.......
........
.F......
....O...
...F....
........
.F....F.
Co sekundę poruszasz się do sąsiedniej komórki (ale nie po przekątnej), a każdy ogień rozprzestrzenia się na każdą sąsiednią komórkę. Jeśli nie możesz przejść do komórki, która nie będzie w ogniu, umrzesz. Jeśli wydostaniesz się z pola, przeżyjesz. Zobaczmy, co dzieje się w tym przykładzie:
...F...F
F.......
........
.F......
....O...
...F....
........
.F....F.
..FFF.FF
FF.F...F
FF......
FFF.....
.F.F.O..
..FFF...
.F.F..F.
FFF..FFF
FFFFFFFF
FFFFF.FF
FFFF...F
FFFF....
FF.FF.O.
.FFFFFF.
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFF.FF
FFFFF.FF
FFFFFFFO
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFFO <-- you made it out and survived, barely
FFFFFFFF
FFFFFFFF
FFFFFFFF
Zasady
- Twoje dane wejściowe to pole jako siatka. Możesz wybrać dowolny format wejściowy, w tym ciąg znaków z separatorami linii lub tablicą 2D.
- Być może nie brać jako wejście lokalizacje dla ognia i / lub siebie.
- Możesz użyć dowolnych 3 różnych wartości jako pszenicy, ognia i swojej pozycji, w tym nie łańcuchów do wprowadzania danych z tablicy.
- Pola mają zawsze rozmiar co najmniej 1x1, są prostokątne i nie zawierają niepoprawnych znaków.
- Każde pole będzie zawierało dokładnie jedną wartość reprezentującą twoją lokalizację, a każda inna pozycja może, ale nie musi, być ogniem.
- Twój wynik jest jedną z dwóch odrębnych wartości dla „przeżywasz” lub „giniesz”, jak zwykle w przypadku problemów decyzyjnych .
- Obowiązują standardowe zasady gry w golfa .
Przypadki testowe
Przetrwał
O
....
.O..
....
FFFFF
.....
..O..
.....
FFFF
FFFO
FFFF
.F....
......
......
.F....
..O...
.FF...
.F....
..FF..
...F...F
F.......
........
.F......
....O...
...F....
........
.F....F.
Nie przeżył
FFF
FOF
FFF
F.F
.O.
F.F
....F
.....
..O..
.....
F....
.F....F.
........
........
F..O....
........
.....F..
...F...F
F......F
........
.F......
....O...
...F....
........
.F....F.
F..F
.O..
FF..
źródło
Odpowiedzi:
Ślimaki, 15 bajtów
Wypróbuj online!
1
oznacza przetrwanie, a0
śmierć.Ponieważ nie można uciec przed ogniem, nigdy nie warto go ominąć. Najlepsza trasa to zawsze linia prosta. Istnieją więc tylko cztery możliwe opcje drogi ucieczki. Aby ustalić, czy kierunek jest bezpieczny, sprawdzamy, czy
F
w „stożku ognia” wskazuje ten kierunek.źródło
Python 2 ,
283218209208 bajtówWypróbuj online!
Pobiera dane wejściowe jako ciąg oddzielony znakiem nowej linii i zwraca wartość
True/False
dlaDead/Alive
Działa poprzez sprawdzanie każdego kierunku (udlr) pod kątem
F
gniewu, patrząc na zewnątrz:Przykład:
Wkład:
Kontrole przeciwpożarowe:
Jeśli wszystkie kierunki zawierają ogień, umrzesz, w przeciwnym razie nastąpi ucieczka.
Edycja: Wróć do pobierania ciągu jako danych wejściowych, a teraz sprawdza tylko wejście w górę / w prawo, ale także sprawdza wejście do tyłu (zwalnianie / w lewo)
Zaoszczędził dużo bajtów dzięki Panu Xcoder i Felipe Nardi Batista
źródło
JavaScript, 174 bajty
Format wejściowy:
F
, 1 dla.
, 0 dlaO
Wydajność:
Spróbuj:
Pokaż fragment kodu
Rozważ automat komórkowy. Istnieją 3 stany dla komórki
O
(osiągalne przez ludzi),F
(catch fired),.
(nic się nie wydarzyło). Reguła tworzenia następnej generacji to:Kiedy komórka na krawędzi ma
O
stan, ludzie przeżyją. Jeśli nie wydarzy się to w wystarczającej ilości, ludzie umrą.źródło
Oktawa, 71 bajtów
Wypróbuj online!
lub
Sprawdź wszystkie przypadki testowe!
Format wejściowy:
1
za.
,2
zaO
i3
zaF
Wydajność:
true
ifalse
Wyjaśnienie:
Wyjaśnienie:
źródło
Siatkówka , 243 bajty
Wypróbuj online! Wymaga, aby w tle były spacje zamiast
.
s (lub można użyć innej bezpiecznej dla wyrażeń regularnych postaci). Wyjaśnienie:Jeśli jest
O
jakaś krawędź, usuń wszystko inne (przypadek przetrwania)Umieść a
#
w dowolnym miejscu nad istniejącymO
.I
#
w dowolnym miejscu poniżej istniejącegoO
.Zmień
#
s naO
s, a także dowolne miejsce po lewej lub prawej stronie istniejącegoO
.Umieść
#
s nad istniejącymiF
. Mogą one zastępować zarówno znakiO
s, jak i spacje.Umieść
#
s pod wszelkimi istniejącymiF
, nadpisującO
również spacje.Zmień
#
s naF
s, a także dowolnąO
spację po lewej lub prawej stronie istniejącejF
. Powtarzaj, ażF
s pochłoną wszystko.Wróć
1
po przetrwanie,0
jeśli nie.źródło