Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| markow:seriec [2018/09/04 15:17] – [9 Conway Folge] Tscherter Vincent | markow:seriec [2024/03/03 22:36] (aktuell) – Tscherter Vincent | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ===== Aufgaben Serie C ===== | ||
| + | |||
| + | {{gem/ | ||
| + | |||
| + | ==== 1 X-Mas Tree ====== | ||
| + | |||
| + | Erstelle einen Algorithmus der aus der folgenden Eingabe eine entsprechenden Weihnachtsbaum zeichnet: | ||
| + | |||
| + | ; Eingabe | ||
| + | : < | ||
| + | ooooooo | ||
| + | </ | ||
| + | ; Ausgabe | ||
| + | : < | ||
| + | | ||
| + | ooo | ||
| + | ooooo | ||
| + | ooooooo | ||
| + | o | ||
| + | </ | ||
| + | |||
| + | * Die Grösse des Baumes ist abhängig von der Eingabe. | ||
| + | * Erweiterung 1: Baumstrunk | ||
| + | * Erweiterung 2: Baumschmuck | ||
| + | |||
| + | | ||
| + | |||
| + | ++++ Lösung von Roli | <code text> | ||
| + | / | ||
| + | /^( *o)((\n *o*)*)$/ | ||
| + | </ | ||
| + | |||
| + | ++++ Lösung von Tscherter| <code text> | ||
| + | /^( *oo? | ||
| + | /^( *o*)oo/ $1\n$&/</ | ||
| + | |||
| + | ==== 2 Pascalsche Dreieck ===== | ||
| + | |||
| + | Erstelle einen Algorithmus der aus der folgenden Eingabe eine entsprechendes binäres Pascalsche Dreieck zeichnet. | ||
| + | |||
| + | Eingabe < | ||
| + | oooooooooooooooooooooooooooooooooooooooo | ||
| + | o | ||
| + | o | ||
| + | o | ||
| + | o | ||
| + | o | ||
| + | o | ||
| + | o | ||
| + | o | ||
| + | o | ||
| + | o | ||
| + | </ | ||
| + | |||
| + | Ausgabe < | ||
| + | oooooooooooooooooooooooooooooooooooooooo | ||
| + | o o o o o o o o o o o o o o o o o o o o | ||
| + | oo oo oo oo oo oo oo oo oo oo | ||
| + | o | ||
| + | oooo oooo oooo oooo oooo | ||
| + | o o o o o o o o o o | ||
| + | oo oo oo oo oo | ||
| + | o | ||
| + | oooooooo | ||
| + | o o o o o o o o o o o o | ||
| + | oo oo oo oo oo oo | ||
| + | </ | ||
| + | |||
| + | | ||
| + | |||
| + | ++++ Lösung (TSC) | < | ||
| + | /αo([o \n]*)βo/ | ||
| + | /αo([o \n]*)β /oα$1 βo/ | ||
| + | /α ([o \n]*)βo/ α$1oβo/ | ||
| + | /α ([o \n]*)β / α$1 β / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | ==== 3 Häufigste Wort in einem Text ====== | ||
| + | |||
| + | Erstelle einen Algorithmus der jenes Wort aus einem Text herausliest, | ||
| + | |||
| + | ; Eingabe | ||
| + | : < | ||
| + | ; Ausgabe | ||
| + | : < | ||
| + | |||
| + | | ||
| + | |||
| + | ++++ Lösung| <code text> | ||
| + | /\W+$//g | ||
| + | / | ||
| + | / | ||
| + | /.*ξ//! | ||
| + | /\W+|^/ξ/g | ||
| + | </ | ||
| + | |||
| + | ==== 4 Zahlenreihe ===== | ||
| + | |||
| + | Eine Zahlenreihe ist folgend aufgebaut: Man beginnt mit einer beliebigen Zahl. | ||
| + | - Ist die Zahl gerade, kann sie durch zwei geteilt werden | ||
| + | - Ist die Zahl ungerade, wird sie mit drei multipliziert und eins wird dazu addiert | ||
| + | - Ist die Zahl 1 stoppt die Reihe | ||
| + | |||
| + | Beispiel: 6, 3, 10, 5, 16, 8, 4, 2, 1 | ||
| + | |||
| + | Programmiere die Zahlenreihe als Markow Algorithmus für eine beliebige Eingabe in unärer Form. Beispiel: | ||
| + | |||
| + | ; Eingabe | ||
| + | : < | ||
| + | ; Ausgabe | ||
| + | : < | ||
| + | 1111111111 | ||
| + | 11111 | ||
| + | 1111111111111111 | ||
| + | 11111111 | ||
| + | 1111 | ||
| + | 11 | ||
| + | 1</ | ||
| + | |||
| + | | ||
| + | |||
| + | ++++ Lösung | <code text> | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | ==== 5 Römische Zahlen II ===== | ||
| + | |||
| + | Schreibe einen Algorithmus der eine Dezimalzahl römisch darstellt. Bespiel: | ||
| + | |||
| + | ; Eingabe | ||
| + | : < | ||
| + | ; Ausgabe | ||
| + | : < | ||
| + | |||
| + | | ||
| + | |||
| + | ++++ Lösung | < | ||
| + | /IIIII/V/g | ||
| + | /VV/X/g | ||
| + | /XXXXX/L/g | ||
| + | /LL/C/g | ||
| + | /CCCCC/D/g | ||
| + | /DD/M/g | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | |||
| + | ==== 6 Römische Zahlen III ===== | ||
| + | |||
| + | Schreibe einen Algorithmus der zwei römische Zahlen addiert. | ||
| + | |||
| + | ; Eingabe | ||
| + | : < | ||
| + | ; Ausgabe | ||
| + | : < | ||
| + | | ||
| + | |||
| + | | ||
| + | |||
| + | ++++ Lösung | < | ||
| + | - Filtern | ||
| + | / | ||
| + | - Sortieren | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | - Verdichten | ||
| + | /I{5}/V/ | ||
| + | /V{2}/X/ | ||
| + | /X{5}/L/ | ||
| + | /L{2}/C/ | ||
| + | /C{5}/D/ | ||
| + | /D{2}/M/ | ||
| + | </ | ||
| + | |||
| + | Bemerkung: Der Algrithmus prüft nicht ob eine syntaktisch korrekte Addition vorliegt. Er addiert lediglich sämtliche vorhandene Zahlensymbole '' | ||
| + | ++++ | ||
| + | |||
| + | ==== 7 Towers of Hanoi ====== | ||
| + | |||
| + | {{http:// | ||
| + | \\ cf. [[wpde> | ||
| + | |||
| + | |||
| + | Wir haben Scheiben, der Markow-Algorithmus arbeitet aber mit Buchstaben. Um die Lage der Scheiben zu beschreiben, | ||
| + | |||
| + | * {{: | ||
| + | * {{: | ||
| + | * {{: | ||
| + | |||
| + | | ||
| + | |||
| + | === Lösungen ==== | ||
| + | |||
| + | ++++ Lösung von Sandro Ackermann | <code text> | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | /α//! | ||
| + | </ | ||
| + | |||
| + | ++++ Lösung von Vincent Tscherter | <code text> | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | /ξ//! | ||
| + | </ | ||
| + | |||
| + | Regeln 0 oder 1 wechseln sich mit Regel 2 ab. Regel 2 dient dazu, die kleinste Scheibe eins weiterzugeben (mod 3). Regel 0 resp. Regel 1 führen geweils den einzigen legalen Zug, der die kleinste Scheibe nicht betrifft, aus. ++++ | ||
| + | |||
| + | ==== 8 Vokalen | ||
| + | |||
| + | Erstelle einen Algorithmus, | ||
| + | |||
| + | ; Eingabe | ||
| + | : < | ||
| + | guten morgen liebe sorgen | ||
| + | </ | ||
| + | ; Ausgabe | ||
| + | : < | ||
| + | Vokale | ||
| + | Konsonanten : gtnmrgnlbsrgn | ||
| + | </ | ||
| + | |||
| + | | ||
| + | |||
| + | ++++ Lösung| <code text> | ||
| + | / //g | ||
| + | / | ||
| + | / | ||
| + | |||
| + | ==== 9 Conway Folge ====== | ||
| + | |||
| + | ; Problemstellung | ||
| + | : Prüfe ob eine Zahl zur Conway-Folge '' | ||
| + | ; Beispiele | ||
| + | : '' | ||
| + | : '' | ||
| + | ; Idee | ||
| + | : Erstelle beginnend mit '' | ||
| + | |||
| + | | ||
| + | |||
| + | ++++Antwortzugng| < | ||
| + | / | ||
| + | |||
| + | / | ||
| + | / | ||
| + | |||
| + | / | ||
| + | / | ||
| + | / | ||
| + | |||
| + | /: | ||
| + | / | ||
| + | /: | ||
| + | |||
| + | ==Erläuterungen == | ||
| + | ; A Initialisierung | ||
| + | : Die erste Regeln prüften den Trivialfall '' | ||
| + | ; B Eingabelänge | ||
| + | : Über Regel 4 und 5 werden solange '':'' | ||
| + | ; C Folgeelement | ||
| + | : Es folgt über die Regeln 7 bis 9 die Bestimmung des Folgeelements und dessen unären Länge zwischen '' | ||
| + | ; D Inhaltsvergleich | ||
| + | : Über Regel 11 wird geprüft ob die beiden Elemente links von '' | ||
| + | : Über Regel 12 prüft der Algorithmus ob das letzte berechnete Folgeelement bereits mehr Zeichen als die zu prüfende Eingabe hat (STOP ✘). \\ '':::::::: | ||
| + | : Über Regel 13 wird der nächste Iterationsschritt eingeleitet, | ||
| + | | ||
| + | ++++ | ||
| + | |||