rewrite brainfuck ook and add encoding for them

This commit is contained in:
2025-08-08 23:48:32 +02:00
parent b2adc2a73c
commit 9cda38d35e
3 changed files with 51 additions and 83 deletions

View File

@@ -272,11 +272,17 @@ 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)
elif "Brainfuck -> Text" in auswahl:
st.session_state.output_text = tools.brainfuck_to_text(text)
st.session_state.map_data = None
elif "Ook-Interpreter" in auswahl:
st.session_state.output_text = tools.ook_interpreter(text)
elif "Text -> Brainfuck" in auswahl:
st.session_state.output_text = tools.text_to_brainfuck(text)
st.session_state.map_data = None
elif "Ook -> Text" in auswahl:
st.session_state.output_text = tools.ook_to_text(text)
st.session_state.map_data = None
elif "Text -> Ook" in auswahl:
st.session_state.output_text = tools.text_to_ook(text)
st.session_state.map_data = None
# Standardwerte im Session State initialisieren
@@ -375,8 +381,10 @@ option = st.sidebar.radio("hidden_label",
":green[ADFGX dekodieren]",
":green[ADFGVX kodieren]",
":green[ADFGVX dekodieren]",
":green-badge[Brainfuck-Interpreter]",
":green-badge[Ook-Interpreter]",
":green-badge[Brainfuck -> Text]",
":green-badge[Text -> Brainfuck]",
":green-badge[Ook -> Text]",
":green-badge[Text -> Ook]",
),
key='option',
on_change=auswahl_verarbeiten,

View File

@@ -6,6 +6,7 @@ import hilfetexte
import pandas as pd
from urllib.parse import unquote as urllib_parse_unquote # für nak-nak
import binascii # für base64_ascii
import brainfuckery
def cesar_all(eingabetext):
eingabetext = eingabetext.rstrip()
@@ -2614,91 +2615,50 @@ def adfgvx_dekodieren(eingabetext, pw):
ausgabetext += f":blue[dekodiert mit Variante 9-0,Z-A:] \n{klartext_90za}"
return ausgabetext
def brainfuck_interpreter(eingabetext):
def brainfuck_to_text(eingabetext):
eingabetext = eingabetext.rstrip()
if eingabetext == "":
return hilfetexte.brainfuck_interpreter
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
return "".join(rv)
return brainfuckery.Brainfuckery().interpret(eingabetext)
def text_to_brainfuck(eingabetext):
eingabetext = eingabetext.rstrip()
if eingabetext == "":
return hilfetexte.brainfuck_interpreter
else:
return brainfuckery.Brainfuckery().convert(eingabetext)
def ook_interpreter(eingabetext):
def ook_to_text(eingabetext):
eingabetext = eingabetext.rstrip()
if eingabetext == "":
return hilfetexte.ook_interpreter
else:
ookzeichen = [".", "!", "?"]
ooktext = ""
ook_zeichen = [".", "!", "?"]
ook_text = ""
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
return "".join(rv)
if z in ook_zeichen:
ook_text = ook_text + z
ook_bf_dict = {"..": "+", "!!": "-", ".?": ">", "?.": "<", "!?": "[", "?!": "]", "!.": ".", ".!": ","}
bf_text = ""
for o in range(0, len(ook_text), 2): # jetzt in Brainfuck umwandeln
ooz = ook_text[o:o + 2]
if ooz in ook_bf_dict:
bf_text = bf_text + ook_bf_dict[ooz]
return brainfuckery.Brainfuckery().interpret(bf_text)
def text_to_ook(eingabetext):
eingabetext = eingabetext.rstrip()
if eingabetext == "":
return hilfetexte.ook_interpreter
else:
bf_text = brainfuckery.Brainfuckery().convert(eingabetext)
ook_bf_dict = {"..": "+", "!!": "-", ".?": ">", "?.": "<", "!?": "[", "?!": "]", "!.": ".", ".!": ","}
bf_ook_dict = {v: k for k, v in ook_bf_dict.items()}
short_ook = ""
for b in bf_text:
short_ook += bf_ook_dict[b]
ook_txt = ""
for z in short_ook:
ook_txt += f"Ook{z} "
return f":blue[Short-Ook:] \n{short_ook} \n \n:blue[Ook:] \n{ook_txt}"

Binary file not shown.