diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2014-11-20 18:14:25 +0100 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2014-11-20 18:14:25 +0100 |
| commit | 7ee88aae8d8cd440996fc8fec639dc55a50a3b3b (patch) | |
| tree | d87f59099616b536a00bf9953d985be109945653 /alphametiken.py | |
| parent | ce21fb5fae3de75cc0be7eb7143ce87a313d426c (diff) | |
| download | bwinf-33-7ee88aae8d8cd440996fc8fec639dc55a50a3b3b.tar.gz bwinf-33-7ee88aae8d8cd440996fc8fec639dc55a50a3b3b.zip | |
kleinere Optimierungen und Dokumentation
Diffstat (limited to 'alphametiken.py')
| -rwxr-xr-x | alphametiken.py | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/alphametiken.py b/alphametiken.py index ff13108..37c0c2e 100755 --- a/alphametiken.py +++ b/alphametiken.py @@ -10,12 +10,14 @@ import re, random Alphametik = "SUCHEN-MACHT=SPASS" Zahlen = ["EINS", "ZWEI", "DREI", "VIER", "FÜNF", "SECHS", "SIEBEN", "ACHT", "NEUN", "ZEHN"] +#Rechenzeichen = ["+", "-", "*", "/"] +Rechenzeichen = ["+", "-"] # schneller # Liste der Buchstaben erstellen aus `wort` def buchstaben_liste(wort): buchstaben = [] for c in wort: - if (c not in "+-*/= ") and (c not in buchstaben): + if (c not in Rechenzeichen) and (c not in buchstaben) and (c not in " ="): buchstaben.append(c) return buchstaben @@ -51,6 +53,10 @@ def ersetze(b, wort, benutzte_zahlen = [], lösungen = [], alle_buchstaben = Non return lösungen +# kleiner Wrapper, der die Benutzung von `ersetze` vereinfacht +def löse(alpham): + return ersetze(buchstaben_liste(alpham), alpham) + # gibt ein zufälliges Alphametik mit `länge` "Ziffern" vor dem Gleichheitszeichen zurück def generiere(länge = 1): while True: @@ -59,7 +65,7 @@ def generiere(länge = 1): alphametik = "x" + "_x" * länge + "=y" # Template für Rechnung for j in range(länge + 1): # zufällige Rechenzeichen einsetzen - alphametik = alphametik.replace("_", random.choice(["+", "-", "*", "/"]), 1) + alphametik = alphametik.replace("_", random.choice(Rechenzeichen), 1) alphametik = alphametik.replace("y", str(random.randrange(1, 9))) # Ergebnis for j in range(länge + 2): @@ -71,12 +77,12 @@ def generiere(länge = 1): for j in range(1, 10): alphametik = alphametik.replace(str(j), Zahlen[j - 1]) - l = ersetze(buchstaben_liste(alphametik), alphametik) + l = löse(alphametik) if len(l) > 0: return alphametik # Geschafft, wir haben eines gefunden! if __name__ == "__main__": - l = ersetze(buchstaben_liste(Alphametik), Alphametik) + l = löse(Alphametik) if len(l) == 0: print("Keine Lösungen vorhanden") |
