Escriba un programa que genere e imprima un laberinto aleatorio utilizando el algoritmo de su elección. El laberinto debe ser diferente para múltiples ejecuciones del programa. La altura y el ancho se dan como argumentos de línea de comando. Use |
para pared vertical, -
para pared horizontal y +
para esquina. El laberinto está delimitado por paredes y las entradas están marcadas por paredes faltantes. El laberinto contiene un tesoro #
que debe ser accesible desde al menos una entrada.
$ python2 random-maze.py 4 5
+-+-+
|#|
| |
+---+
code-challenge
ascii-art
maze
Alexandru
fuente
fuente
*
o hay dos entradas separadas? 2: Probablemente debería especificar que la salida debe ser accesible.Respuestas:
Creo que esto técnicamente no es un generador de laberintos, pero crea un resultado similar a un laberinto: https://gist.github.com/803450 .
Sé que hay un código horrible allí, y solo funciona menos de la mitad del tiempo, y el resultado no parece correcto para las paredes que sobresalen de otras paredes. Pero está lo suficientemente cerca como para que no me moleste en arreglar el resto.
Algunos resultados de ejemplo:
fuente
Python, 375 caracteres
Esto genera un laberinto con una entrada y un tesoro colocado al azar. El laberinto es un simple laberinto de árboles binarios .
fuente
Ruby 1.9.2p136: 90
Salida
Oye, nadie dijo que tenía que ser un buen laberinto. OK, OK, haré una real ahora.
fuente
#!/usr/bin/env python
, por ejemplo, en su código. Como dije, escribiré una solución real también, esto fue solo señalar la mala calidad de la pregunta en sí (y muchas otras) y demuestra que necesitamos tener mejores pautas. Y finalmente, señalar una pregunta no hace que la respuesta a la pregunta sean las reglas reales del sitio. Pero bien, aquí está tu nueva versión ...C 844
Probar:
3x3
7x8
18x20
fuente
Aquí hay una solución java simple:
Algunos resultados de muestra:
3x3:
4x4:
4x5:
5x5:
5x8:
8x15:
fuente