Wyobraź sobie podpalacza spacerującego po mieście i zbierającego ofiary według ściśle określonego wzoru (lub, alternatywnie, wyobraź sobie pszczołę latającą po ogrodzie i zbierającą kwiaty do zapylania według określonego wzoru ). Powiedzmy, że miasto jest macierzą N × N , gdzie N jest liczbą całkowitą większą lub równą 2 . Rozpocznie podpalacz z lewym górnym rogu i kolejno ustawia dom M plamy przed nimi (gdzie M oznacza liczbę domu w którym się obecnie), przy zmianie kierunku to poruszający się po każdym pożarze, w kolejności Wschód ⟶ Południe ⟶ Zachód ⟶ Północ ⟶ Wschód ⟶ Południe ... i tak dalej. kołysankapodpalacza to wartość M, która sprawia, że opuszczają miasto (tzn. ostatni dom, który odwiedzają przed zatrzymaniem obrzydliwości). Jest to o wiele łatwiejsze do zrozumienia na przykładzie. Weźmy na przykład następującą macierz:
3 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1
- Zaczynamy w lewym górnym rogu, więc M = 3 (
X
oznacza obecną i poprzednią pozycję podpalacza):X 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1
- Zgodnie ze znaną kolejnością najpierw przechodzi na wschodnie M (3) miejsca i ląduje na 2, więc M odpowiednio się zmienia:
X 2 3 X 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1
- Potem idzie na południe o 2 miejsca, a M ma teraz 1 :
X 2 3 X 7 3 1 4 1 6 2 5 3 X 1 4 4 3 2 4 1 1 1 1 1
- Teraz przesuwa się o 1 miejsce na Zachód, a M staje się 3 :
X 2 3 X 7 3 1 4 1 6 2 5 XX 1 4 4 3 2 4 1 1 1 1 1
- Po przesunięciu 3 miejsc na północ opuszcza miasto! Dlatego 3 jest kołysanką tego podpalacza:
X X 2 3 X 7 3 1 4 1 6 2 5 XX 1 4 4 3 2 4 1 1 1 1 1
Biorąc pod uwagę macierz N × N (opcjonalnie możesz też wziąć N jako dane wejściowe), znajdź kołysankę podpalacza. Napisałem program, dzięki któremu możesz wygenerować więcej przypadków testowych i wizualizować ścieżkę podpalacza: Wypróbuj online!
- Można założyć, że podpalacz nie mają kołysankę (to jest, może faktycznie wyjść z matrycy).
- Dla uproszczenia macierz będzie zawierać tylko dodatnie liczby całkowite mniejsze lub równe 9 (cyfry). Rozwiązania, które obsługują każdą dodatnią liczbę całkowitą są mile widziane.
- Zwróć uwagę, że podpalacz może wylądować w miejscu, które już spalił, na wypadek gdyby poruszenie się było inne niż za pierwszym razem. W takim scenariuszu po prostu weź wartość tego elementu i przejdź ponownie jak zwykle.
- Możesz konkurować w dowolnym języku programowania i możesz przyjmować dane wejściowe i generować dane wyjściowe za pomocą dowolnej standardowej metody , zwracając uwagę, że te luki są domyślnie zabronione. To jest golf golfowy , więc wygrywa najkrótsze przesłanie (w bajtach) dla każdego języka .
Przypadki testowe
------------- 9 2 3 1 7 2 8 7 6 Kołysanka: 9 ------------- 2 1 2 1 3 1 1 2 1 2 2 1 1 1 1 3 Kołysanka: 2 ------------- 3 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1 Kołysanka: 3 ------------- 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 Kołysanka: 2 ------------- 3 2 1 2 1 1 1 2 3 2 3 2 1 1 2 1 1 1 3 1 2 3 1 1 1 1 1 1 4 5 2 3 1 1 1 1 2 1 2 1 2 2 1 2 2 3 2 1 2 Kołysanka: 3 -------------
Matryce w innym formacie:
[[9, 2, 3], [1, 7, 2], [8, 7, 6]] [[2, 1, 2, 1], [3, 1, 1, 2], [1, 2, 2, 1], [1, 1, 1, 3]] [[3, 2, 3, 2, 7], [3, 1, 4, 1, 6], [2, 5, 3, 1, 1], [4, 4, 3, 2, 4], [ 1, 1, 1, 1, 1]] [[1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2]] [[3, 2, 1, 2, 1, 1, 1], [2, 3, 2, 3, 2, 1, 1], [2, 1, 1, 1, 3, 1, 2], [ 3, 1, 1, 1, 1, 1, 1], [4, 5, 2, 3, 1, 1, 1], [1, 2, 1, 2, 1, 2, 2], [1, 2, 2, 3, 2, 1, 2]]
Piąty przypadek testowy jest bardzo interesujący do wizualizacji .