Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| lehrkraefte:blc:informatik:ffprg1-2022:nerdle:start [2022/06/01 08:50] – [Generieren von Rechnungen] Ivo Blöchliger | lehrkraefte:blc:informatik:ffprg1-2022:nerdle:start [2022/06/02 05:25] (current) – [Kommutativität?] Ivo Blöchliger | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Nerdle ====== | ||
| + | Siehe auch https:// | ||
| + | Dort finden sich auch die Regeln. | ||
| + | |||
| + | Es gibt auch noch https:// | ||
| + | |||
| + | ===== Kommutativität (Umstellungen)? | ||
| + | Das mit der Kommutativiät kann zu Problemen führen: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Da wäre auch die Rechnung " | ||
| + | |||
| + | Auch ist nicht klar, welche Umstellung für die Bewertung ausgewählt werden soll. Die erste? Die, die am besten passt? Was heisst das genau? | ||
| + | |||
| + | ===== Challenges ===== | ||
| + | ==== Generieren von Rechnungen ==== | ||
| + | Schreiben Sie Funktionen, die verschiedene Typen von Rechnungen generieren (und je nachdem auch gleich alle möglichen Umstellungen). | ||
| + | |||
| + | Beispiel: | ||
| + | <code python> | ||
| + | import random | ||
| + | |||
| + | # 8 Zeichen, ein =, ein +, also 6 Zeichen für 3 Zahlen | ||
| + | def additionEinfach(): | ||
| + | if random.randrange(3)==0: | ||
| + | a = random.randrange(1, | ||
| + | c = random.randrange(100, | ||
| + | b = c-a | ||
| + | if random.randrange(2)==0: | ||
| + | a,b = b,a | ||
| + | return " | ||
| + | else: # Generiere 2-stellig+2-stellig=2-stellig | ||
| + | a = random.randrange(10, | ||
| + | b = random.randrange(10, | ||
| + | c = a+b | ||
| + | return " | ||
| + | | ||
| + | | ||
| + | # Testen: | ||
| + | for i in range(10): | ||
| + | print(additionEinfach()) | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | Erweitern Sie obige Funktion so, dass mit 50% Wahrscheinlicheit jeweils die Umkehrung c-b=a generiert wird. | ||
| + | <hidden Lösungsvorschlag> | ||
| + | Anstatt einfaches return wird folgendes verwendet: | ||
| + | <code python> | ||
| + | if random.randrange(2)==0: | ||
| + | return " | ||
| + | else: | ||
| + | return " | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Programmieren Sie dann weitere solche Funktionen. | ||
| + | ==== Überprüfung der Eingabe ==== | ||
| + | Die Eingabe muss überprüft werden, ob die Rechnung überhaupt korrekt ist. | ||
| + | * Dazu sind in den Regeln einige Bedingungen beschrieben (siehe Link oben) | ||
| + | Die Auswertung eines Ausdrucks kann wie folgt erfolgen: | ||
| + | * Von links nach rechts werden erst die Operationen * und / ausgeführt und durch die Resultate ersetzt. | ||
| + | * Dann werden die Operationen + und - ausgeführt und durch die Resultate ersetzt. | ||
| + | * Steht dann links und rechts vom = das Gleiche, ist die Eingabe ok. | ||
| + | |||
| + | |||
| + | Das Überprüfung kann dann sehr einfach mit den generierten Rechnungen getestet werden (plus eigene «falsche» Eingaben). | ||
| + | ==== Bewertungsfunktion ==== | ||
| + | Ist die Gleiche wie beim [[lehrkraefte: | ||
| + | |||
| + | === Mit Umstellungen === | ||
| + | Wenn man mit allen Umstellungen arbeiten möchte, muss die Bewertungsfunktion auf alle verbleibenden Umstellungen angewandt werden und die «beste» Bewertung ausgesucht werden (z.B. die mit den meisten grünen, dann die meisten violetten (gelben)). Alle Umstellungen, | ||