PSE, Nak-Nak, Navajo, PI

and patching favicon.ico and index.html in streamlit-lib
This commit is contained in:
2025-07-23 20:51:02 +02:00
parent 8b5cd8c10e
commit aa153c4ec9
5 changed files with 261 additions and 233 deletions

View File

@@ -1,6 +1,7 @@
from itertools import chain
from itertools import chain # für primfaktoren zerlegung
import helper
import pandas as pd
from urllib.parse import unquote as urllib_parse_unquote # für nak-nak
def funktion_mit_karte(text,param):
"""Verarbeitet Text und liefert Daten für eine Karte (z.B. Potsdam Zentrum)."""
@@ -978,7 +979,6 @@ def primfaktoren(eingabetext):
out += str(z) + ", "
return out[:-2]
def dez_to_hex_oct_bin(eingabetext):
seperator = ("|,", "_", "/", ";", ",")
eingabetext = eingabetext.rstrip()
@@ -1025,7 +1025,6 @@ def dez_to_hex_oct_bin(eingabetext):
ausgabetext += f"_BIN:_ {bintxt[:-1]} \n"
return ausgabetext
def hex_to_dez_oct_bin(eingabetext):
seperator = ("|,", "_", "/", ";", ",")
eingabetext = eingabetext.rstrip()
@@ -1221,7 +1220,6 @@ def tomtom_to_abc(eingabetext):
atxt = atxt + alphabet[sign]
return atxt
def text_to_slashpipe(eingabetext):
alphabet = {"a": "| ", "b": "|\\\\ ", "c": "|| ", "d": "|/ ", "e": "\\\\ ", "f": "||\\\\ ", "g": "||| ",
"h": "\\\\\\\\ ", "i": "/ ", "j": "|\\\\\\\\ ", "k": "//|| ", "l": "|\\\\/ ", "m": "|\\\\| ",
@@ -1276,8 +1274,7 @@ def slashpipe_to_text(eingabetext):
atxt = atxt + alphabet[sign]
return atxt
'''
def periodensystem():
def periodensystem(eingabetext):
seperator = ("|,", "_", ".", "-", "/", ";", ",")
pse = {1: "H", 2: "He", 3: "Li", 4: "Be", 5: "B", 6: "C", 7: "N", 8: "O", 9: "F", 10: "Ne", 11: "Na", 12: "Mg",
13: "Al",
@@ -1294,23 +1291,16 @@ def periodensystem():
103: "Lr", 104: "Rf", 105: "Db", 106: "Sg", 107: "Bh", 108: "Hs", 109: "Mt", 110: "Ds", 111: "Rg", 112: "Cn",
113: "Nh", 114: "Fl", 115: "Mc", 116: "Lv", 117: "Ts", 118: "Og"}
um_pse = {v: k for k, v in pse.items()}
eingabetext = Eingabe.get(1.0, END)
eingabetext = eingabetext.rstrip()
if eingabetext == "":
Ausgabe.insert(1.0, """HILFE: [Periodensystem: Ordnungszahl<->Symbol]
Eingegebenen Ordnungszahlen 1-118 aus dem Periodensystem der
Elemente werden in die ihnen zugehörigen Elementsymbole umgewandelt
und anschließend als Text ausgegeben, außerdem erscheint noch eine
Ausgabe bei welcher nur die Anfangsbuchstaben der Symbole ausgegeben
werden.
Werden in der Eingabe Symbole (z.B. N, He) erkannt werde diese
zusammen mit ihren Ordnungszahlen ausgegeben.
Als Trennungszeichen zwischen den Zahlen und/oder Symbolen sind
folgende Zeichen erlaubt: | , _ . - / ; , und Leerzeichen.
Bei Verwendung von Leerzeichen sollten möglichst nur 1 Leerzeichen
zwischen den Zahlen verwendet werden (überzählige Leerzeichen werden
sonst als nicht erkannte Zeichen behandelt).""" + "\n\n")
return ("### Periodensystem: Ordnungszahl<->Symbol\n"
"Eingegebenen Ordnungszahlen 1-118 aus dem Periodensystem der Elemente werden in die ihnen zugehörigen "
"Elementsymbole umgewandelt und anschließend als Text ausgegeben, außerdem erscheint noch eine Ausgabe "
"bei welcher nur die Anfangsbuchstaben der Symbole ausgegeben werden. Werden in der Eingabe Symbole "
"(z.B. N, He) erkannt werde diese zusammen mit ihren Ordnungszahlen ausgegeben. Als Trennungszeichen "
"zwischen den Zahlen und/oder Symbolen sind folgende Zeichen erlaubt: | , _ . - / ; , und Leerzeichen. "
"Bei Verwendung von Leerzeichen sollten möglichst nur 1 Leerzeichen zwischen den Zahlen verwendet "
"werden (überzählige Leerzeichen werden sonst als nicht erkannte Zeichen behandelt).")
else:
se = ""
for s in seperator:
@@ -1323,12 +1313,13 @@ sonst als nicht erkannte Zeichen behandelt).""" + "\n\n")
ausz = int(eingabetext)
except ValueError:
if eingabetext in um_pse:
Ausgabe.insert(1.0, str(um_pse[eingabetext]) + "\n")
return str(um_pse[eingabetext])
else:
Ausgabe.insert(1.0, "Keine gültige Eingabe erkannt!\n", "re")
return "Keine gültige Eingabe erkannt!"
else:
Ausgabe.insert(1.0, pse[ausz] + "\n")
return pse[ausz]
else:
ausgabetext = ""
txt = eingabetext.split(se)
atxt = ""
atxt2 = ""
@@ -1344,159 +1335,34 @@ sonst als nicht erkannte Zeichen behandelt).""" + "\n\n")
ignor = ignor + z + " "
else:
if az in pse:
atxt = atxt + pse[az]
atxt = atxt + pse[az] + " "
atxt2 = atxt2 + pse[az][0]
else:
ignor = ignor + z + " "
if atxt3 != "":
Ausgabe.insert(1.0, " " + atxt3 + "\n")
Ausgabe.insert(1.0, "Symbol:Ordnungszahl:", "bu")
if atxt2 != "":
Ausgabe.insert(1.0, " " + atxt2 + "\n")
Ausgabe.insert(1.0, "Nur Anfangsbuchstaben:", "bu")
if atxt != "":
Ausgabe.insert(1.0, " " + atxt + "\n")
Ausgabe.insert(1.0, "Symbole:", "bu")
if ignor != "":
Ausgabe.insert(1.0, ignor + "\n")
Ausgabe.insert(1.0, "Achtung nicht erkannte Zeichen:\n", "re")
ausgabetext += "_Achtung nicht erkannte Zeichen:_ \n" + ignor + " \n"
if atxt != "":
ausgabetext += "_Symbole:_ \n" + atxt + " \n"
if atxt2 != "":
ausgabetext += "_Nur Anfangsbuchstaben:_ \n" + atxt2 + " \n"
if atxt3 != "":
ausgabetext += "_Symbol:Ordnungszahl_ \n" + atxt3 + " \n"
return ausgabetext
def brainfuck_interpreter():
eingabetext = Eingabe.get(1.0, END)
eingabetext = eingabetext.rstrip()
if eingabetext == "":
Ausgabe.insert(1.0, """HILFE: [Brainfuckinterpreter]
!!!!!ACHTUNG DIESE FUNKTION KANN DAS PROGRAMM ZUM ABSTURZ BRINGEN!!!!!
Brainfuck gehört zu den sogenannten esoterischen
Programmiersprachen. Der Programmcode setzt sich
hier aus den 8 Zeichen ><+-.,[]' zusammen.
Diese Funktion führt einen derartigen Programmcode
aus, und gibt das Ergebnis aus, welches bei Geocaches
meist eine kurze Nachricht oder die Koordinaten sind.
Für eine umgekehrte Umwandlung von Text in Brainfuckcode
gibt es im Internet genügend Möglichkeiten zu finden.
Folgender Code wäre z.B. "Hello World!" in Brainfuck:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]
>++.>+.+++++++..+++.>++.<<+++++++++++++++.
>.+++.------.--------.>+.>.""" + "\n\n")
else:
# ein kleiner feiner Code von https://gist.github.com/kates/986792
c = [0] * 300000
p = 0
loop = []
rv = []
ts = list(eingabetext)
li = len(ts)
i = 0
while i < li:
t = ts[i]
if t == ">":
p += 1
elif t == "<":
p -= 1
elif t == "+":
c[p] += 1
elif t == "-":
c[p] -= 1
elif t == ".":
rv.append(chr(c[p]))
elif t == ",":
pass
elif t == "[":
if c[p] == 0:
while ts[i] != "]":
i += 1
loop.pop()
else:
loop.append(i - 1)
elif t == "]":
i = loop[-1]
i += 1
Ausgabe.insert(1.0, "".join(rv) + "\n")
def ook_interpreter():
eingabetext = Eingabe.get(1.0, END)
eingabetext = eingabetext.rstrip()
if eingabetext == "":
Ausgabe.insert(1.0, """HILFE: [Ook-Interpreter]
!!!!!ACHTUNG DIESE FUNKTION KANN DAS PROGRAMM ZUM ABSTURZ BRINGEN!!!!!
Ook ist eine Abwandlung von Brainfuck wobei die
8 Zeichen von Brainfuck hier durch eine Kombination
von je zwei der folgenden 3 Satzzeichen .!? ersetzt
werden. Dabei wird dann je das Wort Ook vor die Satzzeichen
geschrieben. z.B.: Ook! Ook? Ook. Ook!
Da Ook auch durch andere Wörter ersetzt oder auch
ganz ohne Wörter (ShortOok) auftaucht ignoriert diese
Funktion alle anderen Zeichen außer .!? bevor versucht wird
den Code auszuführen.""" + "\n\n")
else:
ookzeichen = [".", "!", "?"]
ooktext = ""
for z in eingabetext: # erstmal Short-Ook draus machen
if z in ookzeichen:
ooktext = ooktext + z
ookbf = {"..": "+", "!!": "-", ".?": ">", "?.": "<", "!?": "[", "?!": "]", "!.": ".", ".!": ","}
bftext = ""
for o in range(0, len(ooktext), 2): # jetzt in Brainfuck umwandeln
ooz = ooktext[o:o + 2]
if ooz in ookbf:
bftext = bftext + ookbf[ooz]
c = [0] * 300000
p = 0
loop = []
rv = []
ts = list(bftext)
li = len(ts)
i = 0
while i < li:
t = ts[i]
if t == ">":
p += 1
elif t == "<":
p -= 1
elif t == "+":
c[p] += 1
elif t == "-":
c[p] -= 1
elif t == ".":
rv.append(chr(c[p]))
elif t == ",":
pass
elif t == "[":
if c[p] == 0:
while ts[i] != "]":
i += 1
loop.pop()
else:
loop.append(i - 1)
elif t == "]":
i = loop[-1]
i += 1
Ausgabe.insert(1.0, "".join(rv) + "\n")
def naknaktotext():
def naknak_to_text(eingabetext):
nakwb = {"Nak": "0", "Naknak": "6", "nanak": "B", "Nanak": "1", "Naknaknak": "7", "naknak": "C", "Nananak": "2",
"Nak.": "8", "nak!": "D", "Nanananak": "3", "Naknak.": "9", "nak.": "E", "Nak?": "4", "Naknaknaknak": "A",
"naknaknak": "F", "nak?": "5"}
eingabetext = Eingabe.get(1.0, END)
eingabetext = eingabetext.rstrip()
if eingabetext == "":
Ausgabe.insert(1.0, """HILFE: [NakNak to Text]
Nak-Nak / Entensprache / Duck Speak ist eine Spaßsprache,
welche vom Owner der Website schnatterente.net entwickelt
wurde.
Diese Funktion übersetzt das Geschnatter in verständliche
Buchstaben/Zeichen.
!!Bitte unbedingt die Groß- und Kleinschreibung beibehalten!!
Wer diesen Quatsch unbedingt umgekehrt übersetzten will,
findet auf hier den passenden Übersetzer:
http://uebersetzer.schnatterente.net""" + "\n\n")
return ("### NakNak to Text\n"
"Nak-Nak / Entensprache / Duck Speak ist eine Spaßsprache, welche vom Owner der Website "
"[https://schnatterente.net](https://web.archive.org/web/20230807065421/https://www.schnatterente.net/)"
" entwickelt wurde. Diese Funktion übersetzt das Geschnatter in verständliche Buchstaben/Zeichen. "
"!!Bitte unbedingt die Groß- und Kleinschreibung beibehalten!! Wer diesen Quatsch unbedingt umgekehrt "
"übersetzten will, wird wohl etwas suchen müssen, da der Original-Übersetzer, der unter "
"http://uebersetzer.schnatterente.net erreichbar war, nicht mehr online ist und ich ganz bestimmt "
"keinen hier integrieren werde.")
else:
txt = eingabetext.split()
utxt = ""
@@ -1509,11 +1375,9 @@ http://uebersetzer.schnatterente.net""" + "\n\n")
utxt = utxt + nakwb[nak]
z = 1
atxt = urllib_parse_unquote(utxt)
Ausgabe.insert(1.0, atxt + "\n")
Ausgabe.insert(1.0, "dekodiertes Geschnatter:", "bu")
return "_dekodiertes Geschnatter:_ \n" + atxt
def navajototext():
def navajo_to_text(eingabetext):
nabc = {"WOL-LA-CHEE": "A", "BE-LA-SANA": "A", "TSE-NILL": "A", "NA-HASH-CHID": "B", "SHUSH": "B", "TOISH-JEH": "B",
"MOASI": "C", "TLA-GIN": "C", "BA-GOSHI": "C", "BE": "D", "CHINDI": "D", "LHA-CHA-EH": "D", "AH-JAH": "E",
"DZEH": "E", "AH-NAH": "E", "CHUO": "F", "TSA-E-DONIN-EE": "F", "MA-E": "F", "AH-TAD": "G", "KLIZZIE": "G",
@@ -1526,25 +1390,19 @@ def navajototext():
"DIBEH": "S", "KLESH": "S", "D-AH": "T", "A-WOH": "T", "THAN-ZIE": "T", "SHI-DA": "U", "NO-DA-IH": "U",
"A-KEH-DI-GLINI": "V", "GLOE-IH": "W", "AL-NA-AS-DZOH": "X", "AL-AN-AS-DZOH": "X", "TSAH-AS-ZIH": "Y",
"BESH-DO-TLIZ": "Z", "BESH-DO-GLIZ": "Z", "BE-TKAH": " "}
eingabetext = Eingabe.get(1.0, END)
eingabetext = eingabetext.rstrip()
if eingabetext == "":
Ausgabe.insert(1.0, """HILFE: [Navajo-ABC to Text]
Die Sprache der Navajo-Indianer wurde im zweiten Weltkrieg für
den verschlüßelten Funkverkehr eingesetzt. Vorteile waren, daß
nahezu niemand außer Navajo-Volk die Sprache verstand und es keine
schriftlichen Aufzeichnungen über die Sprache gab. Das Alphabet
und die Codewörter wurden dabei von den Codesprechern (natürlich
Navajo's) auswendig gelernt.
Die Dekodierfunktion hier übersetzt das Codealphabet (A-Z), bei welchem es
auch so ist, daß unterschiedliche Worte für den selben Buchstaben stehen,
in normalen Text. Leider existieren leicht unterschiedliche Alphabete was
die Wörter bzw. deren Schreibweise angeht im Netz, mit welchen codiert wird,
weshalb ich hier nur die Dekodierung anbiete.
weitere Codewörter und Erklärungen gibt es z.B. hier:
https://ww2db.com/other.php?other_id=29
http://math.ucsd.edu/~crypto/Projects/RobertoSandoval/NavajoWindtalkers.pdf""" + "\n\n")
return ("### Navajo-ABC to Text\n"
"Die Sprache der Navajo-Indianer wurde im zweiten Weltkrieg für den verschlüßelten Funkverkehr "
"eingesetzt. Vorteile waren, daß nahezu niemand außer Navajo-Volk die Sprache verstand und es keine "
"schriftlichen Aufzeichnungen über die Sprache gab. Das Alphabet und die Codewörter wurden dabei von "
"den Codesprechern (natürlich Navajo's) auswendig gelernt. Die Dekodierfunktion hier übersetzt das "
"Codealphabet (A-Z), bei welchem es auch so ist, daß unterschiedliche Worte für den selben Buchstaben "
"stehen, in normalen Text. Leider existieren leicht unterschiedliche Alphabete was die Wörter bzw. "
"deren Schreibweise angeht im Netz, mit welchen codiert wird, weshalb ich hier nur die Dekodierung "
"anbiete. weitere Codewörter und Erklärungen gibt es z.B. hier: "
"https://ww2db.com/other.php?other_id=29 oder hier: "
"http://math.ucsd.edu/~crypto/Projects/RobertoSandoval/NavajoWindtalkers.pdf")
else:
txt = eingabetext.split()
atxt = ""
@@ -1552,38 +1410,21 @@ http://math.ucsd.edu/~crypto/Projects/RobertoSandoval/NavajoWindtalkers.pdf""" +
w = wort.upper()
if w in nabc:
atxt = atxt + nabc[w]
Ausgabe.insert(1.0, atxt + "\n")
Ausgabe.insert(1.0, "dekodierter Text:", "bu")
return "_dekodierter Text:_ \n" + atxt
def pi_suche():
hilfetext = """HILFE: [PI 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 PI (3.141592653589793238462643...) zu ermitteln.
Da es deutlich schnneller geht mit einer vorgefertigten
Datei zu suchen als die Nachkommastellen zu berechnen
wird die Datei pi.txt im Unterverzeichnis "data" benötigt.
Diese Datei enthält die Zahl PI 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 pi.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)
def pi_suche(eingabetext):
eingabetext = eingabetext.rstrip()
if eingabetext == "":
Ausgabe.insert(1.0, hilfetext + "\n")
return ("### PI 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 PI "
"(3.141592653589793238462643...) zu ermitteln. Aus Performance- und Speicherplatzgründen ist die Suche "
"auf die ersten 10 Millionen Nachkommastellen beschränkt.")
else:
try:
piread = open("./data/pi.txt", "r")
except FileNotFoundError:
Ausgabe.insert(1.0, hilfetext + "\n")
return "Sorry es scheint die Datei pi.txt zu fehlen, welche von dieser Funktion benötigt wird."
else:
pistr = ""
for zeile in piread:
@@ -1593,34 +1434,31 @@ die Abfrage dauert auch etwas länger)
try:
zahlx = int(eingabetext)
except ValueError:
Ausgabe.insert(1.0, "Sorry aber ohne gültige Zahleneingabe funktioniert das nicht!\n", "re")
return "Sorry aber ohne gültige Zahleneingabe funktioniert das nicht!"
else:
ausgabetext = "_PI (Kreiszahl)_ \n"
pos = pistr.find(eingabetext)
if pos == -1:
Ausgabe.insert(1.0, "Zahlenreihe in {} Nachkommastellen nicht zu finden.\n\n".format(pilen), "re")
else:
Ausgabe.insert(1.0,
"20 Stellen ab {}. Nachkommstelle: {}...\n\n".format(pos - 1, pistr[pos:pos + 20]))
Ausgabe.insert(1.0, 'erstes Vorkommen von Zahlenfolge "{}" ab {}. Nachkommastelle\n'.format(
eingabetext.rstrip(), pos - 1))
if pilen >= zahlx > 0:
Ausgabe.insert(1.0, "20 Stellen ab {}. Nachkommstelle: "
"{}...\n\n".format(zahlx, pistr[zahlx + 1:zahlx + 21]))
Ausgabe.insert(1.0, "Die {}. Nachkommstelle: lautet {}\n".format(zahlx, pistr[zahlx + 1]))
ausgabetext += (f"_Die {zahlx}. Nachkommstelle lautet:_ {pistr[zahlx + 1]} \n_20 Stellen ab "
f"{zahlx}. Nachkommstelle:_ {pistr[zahlx + 1:zahlx + 21]}... \n")
else:
Ausgabe.insert(1.0, "Die verwendete pi.txt kennt leider nur {} Nachkommstellen.\n\n".format(pilen),
"re")
Ausgabe.insert(1.0, "PI (Kreiszahl)\n\n", "gr")
ausgabetext += f"_Die verwendete pi.txt kennt leider nur {pilen:,} Nachkommstellen._ \n"
if pos == -1:
ausgabetext += f"_Zahlenreihe in {pilen:,} 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'{pistr[pos:pos + 20]}...')
return ausgabetext
'''
def anagramm_suche_de():
hilfetext = """HILFE: [Anagrammsuche mit Wörterbuch]
Diese Funktion benutzt die deutsche Wörterbuchdatei german.dic
Diese Funktion benutzt eine deutsche Wörterbuchdatei
vom Project https://sourceforge.net/projects/germandict um
zu überprüfen ob sich unter Verwendung aller eingegebenen
Buchstaben Wörter bilden lassen, welche im Wörtebuch vorkommen.
Die Datei german.dic muß sich dafür im Unterverzeichnis "data"
befinden.
"""
eingabetext = Eingabe.get(1.0, END)
@@ -3717,4 +3555,120 @@ für alle Zeilenanzahlen von 2-12.""" + "\n\n")
except ValueError:
Ausgabe.insert(1.0, "Schlüsselzahl fehlerhaft oder kleiner als 2.\n", "re")
def brainfuck_interpreter():
eingabetext = Eingabe.get(1.0, END)
eingabetext = eingabetext.rstrip()
if eingabetext == "":
Ausgabe.insert(1.0, """HILFE: [Brainfuckinterpreter]
!!!!!ACHTUNG DIESE FUNKTION KANN DAS PROGRAMM ZUM ABSTURZ BRINGEN!!!!!
Brainfuck gehört zu den sogenannten esoterischen
Programmiersprachen. Der Programmcode setzt sich
hier aus den 8 Zeichen ><+-.,[]' zusammen.
Diese Funktion führt einen derartigen Programmcode
aus, und gibt das Ergebnis aus, welches bei Geocaches
meist eine kurze Nachricht oder die Koordinaten sind.
Für eine umgekehrte Umwandlung von Text in Brainfuckcode
gibt es im Internet genügend Möglichkeiten zu finden.
Folgender Code wäre z.B. "Hello World!" in Brainfuck:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]
>++.>+.+++++++..+++.>++.<<+++++++++++++++.
>.+++.------.--------.>+.>.""" + "\n\n")
else:
# ein kleiner feiner Code von https://gist.github.com/kates/986792
c = [0] * 300000
p = 0
loop = []
rv = []
ts = list(eingabetext)
li = len(ts)
i = 0
while i < li:
t = ts[i]
if t == ">":
p += 1
elif t == "<":
p -= 1
elif t == "+":
c[p] += 1
elif t == "-":
c[p] -= 1
elif t == ".":
rv.append(chr(c[p]))
elif t == ",":
pass
elif t == "[":
if c[p] == 0:
while ts[i] != "]":
i += 1
loop.pop()
else:
loop.append(i - 1)
elif t == "]":
i = loop[-1]
i += 1
Ausgabe.insert(1.0, "".join(rv) + "\n")
def ook_interpreter():
eingabetext = Eingabe.get(1.0, END)
eingabetext = eingabetext.rstrip()
if eingabetext == "":
Ausgabe.insert(1.0, """HILFE: [Ook-Interpreter]
!!!!!ACHTUNG DIESE FUNKTION KANN DAS PROGRAMM ZUM ABSTURZ BRINGEN!!!!!
Ook ist eine Abwandlung von Brainfuck wobei die
8 Zeichen von Brainfuck hier durch eine Kombination
von je zwei der folgenden 3 Satzzeichen .!? ersetzt
werden. Dabei wird dann je das Wort Ook vor die Satzzeichen
geschrieben. z.B.: Ook! Ook? Ook. Ook!
Da Ook auch durch andere Wörter ersetzt oder auch
ganz ohne Wörter (ShortOok) auftaucht ignoriert diese
Funktion alle anderen Zeichen außer .!? bevor versucht wird
den Code auszuführen.""" + "\n\n")
else:
ookzeichen = [".", "!", "?"]
ooktext = ""
for z in eingabetext: # erstmal Short-Ook draus machen
if z in ookzeichen:
ooktext = ooktext + z
ookbf = {"..": "+", "!!": "-", ".?": ">", "?.": "<", "!?": "[", "?!": "]", "!.": ".", ".!": ","}
bftext = ""
for o in range(0, len(ooktext), 2): # jetzt in Brainfuck umwandeln
ooz = ooktext[o:o + 2]
if ooz in ookbf:
bftext = bftext + ookbf[ooz]
c = [0] * 300000
p = 0
loop = []
rv = []
ts = list(bftext)
li = len(ts)
i = 0
while i < li:
t = ts[i]
if t == ">":
p += 1
elif t == "<":
p -= 1
elif t == "+":
c[p] += 1
elif t == "-":
c[p] -= 1
elif t == ".":
rv.append(chr(c[p]))
elif t == ",":
pass
elif t == "[":
if c[p] == 0:
while ts[i] != "]":
i += 1
loop.pop()
else:
loop.append(i - 1)
elif t == "]":
i = loop[-1]
i += 1
Ausgabe.insert(1.0, "".join(rv) + "\n")
'''