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, | ||
+ | | ||
+ | ++++ | ||
+ | |||