====== Einheit 3: Einfachere Wegfindungsalgorithmen ====== Wir arbeiten weiterhin im Verzeichnis ''labyrinth'', wo auch die Dateien ''laby.py'' und ''zelle.py'' zu finden sind. ===== Aufgabe 3 ===== * Speichern Sie folgendes Programm als ''aufgabe3.py'' im Verzeichnis ''labyrinth'': from laby import Laby l = Laby(4,4) # Aktuelle Zelle, bzw. Start-Zelle aktuell = l[0,0] # Zelle mit S markieren aktuell.mark = "S" print(l) while True: # Endlosschleife fertig = True for dir in range(4): # Alle Richtungen probieren nb = aktuell.nachbar(dir) # Nachbar in diese Richtung (oder None, wenn es diesen nicht gibt) if nb!=None and nb.mark==" ": # Noch keine Markierung? aktuell.zustand(dir, True) # Wand öffnen aktuell = nb # weiter gehen aktuell.mark = "." # Zelle markieren print(l) fertig = False break # for-Schleife beenden if fertig: break # while-Schleife beenden * Führen Sie es aus * Studieren und verstehen Sie das Programm. * Können Sie die einzelnen Schritte nachvollziehen und erklären, warum das entstehende Labyrinth so aussieht wie es aussieht? ===== Aufgabe 4 ===== * Im Programm ''aufgabe3.py'', kommentieren Sie die drittletzte Zeile mit dem ''break'' aus (jenes in der for-Schlaufe). * Können Sie das Resultat vorraussagen? * Führen Sie das Programm aus. Können Sie das Resultat erklären? ===== Aufgabe 5 ===== * Im Programm ''aufgabe3.py'', stellen Sie die drittletzte Zeile mit dem ''break'' wieder her. * Fügen Sie folgende Zeile unmittelbar vor der while Schlaufe ein: dirs = [0,2,1,3] * Ersetzen Sie dann in der for-Schleife den ''range(4)'' durch ''dirs''. * Können Sie das Resultat vorraussagen? * Führen Sie das Programm aus. Können Sie das Resultat erklären? ===== Aufgabe 6 ===== * Immer noch im Programm ''aufgabe3.py'', fügen Sie folgende Zeile als zweite Zeile in der Datei ein: from random import shuffle * Fügen Sie dann folgende Zeile unmittelbar vor der for-Schleife ein, und achten Sie auf korrekte Einrückung: shuffle(dirs) * Führen Sie das Programm mehrfach aus und erklären Sie das Resultat. Und die ''shuffle''-Funktion macht genau das, was ihr Name sagt.