Wypełniający siatkę meander to zamknięta ścieżka, która co najmniej raz odwiedza każdą komórkę kwadratowej siatki , nigdy nie przekraczając żadnej krawędzi między sąsiednimi komórkami więcej niż jeden raz i nigdy nie przekraczając siebie. Na przykład:
Po wypełnieniu każda komórka siatki może być reprezentowana przez jeden z następujących 8 kafelków:
Ponumerowane w ten sposób kafelki powyższego meandra mogą być reprezentowane przez tę macierz:
5 6 5 6
4 8 3 2
5 7 6 2
4 3 4 3
Twoim zadaniem jest ukończenie meandra wypełniającego siatkę, biorąc pod uwagę niekompletny zestaw płytek. Na przykład niepełny meander:
... które można przedstawić za pomocą 0
s dla brakujących kafelków:
5 0 0 0 6
0 0 7 0 0
0 0 0 0 3
2 4 0 0 0
0 0 3 0 0
... można wykonać w następujący sposób:
...to znaczy:
5 6 5 1 6
4 8 7 6 2
5 7 7 7 3
2 4 8 8 6
4 1 3 4 3
Dane techniczne
- Dane wejściowe zawsze będą miały co najmniej a najwyżej (niepuste) kafelki, gdzie .
- Możesz użyć dowolnego zestawu wartości do przedstawienia kafelków, o ile jest to określone w odpowiedzi.
- Twoje dane wejściowe i wyjściowe mogą być w dowolnym formacie i kolejności, o ile jest to określone w odpowiedzi.
- Dla wszystkich danych wejściowych istnieje co najmniej jedno prawidłowe rozwiązanie (tzn. Nie trzeba obsługiwać nieprawidłowych danych wejściowych).
- Obowiązują standardowe zasady we / wy .
- Standardowe luki są zabronione.
- Zachęca się do wyjaśnień, nawet w przypadku „praktycznych” języków.
Przypadki testowe
Wejście ( Θ ):
0 6 0 0
Wyjście ( Θ ):
5 6 4 3
Wejście ( Θ ):
5 6 5 6 4 0 3 2 5 7 6 2 4 3 4 3
Wyjście ( Θ ):
5 6 5 6 4 8 3 2 5 7 6 2 4 3 4 3
Wejście ( Θ ):
5 0 0 0 6 0 0 7 0 0 0 0 0 0 3 2 4 0 0 0 0 0 3 0 0
Wyjście ( Θ ):
5 6 5 1 6 4 8 7 6 2 5 7 7 7 3 2 4 8 8 6 4 1 3 4 3
źródło
Odpowiedzi:
JavaScript (ES7),
236 ... 193185 bajtówWyjścia poprzez modyfikację macierzy wejściowej.
Wypróbuj online!
(zawiera część kodu końcowego do wydrukowania wyniku zarówno w postaci matrycy, jak i płaskiej listy zgodnej z narzędziem do wizualizacji udostępnianym przez PO)
Wyniki
W jaki sposób?
Zmienne
Wstępne kontrole
Na razie załóżmy, że nie wróciliśmy do punktu wyjścia.
Poszukuję ścieżki
Ostatnie 8 wpisów jest niepoprawnych i pominiętych. Pozostałe 4 nieprawidłowe wpisy są wyraźnie oznaczone łącznikami.
Dla porównania poniżej znajduje się dekodowana tabela, kompas i zestaw kafelków podane w wyzwaniu:
Sprawdzanie poprawności ścieżki
Stąd kod JS:
Sformatowane źródło
źródło