From e4a877a2400bdab3882a47bb4bed1f0777d2cd67 Mon Sep 17 00:00:00 2001 From: schneefux Date: Sun, 23 Nov 2014 12:34:00 +0100 Subject: Korrigierung von Tippfehlern und TODOs --- doc/alphametiken.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'doc/alphametiken.md') diff --git a/doc/alphametiken.md b/doc/alphametiken.md index de06565..dd5c6de 100644 --- a/doc/alphametiken.md +++ b/doc/alphametiken.md @@ -3,20 +3,20 @@ Alphametiken Das Programm ist in zwei Teile gegliedert: -* `löse(zu_lösendes_Alphametikum)` gibt eine Liste mit allen Lösungen eines Alphametikums in dem Format `[['Rechnung', {'Buchstabe': zugehörige_Zahl, ...}], ...]` zurück (zum Beispiel `[['8928-3164=5764', {'Ü': 9, 'F': 8, 'W': 7, 'N': 2, 'Z': 5, 'I': 4, 'E': 6, 'D': 3, 'R': 1}]]` für `FÜNF-DREI=ZWEI`). +* `loese(zu_lösendes_Alphametikum)` gibt eine Liste mit allen Lösungen eines Alphametikums in dem Format `[['Rechnung', {'Buchstabe': zugehörige_Zahl, ...}], ...]` zurück (zum Beispiel `[['8928-3164=5764', {'Ü': 9, 'F': 8, 'W': 7, 'N': 2, 'Z': 5, 'I': 4, 'E': 6, 'D': 3, 'R': 1}]]` für `FÜNF-DREI=ZWEI`). * `generiere(Länge)` gibt ein Alphametikum als String zurück (zum Beispiel `FÜNF-DREI=ZWEI`), für welches mindestens eine Lösung vorhanden ist. Alphametikum lösen ------------------ -Die Funktion `ersetze`, aufgerufen durch `löse`, ersetzt jeweils den ersten Buchstaben im Alphametikum durch eine Zahl, nacheinander 0 bis 9. Für den Rest des Alphametikum-Strings wird die Funktion rekursiv aufgerufen. Ist der letzte Buchstabe ersetzt, wird mithilfe von Pythons `eval`-Funktion überprüft, ob die ersetzten Zahlen zu einer wahren Gleichung führen. Ist dies der Fall, wird die gefundene Lösung in einer Liste festgehalten und nach Überprüfen aller Kombinationen zurückgegeben. +Die Funktion `ersetze`, aufgerufen durch `loese`, ersetzt jeweils den ersten Buchstaben im Alphametikum durch eine Zahl, nacheinander 0 bis 9. Für den Rest des Alphametikum-Strings wird die Funktion rekursiv aufgerufen. Ist der letzte Buchstabe ersetzt, wird mithilfe von Pythons `eval`-Funktion überprüft, ob die ersetzten Zahlen zu einer wahren Gleichung führen. Ist dies der Fall, wird die gefundene Lösung in einer Liste festgehalten und nach Überprüfen aller Kombinationen zurückgegeben. Der Ausnahmefall, dass die Lösung eine Null als erste Ziffer einer Zahl hat, wird durch einen regulären Ausdruck `re.search` überprüft. Um gleiche Zahlen nicht an mehrere Buchstaben zu verteilen wird in der rekursiven Funktion die Liste an bereits verwendeten Zahlen mitgegeben. Beispiel für eine Lösung: ``` >>> import alphametiken ->>> alphametiken.löse("SEND + MORE = MONEY") +>>> alphametiken.loese("SEND + MORE = MONEY") [['9567 + 1085 = 10652', {'O': 0, 'N': 6, 'M': 1, 'E': 5, 'Y': 2, 'S': 9, 'D': 7, 'R': 8}]] ``` @@ -27,7 +27,7 @@ Zum Finden von Alphametiken in der Form `FÜNF-DREI=ZWEI` ist es zuerst nötig, ``` x_x=y ``` -das nun auf Richtigkeit, wieder durch `eval`, geprüft wird. Eine Gleichung wie `5-3=2` wird schließlich mithilfe von Zahlwörtern abgebildet: `FÜNF-DREI=ZWEI`. Jetzt wird mit `löse` geprüft, ob eine Lösung vorhanden ist. Wenn ja, endet die Funktion, sonst wird nach einer neuen Gleichung gesucht. +das nun auf Richtigkeit, wieder durch `eval`, geprüft wird. Eine Gleichung wie `5-3=2` wird schließlich mithilfe von Zahlwörtern abgebildet: `FÜNF-DREI=ZWEI`. Jetzt wird mit `loese` geprüft, ob eine Lösung vorhanden ist. Wenn ja, endet die Funktion, sonst wird nach einer neuen Gleichung gesucht. `random.choice` und `random.randrange` dienen hier zum Finden zufälliger Rechenzeichen und Zahlen. @@ -36,17 +36,17 @@ Beispiel für ein Alphametikum mit mehr als 20 Zeichen: >>> import alphametiken >>> alphametiken.generiere(3) 'FÜNF-ZWEI+VIER-ZWEI=FÜNF' ->>> alphametiken.löse('FÜNF-ZWEI+VIER-ZWEI=FÜNF') +>>> alphametiken.loese('FÜNF-ZWEI+VIER-ZWEI=FÜNF') ... ['9589-3102+6204-3102=9589', {'Z': 3, 'V': 6, 'I': 2, 'Ü': 5, 'R': 4, 'E': 0, 'N': 8, 'F': 9, 'W': 1}] ... >>> alphametiken.generiere() 'SECHS-VIER=ZWEI' ->>> alphametiken.löse('SECHS-VIER=ZWEI') +>>> alphametiken.loese('SECHS-VIER=ZWEI') [['12051-3427=8624', {'H': 5, 'W': 6, 'E': 2, 'Z': 8, 'I': 4, 'S': 1, 'C': 0, 'R': 7, 'V': 3}], >>> alphametiken.generiere(2) 'ACHT-ZWEI-DREI=DREI' ->>> alphametiken.löse('ACHT-ZWEI-DREI=DREI') +>>> alphametiken.loese('ACHT-ZWEI-DREI=DREI') [['4567-2389-1089=1089', {'T': 7, 'A': 4, 'W': 3, 'E': 8, 'Z': 2, 'I': 9, 'H': 6, 'C': 5, 'D': 1, 'R': 0}], ... ``` -- cgit v1.3.1