diff options
| -rwxr-xr-x | alphametiken.py | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/alphametiken.py b/alphametiken.py index d4b25bb..3e1d015 100755 --- a/alphametiken.py +++ b/alphametiken.py @@ -1,4 +1,5 @@ #!/usr/bin/env python3 +# -*- coding: utf-8 -*- '''Generiert oder löst Alphametiken''' # Nicht als root ausführen. # Die Ausführung dauert bis zu zwei Minuten, abhängig von der Länge des @@ -9,18 +10,18 @@ import re, random -Alphametik = "SUCHEN-MACHT=SPASS" +ALPHAMETIK = "SUCHEN-MACHT=SPASS" -Zahlen = ["EINS", "ZWEI", "DREI", "VIER", "FÜNF", \ +ZAHLEN = ["EINS", "ZWEI", "DREI", "VIER", "FÜNF", \ "SECHS", "SIEBEN", "ACHT", "NEUN", "ZEHN"] -#Rechenzeichen = ["+", "-", "*", "/"] -Rechenzeichen = ["+", "-"] # schneller +#RECHENZEICHEN = ["+", "-", "*", "/"] +RECHENZEICHEN = ["+", "-"] # schneller def buchstaben_liste(wort): '''Erstellt eine Liste der Buchstaben''' buchstaben = [] for char in wort: - if (char not in Rechenzeichen) \ + if (char not in RECHENZEICHEN) \ and (char not in buchstaben) \ and (char not in " ="): @@ -29,7 +30,7 @@ def buchstaben_liste(wort): return buchstaben def ersetze(buchst, wort, \ - benutzte_zahlen=[], loesungen=[], alle_buchstaben=None): + benutzte_zahlen=None, loesungen=None, alle_buchstaben=None): '''Ersetzt einen Buchstaben aus `buchst` in einem Wort `wort` \ nacheinander durch `0-9` und ruft sich selbst auf. \ Ist `buchst` leer, wird das Alphametik auf Richtigkeit getestet @@ -39,6 +40,10 @@ Element der Liste ist der Rechnungsstring und ein dict.''' if alle_buchstaben == None: alle_buchstaben = buchst + if benutzte_zahlen == None: + benutzte_zahlen = [] + if loesungen == None: + loesungen = [] if len(buchst): for j in range(10): @@ -67,7 +72,7 @@ Element der Liste ist der Rechnungsstring und ein dict.''' def loese(alpham): '''kleiner Wrapper, der die Benutzung von `ersetze` vereinfacht''' - return ersetze(buchstaben_liste(alpham), alpham, [], [], None) + return ersetze(buchstaben_liste(alpham), alpham, None, None, None) def generiere(laenge=1): '''gibt ein zufälliges Alphametik mit `laenge` \ @@ -79,7 +84,7 @@ def generiere(laenge=1): for j in range(laenge + 1): # zufällige Rechenzeichen einsetzen alphametik = alphametik.replace("_", \ - random.choice(Rechenzeichen), 1) + random.choice(RECHENZEICHEN), 1) alphametik = alphametik.replace("y", str(random.randrange(1, 9))) # Ergebnis @@ -92,19 +97,19 @@ def generiere(laenge=1): # jetzt passende Alphametiken suchen oder weitersuchen for j in range(1, 10): - alphametik = alphametik.replace(str(j), Zahlen[j - 1]) + alphametik = alphametik.replace(str(j), ZAHLEN[j - 1]) loe = loese(alphametik) if len(loe) > 0: return alphametik # Geschafft, wir haben eines gefunden! if __name__ == "__main__": - loesung = loese(Alphametik) + LOESUNG = loese(ALPHAMETIK) - if len(loesung) == 0: + if len(LOESUNG) == 0: print("Keine Lösungen vorhanden") else: print("Es konnten folgende Lösungen gefunden werden:") - print(loesung) + print(LOESUNG) print(generiere()) |
