phi und e
This commit is contained in:
@@ -158,6 +158,12 @@ def auswahl_verarbeiten():
|
||||
elif auswahl == "Kreiszahl PI":
|
||||
st.session_state.output_text = tools.pi_suche(text)
|
||||
st.session_state.map_data = None
|
||||
elif auswahl == "Eulersche Zahl":
|
||||
st.session_state.output_text = tools.euler_suche(text)
|
||||
st.session_state.map_data = None
|
||||
elif auswahl == "phi (goldener Schnitt)":
|
||||
st.session_state.output_text = tools.goldener_schnitt_suche(text)
|
||||
st.session_state.map_data = None
|
||||
elif auswahl == "Anagrammsuche-DE":
|
||||
st.session_state.output_text = tools.anagramm_suche_de(text)
|
||||
st.session_state.map_data = None
|
||||
@@ -261,6 +267,8 @@ option = st.sidebar.radio("hidden_label",
|
||||
"Nak-Nak -> Text",
|
||||
"Navajo -> Text",
|
||||
"Kreiszahl PI",
|
||||
"Eulersche Zahl",
|
||||
"phi (goldener Schnitt)",
|
||||
"Anagrammsuche-DE",
|
||||
"Anagrammsuche-EN",
|
||||
"Wortsuche-DE",
|
||||
|
||||
191
app/tools.py
191
app/tools.py
@@ -1448,6 +1448,84 @@ def pi_suche(eingabetext):
|
||||
f'{pistr[pos:pos + 20]}...')
|
||||
return ausgabetext
|
||||
|
||||
def euler_suche(eingabetext):
|
||||
eingabetext = eingabetext.rstrip()
|
||||
if eingabetext == "":
|
||||
return ("### Eulersche Zahl - Nachkommastellensuche\n"
|
||||
"Für die eingegebene Zahl/Zahlenreihe X wird versucht die entsprechende X. Nachkommastelle auszugeben "
|
||||
"und das erst Vorkommen der Zahlenreihe X innerhalb der Nachkommastellen von e "
|
||||
"(2.71828182845904523.....) zu ermitteln. Aus Performance- und Speicherplatzgründen "
|
||||
"ist die Suche auf die ersten 10 Millionen Nachkommastellen beschränkt.")
|
||||
else:
|
||||
try:
|
||||
eread = open("./data/e.txt", "r")
|
||||
except FileNotFoundError:
|
||||
return "Sorry es scheint die Datei e.txt zu fehlen, welche von dieser Funktion benötigt wird."
|
||||
else:
|
||||
estr = ""
|
||||
for zeile in eread:
|
||||
estr = estr + zeile.rstrip()
|
||||
eread.close()
|
||||
elen = len(estr) - 2
|
||||
try:
|
||||
zahlx = int(eingabetext)
|
||||
except ValueError:
|
||||
return "Sorry aber ohne gültige Zahleneingabe funktioniert das nicht!"
|
||||
else:
|
||||
ausgabetext = "_e (Eulersche Zahl)_ \n \n"
|
||||
pos = estr.find(eingabetext)
|
||||
if elen >= zahlx > 0:
|
||||
ausgabetext += (f"_Die {zahlx}. Nachkommstelle lautet:_ {estr[zahlx + 1]} \n_20 Stellen ab "
|
||||
f"{zahlx}. Nachkommstelle:_ {estr[zahlx + 1:zahlx + 21]}... \n \n")
|
||||
else:
|
||||
ausgabetext += f"_Die verwendete pi.txt kennt leider nur {elen:,} Nachkommstellen._ \n \n"
|
||||
if pos == -1:
|
||||
ausgabetext += f"_Zahlenreihe in {elen:,} Nachkommastellen nicht zu finden._"
|
||||
else:
|
||||
ausgabetext += (f'erstes Vorkommen von Zahlenfolge "{eingabetext.rstrip()}" ab {pos - 1}. '
|
||||
f'Nachkommastelle \n20 Stellen ab {pos - 1}. Nachkommstelle: '
|
||||
f'{estr[pos:pos + 20]}...')
|
||||
return ausgabetext
|
||||
|
||||
def goldener_schnitt_suche(eingabetext):
|
||||
eingabetext = eingabetext.rstrip()
|
||||
if eingabetext == "":
|
||||
return ("### phi(Goldener Schnitt) Nachkommastellensuche\n"
|
||||
"Für die eingegebene Zahl/Zahlenreihe X wird versucht die entsprechende X. Nachkommastelle auszugeben "
|
||||
"und das erst Vorkommen der Zahlenreihe X innerhalb der Nachkommastellen von phi "
|
||||
"(1.618033988749894848204586...) zu ermitteln. Aus Performance- und Speicherplatzgründen ist die "
|
||||
"Suche auf die ersten 10 Millionen Nachkommastellen beschränkt.")
|
||||
else:
|
||||
try:
|
||||
phiread = open("./data/phi.txt", "r")
|
||||
except ValueError:
|
||||
return "Sorry es scheint die Datei phi.txt zu fehlen, welche von dieser Funktion benötigt wird."
|
||||
else:
|
||||
phistr = ""
|
||||
for zeile in phiread:
|
||||
phistr = phistr + zeile.rstrip()
|
||||
phiread.close()
|
||||
philen = len(phistr) - 2
|
||||
try:
|
||||
zahlx = int(eingabetext)
|
||||
except ValueError:
|
||||
return "Sorry aber ohne gültige Zahleneingabe funktioniert das nicht!"
|
||||
else:
|
||||
ausgabetext = "_phi (Goldener Schnitt)_ \n \n"
|
||||
pos = phistr.find(eingabetext)
|
||||
if philen >= zahlx > 0:
|
||||
ausgabetext += (f"_Die {zahlx}. Nachkommstelle lautet:_ {phistr[zahlx + 1]} \n_20 Stellen ab "
|
||||
f"{zahlx}. Nachkommstelle:_ {phistr[zahlx + 1:zahlx + 21]}... \n \n")
|
||||
else:
|
||||
ausgabetext += f"_Die verwendete pi.txt kennt leider nur {philen:,} Nachkommstellen._ \n \n"
|
||||
if pos == -1:
|
||||
ausgabetext += f"_Zahlenreihe in {philen:,} Nachkommastellen nicht zu finden._"
|
||||
else:
|
||||
ausgabetext += (f'erstes Vorkommen von Zahlenfolge "{eingabetext.rstrip()}" ab {pos - 1}. '
|
||||
f'Nachkommastelle \n20 Stellen ab {pos - 1}. Nachkommstelle: '
|
||||
f'{phistr[pos:pos + 20]}...')
|
||||
return ausgabetext
|
||||
|
||||
def anagramm_suche_de(eingabetext):
|
||||
eingabetext = eingabetext.rstrip()
|
||||
if eingabetext == "":
|
||||
@@ -2980,119 +3058,6 @@ erkannt.
|
||||
Ausgabe.insert(1.0, "Es konnte keine römische oder arabische Zahl erkannt werden!\n", "re")
|
||||
|
||||
|
||||
def euler_suche():
|
||||
hilfetext = """HILFE: [Eulersche Zahl - Nachkommastellensuche]
|
||||
Für die eingegebene Zahl/Zahlenreihe X wird versucht die
|
||||
entsprechende X. Nachkommastelle auszugeben und das erst
|
||||
Vorkommen der Zahlenreihe X innerhalb der Nachkommastellen
|
||||
von e (2.71828182845904523.....) zu ermitteln.
|
||||
|
||||
Da es deutlich schnneller geht mit einer vorgefertigten
|
||||
Datei zu suchen als die Nachkommastellen zu berechnen
|
||||
wird die Datei e.txt im Unterverzeichnis "data" benötigt.
|
||||
Diese Datei enthält die Zahl e mit den ersten 10 Millionen
|
||||
Nachkommastellen. Wer mehr Stellen braucht, kann sich mit
|
||||
dem Tool y-cruncher (http://numberworld.org/y-cruncher/)
|
||||
auch eine Datei mit deutlich mehr Nachkommastellen erstellen
|
||||
und e.txt damit ersetzen. (Bei 1 Millarde Stellen ist
|
||||
die Datei dann allerdings schon knapp 1 GB groß und
|
||||
die Abfrage dauert auch etwas länger)
|
||||
"""
|
||||
|
||||
eingabetext = Eingabe.get(1.0, END)
|
||||
eingabetext = eingabetext.rstrip()
|
||||
if eingabetext == "":
|
||||
Ausgabe.insert(1.0, hilfetext + "\n")
|
||||
else:
|
||||
try:
|
||||
eread = open("./data/e.txt", "r")
|
||||
except FileNotFoundError:
|
||||
Ausgabe.insert(1.0, hilfetext + "\n")
|
||||
else:
|
||||
estr = ""
|
||||
for zeile in eread:
|
||||
estr = estr + zeile.rstrip()
|
||||
eread.close()
|
||||
elen = len(estr) - 2
|
||||
try:
|
||||
zahlx = int(eingabetext)
|
||||
except ValueError:
|
||||
Ausgabe.insert(1.0, "Sorry aber ohne gültige Zahleneingabe funktioniert das nicht!\n", "re")
|
||||
else:
|
||||
pos = estr.find(eingabetext)
|
||||
if pos == -1:
|
||||
Ausgabe.insert(1.0, "Zahlenreihe in {} Nachkommastellen nicht zu finden.\n\n".format(elen), "re")
|
||||
else:
|
||||
Ausgabe.insert(1.0,
|
||||
"20 Stellen ab {}. Nachkommstelle: {}...\n\n".format(pos - 1, estr[pos:pos + 20]))
|
||||
Ausgabe.insert(1.0, 'erstes Vorkommen von Zahlenfolge "{}" ab {}. Nachkommastelle\n'.format(
|
||||
eingabetext.rstrip(), pos - 1))
|
||||
if elen >= zahlx > 0:
|
||||
Ausgabe.insert(1.0, "20 Stellen ab {}. Nachkommstelle:"
|
||||
" {}...\n\n".format(zahlx, estr[zahlx + 1:zahlx + 21]))
|
||||
Ausgabe.insert(1.0, "Die {}. Nachkommstelle: lautet {}\n".format(zahlx, estr[zahlx + 1]))
|
||||
else:
|
||||
Ausgabe.insert(1.0, "Die verwendete e.txt kennt leider nur {} Nachkommstellen.\n\n".format(elen),
|
||||
"re")
|
||||
Ausgabe.insert(1.0, "e (Eulersche Zahl)\n\n", "gr")
|
||||
|
||||
|
||||
def goldener_schnitt_suche():
|
||||
hilfetext = """HILFE: [phi(Goldener Schnitt) Nachkommastellensuche]
|
||||
Für die eingegebene Zahl/Zahlenreihe X wird versucht die
|
||||
entsprechende X. Nachkommastelle auszugeben und das erst
|
||||
Vorkommen der Zahlenreihe X innerhalb der Nachkommastellen
|
||||
von phi (1.6180339887498948482045...) zu ermitteln.
|
||||
|
||||
Da es deutlich schnneller geht mit einer vorgefertigten
|
||||
Datei zu suchen als die Nachkommastellen zu berechnen
|
||||
wird die Datei phi.txt im Unterverzeichnis "data" benötigt.
|
||||
Diese Datei enthält die Zahl phi mit den ersten 10 Millionen
|
||||
Nachkommastellen. Wer mehr Stellen braucht, kann sich mit
|
||||
dem Tool y-cruncher (http://numberworld.org/y-cruncher/)
|
||||
auch eine Datei mit deutlich mehr Nachkommastellen erstellen
|
||||
und phi.txt damit ersetzen. (Bei 1 Millarde Stellen ist
|
||||
die Datei dann allerdings schon knapp 1 GB groß und
|
||||
die Abfrage dauert auch etwas länger)
|
||||
"""
|
||||
|
||||
eingabetext = Eingabe.get(1.0, END)
|
||||
eingabetext = eingabetext.rstrip()
|
||||
if eingabetext == "":
|
||||
Ausgabe.insert(1.0, hilfetext + "\n")
|
||||
else:
|
||||
try:
|
||||
phiread = open("./data/phi.txt", "r")
|
||||
except ValueError:
|
||||
Ausgabe.insert(1.0, hilfetext + "\n")
|
||||
else:
|
||||
phistr = ""
|
||||
for zeile in phiread:
|
||||
phistr = phistr + zeile.rstrip()
|
||||
phiread.close()
|
||||
philen = len(phistr) - 2
|
||||
try:
|
||||
zahlx = int(eingabetext)
|
||||
except ValueError:
|
||||
Ausgabe.insert(1.0, "Sorry aber ohne gültige Zahleneingabe funktioniert das nicht!\n", "re")
|
||||
else:
|
||||
pos = phistr.find(eingabetext)
|
||||
if pos == -1:
|
||||
Ausgabe.insert(1.0, "Zahlenreihe in {} Nachkommastellen nicht zu finden.\n\n".format(philen), "re")
|
||||
else:
|
||||
Ausgabe.insert(1.0,
|
||||
"20 Stellen ab {}. Nachkommstelle: {}...\n\n".format(pos - 1, phistr[pos:pos + 20]))
|
||||
Ausgabe.insert(1.0, 'erstes Vorkommen von Zahlenfolge "{}" ab {}. Nachkommastelle\n'.format(
|
||||
eingabetext.rstrip(), pos - 1))
|
||||
if philen >= zahlx > 0:
|
||||
Ausgabe.insert(1.0, "20 Stellen ab {}. Nachkommstelle:"
|
||||
" {}...\n\n".format(zahlx, phistr[zahlx + 1:zahlx + 21]))
|
||||
Ausgabe.insert(1.0, "Die {}. Nachkommstelle: lautet {}\n".format(zahlx, phistr[zahlx + 1]))
|
||||
else:
|
||||
Ausgabe.insert(1.0, "Die verwendete pi.txt kennt leider nur {} Nachkommstellen.\n".format(philen),
|
||||
"re")
|
||||
Ausgabe.insert(1.0, "Phi (Goldener Schnitt)\n\n", "gr")
|
||||
|
||||
|
||||
def url_decode():
|
||||
|
||||
|
||||
Reference in New Issue
Block a user