Kara Algorithmen
Ein Algorithmus ist eine eindeutige Vorgehensweise zur Lösung eines Problems. Du hast bereits einige Algorithmen ausprobiert und sogar selber einige umgesetzt, z.B. zum Verteilen von Blättern, dem Markieren eines Tunnels oder dem Zählen von Blättern.
Zentral dabei ist, dass diese Algorithmen nicht nur in der vorgegebenen Kara-Welt funktionieren, sondern die richtige Lösung auch dann liefern, wenn die Welt anders aussieht - zum Beispiel wenn mehr oder weniger Blätter vorhanden sind. Ein Algorithmus, der für Aufgabe E2 einfach die korrekte Zahl 34 ausgibt, genügt diesem Kriterium kaum.
In diesem Kapitel werden wir unsere Python-Kenntnisse vertiefen und auf algorithmische Probleme anwenden.
Tipp:
- Verwende Kommentare mit
#, um deine Programme zu strukturieren und offene Punkte zu notieren.
Aufgabe F1: Wand folgen
Kara wacht eifersüchtig über ihren Blättervorrat. Schreibe Python-Code, der Kara immerzu um die Bäume herumlaufen lässt.
Hinweis: Das Programm hört von sich aus nie auf, muss also aktiv unterbrochen werden, um es zu stoppen.
Aufgabe F2: Längster Tunnel
Schreibe Python-Code, um den Länge des längsten Tunnels auszugeben. Ein Tunnel ist definiert als eine gerade Strecke, bei der links und rechts ein Baum steht. Am Ende wird die Länge des längsten Tunnels auf der Konsole ausgegeben. Kara stoppt, wenn Sie auf einen Baum trifft.
Tipps:
- Merke dir den bislang längsten Tunnel (Rekordhalter) in einer Variable (zu Beginn
0). - Merke dir die Länge des aktuellen Tunnels in einer Variable.
- am Ende jedes Tunnels vergleichst du den aktuellen Tunnel mit dem bisherigen Rekordhalter und setzt diesen eventuell auf den neuen Höchstwert.
- Vergleiche kannst du mit dem Operator
>oder<anstellen, alsoif laenge > rekord: - danach wird die aktuelle Länge auf
0gesetzt.
Aufgabe F3: Golfplatz (schwierig)
Der Golf-Rasen ist voller Blätter - schreibe Code, um alle aufzusammeln! Anders als in der Aufgabe C6 können wir jetzt eine Variable verwenden, um uns zu merken, ob wir beim nächsten Baum nach links oder nach rechts wenden sollen und so den Platz in einer Schlangenlinie ablaufen. Die Variable könnte beispielsweise mit next_turn_right = True initialisiert werden.
Gib nach jeder Wende aus, wieviele Blätter Kara aufgesammelt hat.
Aufgabe F4: Herbstwald
Kara läuft durch den herbstlichen Wald und sammelt schöne Blätter auf. Immer wenn sie auf einen Pilz trifft, biegt sie links ab. Sie stoppt, wenn sie auf einen Baum trifft und gibt aus, ob sie mehr Blätter oder mehr Pilze angetroffen hat.