diff options
Diffstat (limited to 'doc/zahlenspiel.md')
| -rw-r--r-- | doc/zahlenspiel.md | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/doc/zahlenspiel.md b/doc/zahlenspiel.md new file mode 100644 index 0000000..50768d8 --- /dev/null +++ b/doc/zahlenspiel.md @@ -0,0 +1,39 @@ +Zahlenspiel +=========== + +Die Aufgabe ließe sich mit `random`s `randrange()` lösen. Zu Beginn der Bruchsuche müssen `p` und `q` gefunden werden, die der Anforderung des Schwierigkeitsgrades entsprechen und sich, geschrieben als Bruch, nicht kürzen lassen. +Das Nicht-Kürzen-Lassen lässt sich mit dem Greatest Common Divisor (größter gemeinsamer Teiler) berechnen - ist er eins, lässt sich `p/q` nicht kürzen. +Um die Zahlen `p` `q` innerhalb der Schwierigkeitsgrenzen zu halten ist es sinnvoll, nach dem Generieren einer zufälligen Zahl `Maximum > p > 1` die Zahl `q` abhängig davon zu finden: `Maximum - p > q > Minimum - p` + +TODO Minimum - p? + +Als Nächstes gilt es, einen Bruch zu finden, der der Schwierigkeitsstufe entsprechend lang genug ist. Dazu sucht die Funktion, angefangen bei einem Wert von 2, nach einem `x` welches für eine zufriedenstellende Länge des Bruches sorgt. Schießt die Länge über das Ziel hinaus, wird ein neuer Bruch gesucht. + +`bruch(Stufe)` gibt die Variablen `a, b, p, q` zurück, mit denen ein Bruch `a/b = p/q` der Schwierigkeitsstufe gebildet werden kann. Durch `aufgaben(Stufe, Anzahl)` können mehrere Aufgaben der gleichen Stufe mit `print` ausgegeben werden. +Schwierigkeitsstufen gehen von 0 - leicht über 1 - mittel bis 2 - schwer. + +Beispiele +--------- + +``` +>>> import zahlenspiel +>>> zahlenspiel.aufgaben(1, 5) +75 / 105 = 5 / 7 +104 / 39 = 8 / 3 +100 / 10 = 10 / 1 +112 / 24 = 14 / 3 +108 / 45 = 12 / 5 +>>> zahlenspiel.aufgaben(2, 1) +49 / 105 = 7 / 15 +>>> zahlenspiel.aufgaben(0, 10) +60 / 10 = 6 / 1 +70 / 10 = 7 / 1 +10 / 15 = 2 / 3 +70 / 10 = 7 / 1 +10 / 40 = 1 / 4 +15 / 12 = 5 / 4 +10 / 50 = 1 / 5 +10 / 30 = 1 / 3 +20 / 12 = 5 / 3 +80 / 10 = 8 / 1 +``` |
