Zainspirowany przez We hopping tower i związany z 2D Maze Minus 1D
Wprowadzenie
Twoim zadaniem jest znalezienie najkrótszej ścieżki, aby wydostać się z labiryntu tablicowego zgodnie z określonymi regułami.
Wyzwanie
Macierz 1D a z n elementów można uznać za labirynt złożony z n punktów, przy czym punkt o indeksie k jest połączony z punktami za pomocą k + a [ k ] i k - a [ k ] w sposób jednokierunkowy. Innymi słowy, można przeskoczyć do przodu lub wstecz dokładnie [ k ] kroki od punktu o indeksie k . Punkty z indeksem poza granicami tablicy są traktowane poza labiryntem.
Aby to zilustrować, rozważ następującą tablicę:
[0,8,5,9,4,1,1,1,2,1,2]
Jeśli znajdujemy się teraz w piątym elemencie, ponieważ element ma 4, możemy przeskoczyć 4 kroki do przodu do 9 elementu lub 4 kroki do tyłu do pierwszego elementu. Jeśli zrobimy to drugie, otrzymamy element 0, co oznacza, że dalsze ruchy nie są możliwe. Jeśli zrobimy to pierwsze, ponieważ dziewiąty element to 2, możemy przeskoczyć do 11. elementu, który jest znowu 2, a następnie możemy ponownie wskoczyć do „13. elementu”, który jest poza granicami i rozważał wyjście do labiryntu.
Więc jeśli zaczniemy od elementu pośrodku, jednym ze sposobów na wydostanie się z labiryntu jest przeskoczenie 1 krok do tyłu, 4 kroki do przodu, 2 kroki do przodu i ponownie 2 kroki do przodu, które można wyrazić jako tablicę [-1,4,2,2]
. Alternatywnie można wyrazić z układem [4,8,10,12]
, który jest zapisywany indeksem zero na bazie wszystkich pośrednich i końcowych punktów (1 oparte wskaźnik jest dobry) lub tylko oznaczeń [-1,1,1,1]
.
Ucieczka z labiryntu od końca niskiego indeksu również jest OK.
Zastosowanie pierwszej notacji i rozpoczęcie od tego samego elementu [1,1,1,2,2]
jest również rozwiązaniem, ale nie jest optymalne, ponieważ jest 5 kroków zamiast 4.
Zadanie polega na znalezieniu najkrótszej ścieżki, aby wydostać się z labiryntu macierzy i wyprowadzić ścieżkę. Jeśli istnieje więcej niż jedna optymalna ścieżka, możesz wyprowadzić jedną lub wszystkie z nich. Jeśli nie ma rozwiązania, powinieneś wypisać wybraną przez siebie wartość fałszowania, która jest dostrzegalna z prawidłowej ścieżki (nie generowanie żadnego wyniku również jest OK).
Dla uproszczenia liczba elementów w tablicy jest zawsze liczbą nieparzystą i zawsze zaczynamy od elementu pośrodku.
Przypadki testowe
Przypadki testowe ilustrują różne formy wyników, ale nie są do nich ograniczone.
Input
Output
[0,8,5,9,4,1,1,1,2,1,2]
[-1,4,2,2]
[2,3,7,1,2,0,2,8,9]
[2,9] (or [2,-5] or [[2,9],[2,-5]])
[0,1,2,2,3,4,4,4,3,2,2,3,0]
[1,-1,1,1]
[0,1,2,2,4,4,6,6,6,6,6,4,2,1,2,2,0]
[]
Okular
Możesz napisać funkcję lub pełny program.
Tablica zawiera tylko nieujemne liczby całkowite.
Możesz pobierać dane wejściowe i wyjściowe za pomocą dowolnego standardowego formularza , ale w odpowiedzi określ, którego formularza używasz.
To jest golf golfowy , najniższa liczba bajtów wygrywa.
Jak zwykle obowiązują tutaj domyślne luki .
[1,1,1,-1]
zamiast [-1,1,1,1]
?
[0,8,5,9,4,1,1,1,2,1,2]
wyjścia[[-1,4,2,2]]
)