Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| lehrkraefte:blc:informatik:glf25:labyrinthe:labyrinth-generieren [2026/02/21 13:20] – created Ivo Blöchliger | lehrkraefte:blc:informatik:glf25:labyrinthe:labyrinth-generieren [2026/03/15 15:10] (current) – Ivo Blöchliger | ||
|---|---|---|---|
| Line 5: | Line 5: | ||
| * Ist ein Nachbar unbesucht, wird die Mauer dorthin entfernt. | * Ist ein Nachbar unbesucht, wird die Mauer dorthin entfernt. | ||
| * Die Reihenfolge in der Todo-Liste wird hin und wieder zufällig «verwürfelt», | * Die Reihenfolge in der Todo-Liste wird hin und wieder zufällig «verwürfelt», | ||
| + | |||
| + | <WRAP todo> | ||
| + | Laden Sie folgende Python-Datei in Ihr Labyrinthverzeichnis: | ||
| + | <code python generator.py> | ||
| + | from laby import Laby | ||
| + | from zelle import Zelle | ||
| + | import time | ||
| + | from random import shuffle, randrange | ||
| + | |||
| + | lab = Laby(8, | ||
| + | |||
| + | |||
| + | # Todo-Liste enthält die Startzelle | ||
| + | todo = [ lab[0,0] ] | ||
| + | lab[0, | ||
| + | |||
| + | # Liste mit allen Richtungen (wird dann verwürfelt) | ||
| + | richtungen = [0, 1, 2, 3] | ||
| + | |||
| + | # Solange die Todo-Liste nicht leer ist, wiederhole: | ||
| + | while len(todo)> | ||
| + | # | ||
| + | aktuell = todo.pop() | ||
| + | |||
| + | # Für alle Richtungen $d$ in zufälliger Reihenfolge | ||
| + | shuffle(richtungen) | ||
| + | for d in richtungen: | ||
| + | # Ist Mauer in diese Richtung zu? | ||
| + | # Gibt es in diese Richtung eine Nachbarszelle? | ||
| + | # Ist diese noch nicht markiert? | ||
| + | # Markieren, Mauer öffnen, aktuell und nachbar der todo-Liste hinuzfügen. | ||
| + | # Schlaufe abbrechen | ||
| + | pass | ||
| + | </ | ||
| + | |||
| + | Versuchen Sie den Pseudo-Code in Python zu übersetzen. Konsultieren Sie dazu auch Ihre Python-Programme mit der Wegfindung mit Todo-Liste, bzw. Tiefen- und Breitensuche. | ||
| + | </ | ||
| + | |||
| + | ===== Verbesserungen der «Labyrinth-Qualität» ===== | ||
| + | Mit der Tiefensuche werden sehr lange «Schläuche» (mit wenig Kreuzungen) produziert. Das liegt daran, dass halt so weit wie möglich weiter gegangen wird. | ||
| + | |||
| + | <WRAP todo> | ||
| + | * Verwürfeln Sie nun auch die todo-Liste, damit mehr Kreuzungen eingebaut werden. | ||
| + | * Zu viele Kreuzungen? Verwürfeln Sie die todo-Liste z.B. nur jedes 10. Mal, mit '' | ||
| + | </ | ||
| + | |||