Napisz program, który generuje i drukuje losowy labirynt przy użyciu wybranego algorytmu. Labirynt powinien być inny dla wielu uruchomień programu. Wysokość i szerokość podano jako argumenty wiersza poleceń. Użyj |
do ściany pionowej, ściany -
poziomej i +
narożnika. Labirynt jest otoczony ścianami, a wejścia oznaczone są brakującą ścianą. Labirynt zawiera skarb, #
który musi być osiągalny z co najmniej jednego wejścia.
$ python2 random-maze.py 4 5
+-+-+
|#|
| |
+---+
code-challenge
ascii-art
maze
Alexandru
źródło
źródło
*
czy są dwa osobne wejścia? 2: Prawdopodobnie powinieneś określić, że wyjście musi być osiągalne.Odpowiedzi:
Myślę, że technicznie nie jest to generator labiryntu, ale tworzy wynik podobny do labiryntu: https://gist.github.com/803450 .
Znam jakiś okropny kod, który działa tylko mniej niż w połowie czasu, a wynik nie wygląda całkiem dobrze ze ścianami wystającymi z innych ścian. Ale jest wystarczająco blisko, że nie mogę się martwić naprawieniem reszty.
Niektóre przykładowe dane wyjściowe:
źródło
Python, 375 znaków
To generuje labirynt z jednym wejściem i losowo umieszczonym skarbem. Labirynt jest prostym labiryntem drzewa binarnego .
źródło
Ruby 1.9.2p136: 90
Wynik
Hej, nikt nie powiedział, że to dobry labirynt. OK, OK, teraz zrobię prawdziwy.
źródło
#!/usr/bin/env python
na przykład w swoim kodzie. Jak powiedziałem, też napiszę prawdziwe rozwiązanie, to po prostu wskazywało na niską jakość samego pytania (i wielu innych) i pokazuje, że musimy mieć lepsze wytyczne. I wreszcie wskazanie na pytanie nie stanowi odpowiedzi na to pytanie, jakie są reguły witryny. Ale dobrze, oto twoja nowa wersja ...C 844
Testować:
3x3
7x8
18x20
źródło
Oto proste rozwiązanie Java:
Niektóre przykładowe wyniki:
3x3:
4x4:
4x5:
5x5:
5x8:
8x15:
źródło