diff --git a/app/app.py b/app/app.py index 35d8977..bb81765 100644 --- a/app/app.py +++ b/app/app.py @@ -272,7 +272,12 @@ def auswahl_verarbeiten(): elif "ADFGVX dekodieren" in auswahl: st.session_state.output_text = tools.adfgvx_dekodieren(text, additional_parameter) st.session_state.map_data = None - + elif "Brainfuck-Interpreter" in auswahl: + st.session_state.output_text = tools.brainfuck_interpreter(text) + st.session_state.map_data = None + elif "Ook-Interpreter" in auswahl: + st.session_state.output_text = tools.ook_interpreter(text) + st.session_state.map_data = None # Standardwerte im Session State initialisieren if 'option' not in st.session_state: @@ -370,6 +375,8 @@ option = st.sidebar.radio("hidden_label", ":green[ADFGX dekodieren]", ":green[ADFGVX kodieren]", ":green[ADFGVX dekodieren]", + ":green-badge[Brainfuck-Interpreter]", + ":green-badge[Ook-Interpreter]", ), key='option', on_change=auswahl_verarbeiten, diff --git a/app/hilfetexte.py b/app/hilfetexte.py index 25dc025..fffc6f2 100644 --- a/app/hilfetexte.py +++ b/app/hilfetexte.py @@ -279,7 +279,7 @@ wortsuche_de = ("### Wortsuche mit Wörterbuch DE\n" "Beispiel: \n" "Ge*ca**i** -> Geocaching \n" "ge*ca**i** -> Geocaching \n" - "T*****dose -> Tupperdose, Tabaksdose" + "T*****dose -> Tupperdose, Tabaksdose \n" "Diese Funktion nutzt dafür die deutsche Wörterbuchdatei vom Project " "https://sourceforge.net/projects/germandict") @@ -584,9 +584,25 @@ adfgx = ('Die ADFGX-Chiffre arbeitet mit zwei Passwörtern, wobei jedes für je 'ersten Schritt aufgefüllt wird. Entweder in alphabetischer Reihenfolge A->Z oder umgekehrt Z->A.') adfgx_kodieren = f"### HILFE: ADFGX kodieren\n{adfgx}" adfgx_dekodieren = f"### HILFE: ADFGX dekodieren\n{adfgx}" - adfgvx = (f'Die ADFGVX-Chiffre erweitert das 5x5-Schlüsselquadrat der ADFGX-Chiffre ersten Kodierungsschritt auf 6x6 ' f'so, dass das komplette Alphabet und die Zahlen 0-9 verwendet werden können. \n' f'Alles andere funktioniert wie bei ... \n \n__ADFGX:__ \n{adfgx}') adfgvx_kodieren = f"### HILFE: ADFGVX kodieren\n{adfgvx}" adfgvx_dekodieren = f"### HILFE: ADFGVX dekodieren\n{adfgvx}" + +brainfuck_interpreter = ("### Brainfuck-Interpreter\n" + "Brainfuck gehört zu den sogenannten esoterischen Programmiersprachen. \n" + "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. \n" + "Folgender Code wäre z.B. _Hello World!_ in Brainfuck: \n" + "`++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++." + "------.--------.>+.>.`") + +ook_interpreter = ("### Ook-Interpreter\n" + "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.") diff --git a/app/tools.py b/app/tools.py index 938e601..b42b268 100644 --- a/app/tools.py +++ b/app/tools.py @@ -2614,26 +2614,10 @@ def adfgvx_dekodieren(eingabetext, pw): ausgabetext += f":blue[dekodiert mit Variante 9-0,Z-A:] \n{klartext_90za}" return ausgabetext -# noch nicht implementierte Funktionen: -''' -def brainfuck_interpreter(): - eingabetext = Eingabe.get(1.0, END) +def brainfuck_interpreter(eingabetext): 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") + return hilfetexte.brainfuck_interpreter else: # ein kleiner feiner Code von https://gist.github.com/kates/986792 c = [0] * 300000 @@ -2667,24 +2651,13 @@ Folgender Code wäre z.B. "Hello World!" in Brainfuck: elif t == "]": i = loop[-1] i += 1 - Ausgabe.insert(1.0, "".join(rv) + "\n") + return "".join(rv) -def ook_interpreter(): - eingabetext = Eingabe.get(1.0, END) +def ook_interpreter(eingabetext): 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") + return hilfetexte.ook_interpreter else: ookzeichen = [".", "!", "?"] ooktext = "" @@ -2728,5 +2701,4 @@ den Code auszuführen.""" + "\n\n") elif t == "]": i = loop[-1] i += 1 - Ausgabe.insert(1.0, "".join(rv) + "\n") -''' + return "".join(rv)