Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
| gf_informatik:karatutorial:algorithmen [2026-09-07 13:40] – hof | gf_informatik:karatutorial:algorithmen [2026-09-08 08:03] (aktuell) – [Aufgabe F2: Längster Tunnel] hof | ||
|---|---|---|---|
| Zeile 6: | Zeile 6: | ||
| In diesem Kapitel werden wir unsere Python-Kenntnisse vertiefen und auf algorithmische Probleme anwenden. | In diesem Kapitel werden wir unsere Python-Kenntnisse vertiefen und auf algorithmische Probleme anwenden. | ||
| - | + | #### Aufgabe F1: Wand folgen | |
| - | ### Aufgabe F1: Wand folgen | + | |
| Kara wacht eifersüchtig über ihren Blättervorrat. Schreibe Python-Code, | Kara wacht eifersüchtig über ihren Blättervorrat. Schreibe Python-Code, | ||
| - | **Hinweis**: | + | **Hinweis**: |
| - | < | + | < |
| < | < | ||
| TTTTTTTTTTTTTTT | TTTTTTTTTTTTTTT | ||
| - | T > | + | T |
| T TTTTT T | T TTTTT T | ||
| T | T | ||
| - | T | + | T |
| T TLLLTT | T TLLLTT | ||
| T TLLLT T | T TLLLT T | ||
| Zeile 41: | Zeile 40: | ||
| if not kara.treeFront(): | if not kara.treeFront(): | ||
| kara.move() | kara.move() | ||
| - | else: | + | |
| kara.turnLeft() | kara.turnLeft() | ||
| </ | </ | ||
| Zeile 47: | Zeile 46: | ||
| ++++TOC| | ++++TOC| | ||
| - | - (already covered): | + | * (already covered): |
| - | | + | * leaf counting |
| - | | + | * tunnel detection |
| - | - wall following | + | |
| - | - longest tunnel finding | + | |
| - | - leaf ratio & comparisons (more / less) | + | |
| - | - distance between two leaves | + | |
| - | - filling a rectangle with leaves | + | |
| - | - Boustrophedon field sweep | + | |
| - | - alternating pattern sowing | + | |
| ++++ | ++++ | ||
| + | #### Aufgabe F2: Längster Tunnel | ||
| + | Schreibe Python-Code, | ||
| + | **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 ev. diesen eventuell auf den neuen Höchstwert. | ||
| + | * Vergleiche kannst du mit dem Operator `>` oder `<` anstellen, also `if laenge > rekord:` | ||
| + | * danach wird die aktuelle Länge auf `0` gesetzt. | ||
| + | |||
| + | < | ||
| + | < | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | < | ||
| + | record = 0 | ||
| + | length = 0 | ||
| + | while not kara.treeFront(): | ||
| + | if kara.treeLeft() and kara.treeRight(): | ||
| + | length = length + 1 | ||
| + | kara.putLeaf() | ||
| + | else: | ||
| + | if length > record: | ||
| + | record = length | ||
| + | print(" | ||
| + | length = 0 | ||
| + | kara.move() | ||
| + | print(" | ||
| + | </ | ||
| + | < | ||
| + | assert " | ||
| + | </ | ||
| + | </ | ||