1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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
```
|