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 > Maximum - 10 - 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 ```