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:

Kara und seine Welt - vorher Kara und seine Welt - vorher

Beispiel 2: Karawelt - vorher / nachher:

Kara und seine Welt - vorher Kara und seine Welt - vorher

Beispiel 3: Karawelt - vorher / nachher:

Kara und seine Welt - vorher Kara und seine Welt - vorher

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.

Struktogramm

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()
X

Fehler melden

X

Suche