Erkundung - Logische Operatoren
Das Problem: Den Ausgang aus einem Labyrinth finden
Kara befindet sich in einem Baumlabyrinth und möchte zum Ausgang laufen. Hier liegt (zur Belohnung) ein Kleeblatt.
Beispiel 1: Karawelt - vorher / nachher:
Beispiel 2: Karawelt - vorher / nachher:
Beispiel 3: Karawelt - vorher / nachher:
Algorithmische Lösung des Problems
Wie kann man systematisch aus einem Labyrinth herauslaufen? Die folgenden Aufgaben weisen dir einen Weg zur Lösung des Labyrinth-Problems. Du kannst natürlich auch versuchen, das Problem selbstständig zu lösen.
Aufgabe 1: Linke-Hand-Strategie
Kennst du die Linke-Hand-Strategie (Rechte-Hand-Strategie): Man läuft so weiter, dass die linke (rechte) Hand immer die Labyrinthbegrenzung berührt.
(a) Probiere die Linke-Hand-Strategie selbst einmal aus.
(b) Welchen Weg würde Kara in den drei oben gezeigten Labyrinthen laufen, wenn sie/er die Linke-Hand-Strategie systematisch anwendet?
Aufgabe 2: Verhaltensbeschreibung
Wie soll Kara sich nach der Linken-Hand-Strategie verhalten, wenn eine der folgenden Situationen vorliegt:
Situation 1: links ist kein Baum
Situation 2: links ist ein Baum und Kara steht nicht vor einem Baum
Situation 3: links ist ein Baum und Kara steht vor einem Baum
Aufgabe 3: Einen Algorithmus ergänzen
Wir beschreiben den Algorithmus zur Linken-Hand-Strategie mit einem Struktogramm. Gehe nach den Situationsbeschreibungen in Aufgabe 2 vor und ergänze die fehlenden Bedingungen.
Aufgabe 4: Einen Algorithmus in ein Programm übersetzen
Übersetze den Algorithmus aus Aufgabe 3 in die Programmiersprache Python.
Hier eine Auswahl an Vorschlägen zur Übersetzung der Bedingungen. Die richtigen Übersetzungen sind auch dabei.
kara.onLeaf() not kara.onLeaf() not kara.treeLeft() kara.treeLeft() not kara.treeLeft() and not kara.treeFront() kara.treeLeft() and kara.treeFront() kara.treeLeft() and not kara.treeFront() kara.treeLeft() or kara.treeFront()