Helikopter startujący w lewym górnym rogu schodzi (w przestrzeni 2D, do celów tego pytania) w kierunku ziemi. Ma tryb autopilota i tryb ręczny.
Tryb autopilota działa w następujący sposób:
- Jeśli przestrzeń bezpośrednio poniżej jest wolna, zejdź do niej.
- W przeciwnym razie przesuń krok w lewo lub w prawo, całkowicie losowo. (Może przesuwać wiele kroków w ten sposób.)
Powtarzają te dwa kroki, dopóki nie uderzą o ziemię. Tryb ręczny jest bardziej inteligentny i znajdzie optymalną ścieżkę na ziemię, nawet jeśli wymaga to przesunięcia w górę lub zręcznego manewru.
Twoim zadaniem jest ustalenie, czy
- Autopilot przejdzie w danym scenariuszu,
- Autopilot może zawieść w danym scenariuszu,
- Autopilot zawiedzie, ale tryb ręczny przejdzie, lub
- Oba tryby zawiodą (nie ma prawidłowej ścieżki do ziemi).
Wejście
- Podany scenariusz jako niepusta tablica 1d lub 2d, wykorzystująca dwa różne znaki do przedstawienia wolnych i zablokowanych spacji. Interpunkcja opcjonalna.
- Opcjonalnie: wymiary tablicy
Wynik
Jeden z czterech predefiniowanych znaków wskazujących, który przypadek wystąpił.
Przykładowe dane
Przy użyciu 0 (pusty) i 1 (zablokowany) na wejściu, 1 2 3 4 na wyjściu (jak wyżej)
0 0 0 0
0 1 0 0
0 0 0 1
1 1 0 0
Wynik: 1
0 0 1 0
1 0 0 1
0 0 0 0
0 1 1 0
0 0 0 1
Wyjście: 2
(helikopter napotka 1 w czwartym rzędzie i możliwe jest, że złapie się pułapki na końcu rzędu 5, jeśli jest w trybie autopilota)
0 0 0 1 0
0 1 1 0 0
0 1 0 0 0
0 0 0 1 0
1 1 1 1 0
Wyjście: 3
(Wymaga przesunięcia w górę, więc autopilot zawiedzie)
1 0 0
0 0 0
Wynik: 4
0 0 0 0 1
1 1 1 0 0
1 0 0 1 0
0 1 0 0 0
0 0 1 1 1
Wynik: 4
źródło
Odpowiedzi:
Ruby, 259
Świetnie się z tym bawiłem. Dziękuję Ci! Wyzwania gridowe to zazwyczaj świetna zabawa z interesującymi wyzwaniami. Zakłada się, że „znaki” w pytaniu mogą być liczbami całkowitymi.
Myślę, że głównymi punktami poprawy są tutaj:
r
Niegolfowany (nieco nieaktualny, ale naprawdę blisko):
źródło