Escreva um programa que gere e imprima um labirinto aleatório usando o algoritmo de sua escolha. O labirinto deve ser diferente para várias execuções do programa. Altura e largura são fornecidas como argumentos de linha de comando. Use |
para parede vertical, -
para parede horizontal e +
para canto. O labirinto é limitado por paredes e as entradas são marcadas por falta de parede. O labirinto contém um tesouro #
que deve ser acessível a partir de pelo menos uma entrada.
$ python2 random-maze.py 4 5
+-+-+
|#|
| |
+---+
code-challenge
ascii-art
maze
Alexandru
fonte
fonte
*
ou existem duas entradas separadas? 2: Você provavelmente deve especificar que a saída deve ser alcançada.Respostas:
Acho que tecnicamente não é um gerador de labirinto, mas cria um resultado semelhante ao labirinto: https://gist.github.com/803450 .
Conheço algum código horrível lá dentro, e ele funciona menos da metade do tempo, e o resultado não parece muito certo com paredes saindo de outras paredes. Mas está perto o suficiente para não me incomodar em consertar o resto.
Alguns exemplos de saída:
fonte
Python, 375 caracteres
Isso gera um labirinto com uma entrada e um tesouro colocado aleatoriamente. O labirinto é um labirinto simples de árvore binária .
fonte
Ruby 1.9.2p136: 90
Resultado
Ei, ninguém disse que tinha que ser um bom labirinto. OK, OK, eu vou fazer uma verdadeira agora.
fonte
#!/usr/bin/env python
, por exemplo, em seu código. Como eu disse, vou escrever uma solução real também, isso estava apenas apontando a má qualidade da própria pergunta (e muitas outras) e demonstra que precisamos ter diretrizes melhores. E, finalmente, apontar para uma pergunta não torna a resposta para a pergunta as regras reais do site. Mas tudo bem, aqui está sua nova versão ...C 844
Testar:
3x3
7x8
18x20
fonte
Aqui está uma solução java simples:
Alguns resultados de amostra:
3x3:
4x4:
4x5:
5x5:
5x8:
8x15:
fonte