summaryrefslogtreecommitdiff
path: root/doc/zahlenspiel.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/zahlenspiel.md')
-rw-r--r--doc/zahlenspiel.md39
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
+```