Dada una WxH
cuadrícula, ¿cuántos laberintos posibles hay?
Cosas que sabes sobre el laberinto:
- La cuadrícula es exactamente
H
cuadrados altos yW
cuadrados anchos. - Hay tres tipos de cuadrados: Inicio, Fin y Vacío. Tu laberinto debe contener exactamente 1 inicio y 1 final, y todos los cuadrados restantes están vacíos.
- Hay paredes que rodean todo el laberinto.
- Pueden existir muros en el borde entre dos cuadrados, a menos que rompa la siguiente regla:
- Debe existir un camino desde el cuadro de Inicio hasta el cuadro de Fin.
Por lo tanto, dados dos números W
y H
debe devolver un solo número que represente el número de posibles configuraciones de cuadrado / pared. Tienes garantizado queW*H > 1
Por ejemplo, el 2x2
laberinto tiene exactamente 100
diferentes configuraciones posibles.
Este es un código de golf, por lo que gana la respuesta más corta.
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
fuente
fuente
Respuestas:
Python 2,
329310 bytesEsta es la versión de golf (y mucho más ineficiente) del programa que estaba usando mientras discutía el problema con @Nathan. Puedo guardar algunos bytes reemplazando algunas sangrías de espacio con pestañas, pero lo guardaré para más adelante.
El algoritmo es simplemente generar cada laberinto, luego inundar el relleno desde el principio, ver si pasamos el final en algún momento o no.
fuente