kenny + primzahlen
This commit is contained in:
38
app/app.py
38
app/app.py
@@ -93,11 +93,32 @@ def auswahl_verarbeiten():
|
|||||||
elif auswahl == "BIN->ASCII-Text":
|
elif auswahl == "BIN->ASCII-Text":
|
||||||
st.session_state.output_text = tools.bin_to_ascii(text)
|
st.session_state.output_text = tools.bin_to_ascii(text)
|
||||||
st.session_state.map_data = None
|
st.session_state.map_data = None
|
||||||
elif auswahl == "REPLACE":
|
elif auswahl == "Zahlwortsuche-DE (0-12)":
|
||||||
st.session_state.output_text = tools.REPLACE(text)
|
st.session_state.output_text = tools.zahlwortsuche_de(text)
|
||||||
st.session_state.map_data = None
|
st.session_state.map_data = None
|
||||||
elif auswahl == "REPLACE":
|
elif auswahl == "Zahlwortsuche-EN (0-15)":
|
||||||
st.session_state.output_text = tools.REPLACE(text)
|
st.session_state.output_text = tools.zahlwortsuche_en(text)
|
||||||
|
st.session_state.map_data = None
|
||||||
|
elif auswahl == "KENNYspeak kodieren":
|
||||||
|
st.session_state.output_text = tools.kenny_kodieren(text)
|
||||||
|
st.session_state.map_data = None
|
||||||
|
elif auswahl == "KENNYspeak dekodieren":
|
||||||
|
st.session_state.output_text = tools.kenny_dekodieren(text)
|
||||||
|
st.session_state.map_data = None
|
||||||
|
elif auswahl == "KENNYspeak raten":
|
||||||
|
st.session_state.output_text = tools.kenny_raten(text)
|
||||||
|
st.session_state.map_data = None
|
||||||
|
elif auswahl == "Primz.Alpha dekodieren":
|
||||||
|
st.session_state.output_text = tools.primzahlalphabet_dekodieren(text)
|
||||||
|
st.session_state.map_data = None
|
||||||
|
elif auswahl == "ist (n.te) Primzahl?":
|
||||||
|
st.session_state.output_text = tools.primzahlpruefen(text)
|
||||||
|
st.session_state.map_data = None
|
||||||
|
elif auswahl == "zeige n.te Primzahl":
|
||||||
|
st.session_state.output_text = tools.nte_primzahl(text)
|
||||||
|
st.session_state.map_data = None
|
||||||
|
elif auswahl == "Primfaktorenzerlegung":
|
||||||
|
st.session_state.output_text = tools.primfaktoren(text)
|
||||||
st.session_state.map_data = None
|
st.session_state.map_data = None
|
||||||
elif auswahl == "REPLACE":
|
elif auswahl == "REPLACE":
|
||||||
st.session_state.output_text = tools.REPLACE(text)
|
st.session_state.output_text = tools.REPLACE(text)
|
||||||
@@ -156,6 +177,15 @@ option = st.sidebar.radio("hidden_label",
|
|||||||
"HEX->ASCII-Text",
|
"HEX->ASCII-Text",
|
||||||
"DEZ->ASCII-Text",
|
"DEZ->ASCII-Text",
|
||||||
"Octal->ASCII-Text",
|
"Octal->ASCII-Text",
|
||||||
|
"Zahlwortsuche-DE (0-12)",
|
||||||
|
"Zahlwortsuche-EN (0-15)",
|
||||||
|
"KENNYspeak kodieren",
|
||||||
|
"KENNYspeak dekodieren",
|
||||||
|
"KENNYspeak raten",
|
||||||
|
"Primz.Alpha dekodieren",
|
||||||
|
"ist (n.te) Primzahl?",
|
||||||
|
"zeige n.te Primzahl",
|
||||||
|
"Primfaktorenzerlegung",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
import math
|
import math
|
||||||
|
from re import match # für unkennify
|
||||||
|
import streamlit as st
|
||||||
|
|
||||||
# ***recursive quersummenfunktion***
|
# ***recursive quersummenfunktion***
|
||||||
def q_sum(n):
|
def q_sum(n):
|
||||||
@@ -20,6 +22,7 @@ def iq_sum(n):
|
|||||||
|
|
||||||
# ***produziert eine Liste mit Primzahlen kleiner als grenze***
|
# ***produziert eine Liste mit Primzahlen kleiner als grenze***
|
||||||
# ***nach dem Prinzip des "Sieb des Eratosthenes"***
|
# ***nach dem Prinzip des "Sieb des Eratosthenes"***
|
||||||
|
@st.cache_resource
|
||||||
def primzahlliste(grenze):
|
def primzahlliste(grenze):
|
||||||
primes = []
|
primes = []
|
||||||
is_prime = [True] * grenze
|
is_prime = [True] * grenze
|
||||||
@@ -36,6 +39,7 @@ def primzahlliste(grenze):
|
|||||||
|
|
||||||
|
|
||||||
# ***alle permutationen generieren***
|
# ***alle permutationen generieren***
|
||||||
|
@st.cache_resource
|
||||||
def all_perms(liste):
|
def all_perms(liste):
|
||||||
if len(liste) <= 1:
|
if len(liste) <= 1:
|
||||||
yield liste
|
yield liste
|
||||||
@@ -154,3 +158,24 @@ def rwig_to_coords(a, b, c):
|
|||||||
+ (c % 100000 - c % 10000) / 100000000
|
+ (c % 100000 - c % 10000) / 100000000
|
||||||
+ (b % 100000 - b % 10000) / 1000000000)
|
+ (b % 100000 - b % 10000) / 1000000000)
|
||||||
return round(lat, 5), round(lon, 5)
|
return round(lat, 5), round(lon, 5)
|
||||||
|
|
||||||
|
def unkennify(text):
|
||||||
|
# Funktion hier entnommen und angepasst: https://www.namesuppressed.com/software/kenny.py
|
||||||
|
decoded = ''
|
||||||
|
codemap = str.maketrans('MmPpFf', '001122')
|
||||||
|
n_len = len(text)
|
||||||
|
i = 0
|
||||||
|
while i + 3 <= n_len:
|
||||||
|
if match('[MmPpFf]{3,}', text[i:i + 3]):
|
||||||
|
num = int(text[i:i + 3].translate(codemap), 3) # 'mpf' -> '012' -> 5
|
||||||
|
cypher = chr(num + ord('a')) # 5 -> 'f'
|
||||||
|
if text[i].isupper():
|
||||||
|
cypher = cypher.upper()
|
||||||
|
decoded = decoded + cypher
|
||||||
|
i = i + 3
|
||||||
|
else:
|
||||||
|
decoded = decoded + text[i]
|
||||||
|
i = i + 1
|
||||||
|
if i < n_len:
|
||||||
|
decoded = decoded + text[i:]
|
||||||
|
return decoded
|
||||||
267
app/tools.py
267
app/tools.py
@@ -1,3 +1,4 @@
|
|||||||
|
from itertools import chain
|
||||||
import helper
|
import helper
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
|
|
||||||
@@ -674,19 +675,13 @@ def bin_to_ascii(eingabetext):
|
|||||||
ausgabetext += atxt
|
ausgabetext += atxt
|
||||||
return ausgabetext
|
return ausgabetext
|
||||||
|
|
||||||
'''
|
def zahlwortsuche_de(eingabetext):
|
||||||
def zahlwortsuche_de():
|
|
||||||
|
|
||||||
eingabetext = Eingabe.get(1.0, END)
|
|
||||||
eingabetext = eingabetext.rstrip()
|
eingabetext = eingabetext.rstrip()
|
||||||
if eingabetext == "":
|
if eingabetext == "":
|
||||||
Ausgabe.insert(1.0, """HILFE: [Zahlwortsuche DE 0-12]
|
return ("### Zahlwortsuche DE 0-12\n"
|
||||||
Diese Funktion versucht deutsche Zahlworte
|
"Diese Funktion versucht deutsche Zahlworte zwischen 0 und 12 in einem Text aufzuspüren. Da alle "
|
||||||
zwischen 0 und 12 in einem Text aufzuspüren.
|
"Zeichen ignoriert werden, welche keine Buchstaben sind, werden auch Zahlwörter gefunden welche sich "
|
||||||
Da alle Zeichen ignoriert werden, welche
|
"z.B. über zwei Worte verteilen.")
|
||||||
keine Buchstaben sind, werden auch Zahlwörter
|
|
||||||
gefunden welche sich z.B. über zwei Worte
|
|
||||||
verteilen.""" + "\n\n")
|
|
||||||
else:
|
else:
|
||||||
zahlen = ["null", "eins", "zwei", "drei", "vier", "fünf", "fuenf", "sechs", "sieben", "acht",
|
zahlen = ["null", "eins", "zwei", "drei", "vier", "fünf", "fuenf", "sechs", "sieben", "acht",
|
||||||
"neun", "zehn", "elf", "zwölf", "zwoelf", "zwanzig", "hundert", "tausend"]
|
"neun", "zehn", "elf", "zwölf", "zwoelf", "zwanzig", "hundert", "tausend"]
|
||||||
@@ -711,26 +706,21 @@ verteilen.""" + "\n\n")
|
|||||||
if tt:
|
if tt:
|
||||||
atxt = atxt + b
|
atxt = atxt + b
|
||||||
if atxt == "":
|
if atxt == "":
|
||||||
Ausgabe.insert(1.0, "Leider keine Zahlwörter gefunden!\n", "re")
|
return "Leider keine Zahlwörter gefunden!"
|
||||||
else:
|
else:
|
||||||
Ausgabe.insert(1.0, ntxt + "\n")
|
ausgabetext = "_Gefundene Zahlwörter:_ \n"
|
||||||
Ausgabe.insert(1.0, "Eingangstext:", "bu")
|
ausgabetext += atxt + " \n"
|
||||||
Ausgabe.insert(1.0, atxt + "\n\n")
|
ausgabetext += "_Eingangstext:_ \n"
|
||||||
Ausgabe.insert(1.0, "Gefundene Zahlwörter:", "bu")
|
ausgabetext += ntxt
|
||||||
|
return ausgabetext
|
||||||
|
|
||||||
|
def zahlwortsuche_en(eingabetext):
|
||||||
def zahlwortsuche_en():
|
|
||||||
|
|
||||||
eingabetext = Eingabe.get(1.0, END)
|
|
||||||
eingabetext = eingabetext.rstrip()
|
eingabetext = eingabetext.rstrip()
|
||||||
if eingabetext == "":
|
if eingabetext == "":
|
||||||
Ausgabe.insert(1.0, """HILFE: [Zahlwortsuche EN 0-15]
|
return ("### Zahlwortsuche EN 0-15\n"
|
||||||
Diese Funktion versucht englische Zahlworte
|
"Diese Funktion versucht englische Zahlworte zwischen 0 und 15 in einem Text aufzuspüren. "
|
||||||
zwischen 0 und 15 in einem Text aufzuspüren.
|
"Da alle Zeichen ignoriert werden, welche keine Buchstaben sind, werden auch Zahlwörter gefunden "
|
||||||
Da alle Zeichen ignoriert werden, welche
|
"welche sich z.B. über zwei Worte verteilen.")
|
||||||
keine Buchstaben sind, werden auch Zahlwörter
|
|
||||||
gefunden welche sich z.B. über zwei Worte
|
|
||||||
verteilen.""" + "\n\n")
|
|
||||||
else:
|
else:
|
||||||
zahlen = ["eleven", "twelve", "thirteen", "fourteen", "fifteen", "fourty", "sixty", "seventy",
|
zahlen = ["eleven", "twelve", "thirteen", "fourteen", "fifteen", "fourty", "sixty", "seventy",
|
||||||
"eighty", "ninety", "zero", "one", "two", "three", "four", "five", "six", "seven",
|
"eighty", "ninety", "zero", "one", "two", "three", "four", "five", "six", "seven",
|
||||||
@@ -756,15 +746,15 @@ verteilen.""" + "\n\n")
|
|||||||
if tt:
|
if tt:
|
||||||
atxt = atxt + b
|
atxt = atxt + b
|
||||||
if atxt == "":
|
if atxt == "":
|
||||||
Ausgabe.insert(1.0, "Leider keine Zahlwörter gefunden!\n", "re")
|
return "Leider keine Zahlwörter gefunden!"
|
||||||
else:
|
else:
|
||||||
Ausgabe.insert(1.0, ntxt + "\n")
|
ausgabetext = "_Gefundene Zahlwörter:_ \n"
|
||||||
Ausgabe.insert(1.0, "Eingangstext:", "bu")
|
ausgabetext += atxt + " \n"
|
||||||
Ausgabe.insert(1.0, atxt + "\n\n")
|
ausgabetext += "_Eingangstext:_ \n"
|
||||||
Ausgabe.insert(1.0, "Gefundene Zahlwörter:", "bu")
|
ausgabetext += ntxt
|
||||||
|
return ausgabetext
|
||||||
|
|
||||||
|
def kenny_kodieren(eingabetext):
|
||||||
def kenny_kodieren():
|
|
||||||
alphabet = {"a": "mmm", "b": "mmp", "c": "mmf", "d": "mpm", "e": "mpp", "f": "mpf", "g": "mfm", "h": "mfp",
|
alphabet = {"a": "mmm", "b": "mmp", "c": "mmf", "d": "mpm", "e": "mpp", "f": "mpf", "g": "mfm", "h": "mfp",
|
||||||
"i": "mff", "j": "pmm", "k": "pmp",
|
"i": "mff", "j": "pmm", "k": "pmp",
|
||||||
"l": "pmf", "m": "ppm", "n": "ppp", "o": "ppf", "p": "pfm", "q": "pfp", "r": "pff", "s": "fmm",
|
"l": "pmf", "m": "ppm", "n": "ppp", "o": "ppf", "p": "pfm", "q": "pfp", "r": "pff", "s": "fmm",
|
||||||
@@ -777,18 +767,12 @@ def kenny_kodieren():
|
|||||||
"Y": "Ffm", "Z": "Ffp", "Ä": "Mmmmpp",
|
"Y": "Ffm", "Z": "Ffp", "Ä": "Mmmmpp",
|
||||||
"Ö": "Ppfmpp", "Ü": "Fmfmpp"
|
"Ö": "Ppfmpp", "Ü": "Fmfmpp"
|
||||||
}
|
}
|
||||||
|
|
||||||
eingabetext = Eingabe.get(1.0, END)
|
|
||||||
eingabetext = eingabetext.rstrip()
|
eingabetext = eingabetext.rstrip()
|
||||||
if eingabetext == "":
|
if eingabetext == "":
|
||||||
Ausgabe.insert(1.0, """HILFE: [Kennyspeak codieren]
|
return ("### Kennyspeak kodieren\n"
|
||||||
Hilfe sie haben Kenny getötet.. ach nee er kann
|
"Hilfe sie haben Kenny getötet.. ach nee er kann ja noch seine unverständlichen m p f -Laute von "
|
||||||
ja noch seine unverständlichen m p f -Laute von
|
"sich geben und hier geht es darum normalen Text in genau diese Laute umzusetzen, wo jedem Buchstaben "
|
||||||
sich geben und hier geht es darum normalen
|
"A-Z eine 3 Zeichen-Kombination zugeordnet ist die sich aus m,p,f zusammensetzt.(a=mmm h=mfp x=fpf)")
|
||||||
Text in genau diese Laute umzusetzen, wo jedem
|
|
||||||
Buchstaben A-Z eine 3 Zeichen-Kombination
|
|
||||||
zugeordnet ist die sich aus m,p,f
|
|
||||||
zusammensetzt.(a=mmm h=mfp x=fpf)""" + "\n\n")
|
|
||||||
else:
|
else:
|
||||||
atxt = ""
|
atxt = ""
|
||||||
for b in eingabetext:
|
for b in eingabetext:
|
||||||
@@ -796,65 +780,34 @@ zusammensetzt.(a=mmm h=mfp x=fpf)""" + "\n\n")
|
|||||||
atxt = atxt + alphabet[b]
|
atxt = atxt + alphabet[b]
|
||||||
else:
|
else:
|
||||||
atxt = atxt + b
|
atxt = atxt + b
|
||||||
Ausgabe.insert(1.0, atxt + "\n")
|
return atxt
|
||||||
|
|
||||||
|
def kenny_dekodieren(eingabetext):
|
||||||
def unkennify(text):
|
|
||||||
# Funktion hier entnommen und angepasst: https://www.namesuppressed.com/software/kenny.py
|
|
||||||
decoded = ''
|
|
||||||
codemap = str.maketrans('MmPpFf', '001122')
|
|
||||||
n_len = len(text)
|
|
||||||
i = 0
|
|
||||||
while i + 3 <= n_len:
|
|
||||||
if match('[MmPpFf]{3,}', text[i:i + 3]):
|
|
||||||
num = int(text[i:i + 3].translate(codemap), 3) # 'mpf' -> '012' -> 5
|
|
||||||
cypher = chr(num + ord('a')) # 5 -> 'f'
|
|
||||||
if text[i].isupper():
|
|
||||||
cypher = cypher.upper()
|
|
||||||
decoded = decoded + cypher
|
|
||||||
i = i + 3
|
|
||||||
else:
|
|
||||||
decoded = decoded + text[i]
|
|
||||||
i = i + 1
|
|
||||||
if i < n_len:
|
|
||||||
decoded = decoded + text[i:]
|
|
||||||
return decoded
|
|
||||||
|
|
||||||
|
|
||||||
def kenny_dekodieren():
|
|
||||||
|
|
||||||
eingabetext = Eingabe.get(1.0, END)
|
|
||||||
eingabetext = eingabetext.rstrip()
|
eingabetext = eingabetext.rstrip()
|
||||||
if eingabetext == "":
|
if eingabetext == "":
|
||||||
Ausgabe.insert(1.0, """HILFE: [Kennyspeak decodieren]
|
return ("### Kennyspeak dekodieren\n"
|
||||||
Wie? Du verstehst Kenny's mpf-Gebrabbel nicht?
|
"Wie? Du verstehst Kenny's mpf-Gebrabbel nicht? Na gut da kann ich helfen!! Nicht kennifiziertes "
|
||||||
Na gut da kann ich helfen!!
|
"wird unverändert ausgegeben.")
|
||||||
Nicht kennifiziertes wird unverändert ausgegeben.""" + "\n\n")
|
|
||||||
else:
|
else:
|
||||||
Ausgabe.insert(1.0, unkennify(eingabetext) + "\n")
|
return helper.unkennify(eingabetext)
|
||||||
|
|
||||||
|
def kenny_raten(eingabetext):
|
||||||
def kenny_raten():
|
|
||||||
wbk = {"000": "a", "001": "b", "002": "c", "010": "d", "011": "e", "012": "f", "020": "g", "021": "h",
|
wbk = {"000": "a", "001": "b", "002": "c", "010": "d", "011": "e", "012": "f", "020": "g", "021": "h",
|
||||||
"022": "i", "100": "j", "101": "k", "102": "l", "110": "m", "111": "n", "112": "o", "120": "p",
|
"022": "i", "100": "j", "101": "k", "102": "l", "110": "m", "111": "n", "112": "o", "120": "p",
|
||||||
"121": "q", "122": "r", "200": "s", "201": "t", "202": "u", "210": "v", "211": "w", "212": "x",
|
"121": "q", "122": "r", "200": "s", "201": "t", "202": "u", "210": "v", "211": "w", "212": "x",
|
||||||
"220": "y", "221": "z"
|
"220": "y", "221": "z"
|
||||||
}
|
}
|
||||||
|
|
||||||
eingabetext = Eingabe.get(1.0, END)
|
|
||||||
eingabetext = eingabetext.rstrip()
|
eingabetext = eingabetext.rstrip()
|
||||||
if eingabetext == "":
|
if eingabetext == "":
|
||||||
Ausgabe.insert(1.0, """HILFE: [KENNYspeak raten]
|
return ("### KENNYspeak raten\n"
|
||||||
Diese Funktion dient zum dekodieren von kennyfizierten
|
"Diese Funktion dient zum dekodieren von kennyfizierten Texten, bei denen die 3 Buchstaben mpf "
|
||||||
Texten, bei denen die 3 Buchstaben mpf vertauscht oder durch
|
"vertauscht oder durch andere Zeichen ersetzt wurden. Hierzu werden vor der Dekodierung die 3 "
|
||||||
andere Zeichen ersetzt wurden. Hierzu werden vor der
|
"häufigsten Zeichen im Text ermittelt und alle anderen Zeichen entfernt bevor die 6 möglichen "
|
||||||
Dekodierung die 3 häufigsten Zeichen im Text ermittelt und
|
"Lösungen ausgegeben werden. (Falls zum kodieren die Zahlen 0,1 oder 2 verwendet wurden, werden "
|
||||||
alle anderen Zeichen entfernt bevor die 6 möglichen Lösungen
|
"sie durch Buchstaben a,b,c.. ersetzt)")
|
||||||
ausgegeben werden.
|
|
||||||
(Falls zum kodieren die Zahlen 0,1 oder 2 verwendet wurden,
|
|
||||||
werden sie durch Buchstaben a,b,c.. ersetzt)""" + "\n\n")
|
|
||||||
else:
|
else:
|
||||||
wtxt = ""
|
wtxt = ""
|
||||||
|
ausgabetext = ""
|
||||||
for b in eingabetext:
|
for b in eingabetext:
|
||||||
if b == chr(9) or b == chr(32) or b == chr(10):
|
if b == chr(9) or b == chr(32) or b == chr(10):
|
||||||
continue # erstmal leerzeichen, tab, linefeed raus
|
continue # erstmal leerzeichen, tab, linefeed raus
|
||||||
@@ -886,7 +839,7 @@ werden sie durch Buchstaben a,b,c.. ersetzt)""" + "\n\n")
|
|||||||
cwtxt = cwtxt.replace(abc3[i], j)
|
cwtxt = cwtxt.replace(abc3[i], j)
|
||||||
abc3[i] = j
|
abc3[i] = j
|
||||||
break
|
break
|
||||||
for p in all_perms(abc3):
|
for p in helper.all_perms(abc3):
|
||||||
txt0 = cwtxt.replace(p[0], "0")
|
txt0 = cwtxt.replace(p[0], "0")
|
||||||
txt1 = txt0.replace(p[1], "1")
|
txt1 = txt0.replace(p[1], "1")
|
||||||
txt2 = txt1.replace(p[2], "2")
|
txt2 = txt1.replace(p[2], "2")
|
||||||
@@ -895,25 +848,20 @@ werden sie durch Buchstaben a,b,c.. ersetzt)""" + "\n\n")
|
|||||||
tri = txt2[i:i + 3]
|
tri = txt2[i:i + 3]
|
||||||
if tri in wbk:
|
if tri in wbk:
|
||||||
atxt = atxt + wbk[tri]
|
atxt = atxt + wbk[tri]
|
||||||
Ausgabe.insert(1.0, "{}\n".format(atxt))
|
ausgabetext += f"_{p}_ \n"
|
||||||
Ausgabe.insert(1.0, "{}\n".format(p), "bu")
|
ausgabetext += f"{atxt} \n"
|
||||||
|
return ausgabetext
|
||||||
|
|
||||||
|
def primzahlalphabet_dekodieren(eingabetext):
|
||||||
def primzahlalphabet_dekodieren():
|
|
||||||
|
|
||||||
eingabetext = Eingabe.get(1.0, END)
|
|
||||||
eingabetext = eingabetext.rstrip()
|
eingabetext = eingabetext.rstrip()
|
||||||
if eingabetext == "":
|
if eingabetext == "":
|
||||||
Ausgabe.insert(1.0, """HILFE: [Primzahlalphabet dekodieren]
|
return ("### Primzahlalphabet dekodieren\n"
|
||||||
Hier können Primzahlen kleiner als 1 Million
|
"Hier können Primzahlen kleiner als 1 Million in Buchstaben umgewandelt werden. Es wird dabei davon "
|
||||||
in Buchstaben umgewandelt werden. Es wird dabei
|
"ausgegangen, daß den Primzahlen wiederholend die Buchstaben A-Z zugeordnet werden,2=A 3=B 5=C 7=D "
|
||||||
davon ausgegangen, daß den Primzahlen
|
"11=E ... 97=Y 101=Z 103=A 107=B ... usw.")
|
||||||
wiederholend die Buchstaben A-Z zugeordnet
|
|
||||||
werden,2=A 3=B 5=C 7=D 11=E.......
|
|
||||||
....97=Y 101=Z 103=A 107=B ... usw.""" + "\n\n")
|
|
||||||
else:
|
else:
|
||||||
grenze = 1000000
|
grenze = 1000000
|
||||||
primes = primzahlliste(grenze)
|
primes = helper.primzahlliste(grenze)
|
||||||
pdict = {}
|
pdict = {}
|
||||||
bz = 65
|
bz = 65
|
||||||
for p in primes:
|
for p in primes:
|
||||||
@@ -932,14 +880,14 @@ werden,2=A 3=B 5=C 7=D 11=E.......
|
|||||||
try:
|
try:
|
||||||
ausz = int(eingabetext)
|
ausz = int(eingabetext)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
Ausgabe.insert(1.0, "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!\n",
|
return "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!"
|
||||||
"re")
|
|
||||||
else:
|
else:
|
||||||
if ausz in pdict:
|
if ausz in pdict:
|
||||||
Ausgabe.insert(1.0, pdict[ausz] + "\n")
|
return pdict[ausz]
|
||||||
else:
|
else:
|
||||||
Ausgabe.insert(1.0, eingabetext + " ist keine Primzahl oder größer als 1 Million!\n")
|
return eingabetext + " ist keine Primzahl oder größer als 1 Million!"
|
||||||
else:
|
else:
|
||||||
|
ausgabetext = ""
|
||||||
txt = eingabetext.split(se)
|
txt = eingabetext.split(se)
|
||||||
atxt = ""
|
atxt = ""
|
||||||
ignor = ""
|
ignor = ""
|
||||||
@@ -953,111 +901,84 @@ werden,2=A 3=B 5=C 7=D 11=E.......
|
|||||||
atxt = atxt + pdict[az]
|
atxt = atxt + pdict[az]
|
||||||
else:
|
else:
|
||||||
ignor = ignor + str(z) + " "
|
ignor = ignor + str(z) + " "
|
||||||
Ausgabe.insert(1.0, atxt + "\n")
|
|
||||||
Ausgabe.insert(1.0, "umgewandelte Zahlen:\n", "bu")
|
|
||||||
if ignor != "":
|
if ignor != "":
|
||||||
Ausgabe.insert(1.0, ignor + "\n")
|
ausgabetext += "_ignoriert wurde:_ \n"
|
||||||
Ausgabe.insert(1.0, "ignoriert wurde:\n", "re")
|
ausgabetext += ignor + " \n"
|
||||||
|
ausgabetext += "_umgewandelte Zahlen:_ \n"
|
||||||
|
ausgabetext += atxt
|
||||||
|
return ausgabetext
|
||||||
|
|
||||||
|
def primzahlpruefen(eingabetext):
|
||||||
def primzahlpruefen():
|
|
||||||
|
|
||||||
eingabetext = Eingabe.get(1.0, END)
|
|
||||||
eingabetext = eingabetext.rstrip()
|
eingabetext = eingabetext.rstrip()
|
||||||
if eingabetext == "":
|
if eingabetext == "":
|
||||||
Ausgabe.insert(1.0, """HILFE: [Primzahl prüfen]
|
return ("### Primzahl prüfen\n"
|
||||||
Für eine eingegebene Zahl wird überprüft,
|
"Für eine eingegebene Zahl wird überprüft, ob es sich um eine Primzahl handelt. Ist die eingegebene "
|
||||||
ob es sich um eine Primzahl handelt.
|
"Zahl eine Primzahl wird auch informiert, die wievielte Primzahl es ist. Zahlen über 1299709 (der "
|
||||||
Ist die eingegebene Zahl eine Primzahl
|
"100000. Primzahl) werden abgelehnt.")
|
||||||
wird auch informiert, die wievielte
|
|
||||||
Primzahl es ist.
|
|
||||||
Zahlen über 1299709 (der 100000. Primzahl)
|
|
||||||
werden abgelehnt.""" + "\n\n")
|
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
ausz = int(eingabetext)
|
ausz = int(eingabetext)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
Ausgabe.insert(1.0, "Keine Zahl erkannt!\n", "re")
|
return "Keine Zahl erkannt!"
|
||||||
else:
|
else:
|
||||||
if ausz > 1299709:
|
if ausz > 1299709:
|
||||||
Ausgabe.insert(1.0,
|
return ("Sorry, aber ich mag nur die ersten 100000 Primzahlen, das sind Zahlen bis maximal "
|
||||||
"Sorry, aber ich mag nur die ersten 100000 Primzahlen,\ndas sind Zahlen"
|
"1299709 !")
|
||||||
" bis maximal 1299709 !\n", "re")
|
primes = helper.primzahlliste(1299710)
|
||||||
return
|
|
||||||
primes = primzahlliste(1299710)
|
|
||||||
if ausz not in primes:
|
if ausz not in primes:
|
||||||
Ausgabe.insert(1.0, "{} ist keine Primzahl\n".format(ausz))
|
return f"{ausz} ist keine Primzahl"
|
||||||
else:
|
else:
|
||||||
Ausgabe.insert(1.0, "{} ist die {}. Primzahl\n".format(ausz, primes.index(ausz) + 1))
|
return f"{ausz} ist die {primes.index(ausz) + 1}. Primzahl"
|
||||||
|
|
||||||
|
def nte_primzahl(eingabetext):
|
||||||
def nte_primzahl():
|
|
||||||
|
|
||||||
eingabetext = Eingabe.get(1.0, END)
|
|
||||||
eingabetext = eingabetext.rstrip()
|
eingabetext = eingabetext.rstrip()
|
||||||
if eingabetext == "":
|
if eingabetext == "":
|
||||||
Ausgabe.insert(1.0, """HILFE: [n.te Primzahl]
|
return ("### n.te Primzahl\n"
|
||||||
Du willst wissen wie z.B. die 1000. Primzahl lautet,
|
"Du willst wissen wie z.B. die 1000. Primzahl lautet, dann bist du hier genau richtig. Die Funktion "
|
||||||
dann bist du hier genau richtig.
|
"liefert maximal die 100000. Primzahl.")
|
||||||
Die Funktion liefert maximal die 100000. Primzahl.
|
|
||||||
""" + "\n\n")
|
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
ausz = int(eingabetext)
|
ausz = int(eingabetext)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
Ausgabe.insert(1.0, "Keine Zahl erkannt!\n", "re")
|
return "Keine Zahl erkannt!"
|
||||||
else:
|
|
||||||
if ausz > 100000:
|
if ausz > 100000:
|
||||||
Ausgabe.insert(1.0,
|
return "Sorry, aber ich mag nur die ersten 100000 Primzahlen, das sind Zahlen bis maximal 1299709 !"
|
||||||
"Sorry, aber ich mag nur die ersten 100000 Primzahlen,\ndas sind Zahlen bis"
|
else:
|
||||||
" maximal 1299709 !\n", "re")
|
primes = helper.primzahlliste(1299710)
|
||||||
return
|
return f"Die {ausz}. Primzahl lautet:{primes[ausz - 1]}"
|
||||||
primes = primzahlliste(1299710)
|
|
||||||
Ausgabe.insert(1.0, "Die {}. Primzahl lautet:{}\n".format(ausz, primes[ausz - 1]))
|
|
||||||
|
|
||||||
|
def primfaktoren(eingabetext):
|
||||||
def primfaktoren():
|
|
||||||
hilfetext = """HILFE: [Primfaktorenzerlegung]
|
|
||||||
Für die eingegebene Zahl werden die Primfaktoren ermittelt
|
|
||||||
und ausgegeben. Sollte die Zahl einen Primfaktoren haben, welcher
|
|
||||||
größer als 100 Millionen ist, wird die Suche abgebrochen, da die
|
|
||||||
Suche sonst zu lange dauert.
|
|
||||||
Die Funktion läßt sich damit also auch, bei Zahlen kleiner als 200
|
|
||||||
Millionen, dazu benutzen um festzustellen, ob die eingegebene Zahl eine
|
|
||||||
Primzahl ist.
|
|
||||||
"""
|
|
||||||
|
|
||||||
eingabetext = Eingabe.get(1.0, END)
|
|
||||||
eingabetext = eingabetext.rstrip()
|
eingabetext = eingabetext.rstrip()
|
||||||
if eingabetext == "":
|
if eingabetext == "":
|
||||||
Ausgabe.insert(1.0, hilfetext + "\n")
|
return ("### Primfaktorenzerlegung\n"
|
||||||
|
"Für die eingegebene Zahl werden die Primfaktoren ermittelt und ausgegeben. Sollte die Zahl einen "
|
||||||
|
"Primfaktoren haben, welcher größer als 100 Millionen ist, wird die Suche abgebrochen, da die Suche "
|
||||||
|
"sonst zu lange dauert. Die Funktion läßt sich damit also auch, bei Zahlen kleiner als 200 Millionen, "
|
||||||
|
"dazu benutzen um festzustellen, ob die eingegebene Zahl eine Primzahl ist.")
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
n = int(eingabetext)
|
n = int(eingabetext)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
Ausgabe.insert(1.0, "Es konnte leider keine Zahl erkannt werden.\n", "re")
|
return "Es konnte leider keine Zahl erkannt werden."
|
||||||
return
|
|
||||||
faktoren = []
|
faktoren = []
|
||||||
for i in chain([2], range(3, n // 2 + 1, 2)):
|
for i in chain([2], range(3, n // 2 + 1, 2)):
|
||||||
if i > 100000000:
|
if i > 100000000:
|
||||||
Ausgabe.insert(1.0,
|
return ("Sorry, aber die Primfaktorensuche wurde abgebrochen, da mindestens 1 Faktor größer als "
|
||||||
"Sorry, aber die Primfaktorensuche wurde abgebrochen,\nda mindestens 1 Faktor"
|
"100 Millionen ist.")
|
||||||
" größer als 100 Millionen ist.\n", "re")
|
|
||||||
return
|
|
||||||
while n % i == 0:
|
while n % i == 0:
|
||||||
faktoren.append(i)
|
faktoren.append(i)
|
||||||
n = n // i
|
n = n // i
|
||||||
if i > n:
|
if i > n:
|
||||||
break
|
break
|
||||||
out = "Die Zahl {} hat folgende Primfaktoren:\n".format(eingabetext)
|
out = f"_Die Zahl {eingabetext} hat folgende Primfaktoren:_ \n"
|
||||||
if not faktoren:
|
if not faktoren:
|
||||||
Ausgabe.insert(1.0, "Die Zahl {} ist eine Primzahl!!\n".format(eingabetext))
|
return f"Die Zahl {eingabetext} ist eine Primzahl!!"
|
||||||
else:
|
else:
|
||||||
for z in faktoren:
|
for z in faktoren:
|
||||||
out += str(z) + ", "
|
out += str(z) + ", "
|
||||||
return Ausgabe.insert(1.0, out[:-2] + "\n")
|
return out[:-2]
|
||||||
|
|
||||||
|
|
||||||
|
'''
|
||||||
def deztohexoctbin():
|
def deztohexoctbin():
|
||||||
seperator = ("|,", "_", "/", ";", ",")
|
seperator = ("|,", "_", "/", ";", ",")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user