summaryrefslogtreecommitdiff
path: root/alphametiken.py
diff options
context:
space:
mode:
Diffstat (limited to 'alphametiken.py')
-rwxr-xr-xalphametiken.py29
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())