Biorąc pod uwagę WxH
siatkę, ile jest możliwych labiryntów?
Rzeczy, które wiesz o labiryncie:
- Siatka ma dokładnie
H
kwadraty wysokie iW
szerokie kwadraty. - Istnieją trzy rodzaje kwadratów: Start, Zakończ i Pusty. Twój labirynt musi zawierać dokładnie 1 początek i 1 koniec, a wszystkie pozostałe kwadraty są puste.
- Mury otaczają cały labirynt.
- Ściany mogą istnieć na krawędzi między dowolnymi dwoma kwadratami, chyba że złamie to poniższą zasadę:
- Musi istnieć ścieżka od kwadratu początkowego do kwadratu końcowego.
Dlatego, biorąc pod uwagę dwie liczby, W
i H
musisz zwrócić pojedynczy numer reprezentujący liczbę możliwych konfiguracji kwadratu / ściany. Masz gwarancję, żeW*H > 1
Na przykład 2x2
labirynt ma dokładnie 100
różne możliwe konfiguracje.
To jest golf golfowy, więc wygrywa najkrótsza odpowiedź!
code-golf
maze
code-golf
string
whitespace
code-golf
arithmetic
code-golf
pyth
code-golf
game
code-golf
string
code-challenge
code-challenge
ascii-art
compression
king-of-the-hill
c
c++
java
code-challenge
math
optimization
code-challenge
math
code-golf
kolmogorov-complexity
code-golf
string
Nathan Merrill
źródło
źródło
Odpowiedzi:
Python 2,
329310 bajtówJest to gra w golfa (i znacznie bardziej nieefektywna) programu, którego używałem podczas omawiania problemu z @Nathan. Mogę zapisać kilka bajtów, zastępując niektóre wcięcia spacjami tabulatorami, ale zachowam to na później.
Algorytm generuje po prostu każdy labirynt, a następnie wypełnia go od samego początku, sprawdzając, czy miniemy metę w pewnym momencie, czy nie.
źródło