Einzelfunktionenexperimentierverzeichnis in git integriert
This commit is contained in:
1
.idea/Mysteryhelfer_pyCharm.iml
generated
1
.idea/Mysteryhelfer_pyCharm.iml
generated
@@ -2,7 +2,6 @@
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/experimentierbereich" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
|
||||
1
.idea/encodings.xml
generated
1
.idea/encodings.xml
generated
@@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding">
|
||||
<file url="file://$PROJECT_DIR$/HTML/impressum.html" charset="windows-1252" />
|
||||
<file url="file://$PROJECT_DIR$/Versionsgeschichte.txt" charset="windows-1252" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -0,0 +1,69 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf8 -*-
|
||||
|
||||
# PW1 WIKIPEDIA
|
||||
# PW2 BEOBACHTUNGSLISTE
|
||||
# ausgabe_az09 FAFGA DDAFD DVAFA DGGXA VAGDG GDGDF ADFAF FAAVG ADAVG XAAVF FAVDA GAGGG GVVAD GFADF DAFDD DFDGA GAFGV DGAVF FDDGG DGXFV DDDVA DFVFF DGGGV FXDVG GGGFV D
|
||||
# ausgabe_90za VAVGA DDAVD XVAVA DGVDA VAGDG GXGDV AXVAV VAAVG AXAFG DAAFV FAVXA GAGGG GFFAD GVAXV XAVXX XVXGA GAVGV XGAVV VDXGG DGDVV XXXVA DVVVV XGGGF VDXVG GGGVF X
|
||||
|
||||
|
||||
# text="FAFGA DDAFD DVAFA DGGXA VAGDG GDGDF ADFAF FAAVG ADAVG XAAVF FAVDA GAGGG GVVAD GFADF DAFDD DFDGA GAFGV DGAVF FDDGG DGXFV DDDVA DFVFF DGGGV FXDVG GGGFV D"
|
||||
text = "VAVGA DDAVD XVAVA DGVDA VAGDG GXGDV AXVAV VAAVG AXAFG DAAFV FAVXA GAGGG GFFAD GVAXV XAVXX XVXGA GAVGV XGAVV VDXGG DGDVV XXXVA DVVVV XGGGF VDXVG GGGVF X"
|
||||
PW = "wikipedia, beobachtungsliste"
|
||||
# PW auf Komma prüfen!!!
|
||||
|
||||
RN = ["AA", "AD", "AF", "AG", "AV", "AX", "DA", "DD", "DF", "DG", "DV", "DX", "FA", "FD", "FF", "FG", "FV", "FX", "GA",
|
||||
"GD", "GF", "GG", "GV", "GX", "VA", "VD", "VF", "VG", "VV", "VX", "XA", "XD", "XF", "XG", "XV", "XX"]
|
||||
alpha_az09 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
||||
alpha_90za = "9876543210ZYXWVUTSRQPONMLKJIHGFEDCBA"
|
||||
text = text.upper()
|
||||
PW = PW.upper()
|
||||
PW = PW.split(",")
|
||||
PW1az09 = ""
|
||||
for b in PW[0]+alpha_az09:
|
||||
if b in alpha_az09 and b not in PW1az09:
|
||||
PW1az09 += b
|
||||
PW190za = ""
|
||||
for b in PW[0]+alpha_90za:
|
||||
if b in alpha_90za and b not in PW190za:
|
||||
PW190za += b
|
||||
PW2 = ""
|
||||
for i in PW[1]:
|
||||
if i in alpha_az09:
|
||||
PW2 += i
|
||||
ctext = ""
|
||||
for i in text:
|
||||
if i in alpha_az09:
|
||||
ctext += i
|
||||
WBaz09 = {}
|
||||
for i in range(36):
|
||||
WBaz09[RN[i]] = PW1az09[i]
|
||||
WB90za = {}
|
||||
for i in range(36):
|
||||
WB90za[RN[i]] = PW190za[i]
|
||||
ret = ['_']*len(ctext)
|
||||
lt, lp = len(ctext), len(PW2)
|
||||
t1 = [(PW2[i], i) for i in range(len(PW2))]
|
||||
ind = [q[1] for q in sorted(t1)]
|
||||
upto = 0
|
||||
for i in range(len(PW2)):
|
||||
tic = int(lt / lp)
|
||||
if ind[i] < lt % lp:
|
||||
tic += 1
|
||||
ret[ind[i]::lp] = ctext[upto:upto+tic]
|
||||
upto += tic
|
||||
ctext = ''.join(ret)
|
||||
klartext_az09 = ""
|
||||
for i in range(0, len(ctext), 2):
|
||||
bi = ctext[i:i+2]
|
||||
if bi in WBaz09:
|
||||
klartext_az09 += WBaz09[bi]
|
||||
klartext_90za = ""
|
||||
for i in range(0, len(ctext), 2):
|
||||
bi = ctext[i:i+2]
|
||||
if bi in WB90za:
|
||||
klartext_90za += WB90za[bi]
|
||||
print("PW1", PW[0])
|
||||
print("PW2", PW2)
|
||||
print("klartext_az", klartext_az09)
|
||||
print("klartext_za", klartext_90za)
|
||||
@@ -0,0 +1,80 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf8 -*-
|
||||
# fertig
|
||||
text = "Munitionierung beschleunigen Punkt Soweit nicht eingesehen auch bei Tag"
|
||||
PW = "wikipedia, beobachtungsliste"
|
||||
# PW auf Komma prüfen!!!
|
||||
|
||||
RN = ["AA", "AD", "AF", "AG", "AV", "AX", "DA", "DD", "DF", "DG", "DV", "DX", "FA", "FD", "FF", "FG", "FV", "FX", "GA",
|
||||
"GD", "GF", "GG", "GV", "GX", "VA", "VD", "VF", "VG", "VV", "VX", "XA", "XD", "XF", "XG", "XV", "XX"]
|
||||
alpha_az09 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
||||
alpha_90za = "9876543210ZYXWVUTSRQPONMLKJIHGFEDCBA"
|
||||
text = text.upper()
|
||||
PW = PW.upper()
|
||||
PW = PW.split(",")
|
||||
PW1az09 = ""
|
||||
for b in PW[0] + alpha_az09:
|
||||
if b in alpha_az09 and b not in PW1az09:
|
||||
PW1az09 += b
|
||||
PW190za = ""
|
||||
for b in PW[0] + alpha_90za:
|
||||
if b in alpha_90za and b not in PW190za:
|
||||
PW190za += b
|
||||
PW2 = ""
|
||||
for i in PW[1]:
|
||||
if i in alpha_az09:
|
||||
PW2 += i
|
||||
klartext = ""
|
||||
for i in text:
|
||||
if i in alpha_az09:
|
||||
klartext += i
|
||||
WBaz09 = {}
|
||||
for i in range(36):
|
||||
WBaz09[PW1az09[i]] = RN[i]
|
||||
WB90za = {}
|
||||
for i in range(36):
|
||||
WB90za[PW190za[i]] = RN[i]
|
||||
ctext1az09 = ""
|
||||
for b in klartext:
|
||||
ctext1az09 += WBaz09[b]
|
||||
ctext190za = ""
|
||||
for b in klartext:
|
||||
ctext190za += WB90za[b]
|
||||
ctext2az09 = []
|
||||
for i in range(len(PW2)):
|
||||
ctext2az09.append([PW2[i] + str(i + 10)])
|
||||
for i in range(len(ctext1az09)):
|
||||
ctext2az09[i % len(PW2)].append(ctext1az09[i])
|
||||
ctext2az09.sort()
|
||||
ausgabe_az09 = ""
|
||||
z = 1
|
||||
for i in ctext2az09:
|
||||
for j in range(len(i) - 1):
|
||||
if z == 5:
|
||||
ausgabe_az09 += i[j + 1] + " "
|
||||
z = 1
|
||||
else:
|
||||
ausgabe_az09 += i[j + 1]
|
||||
z += 1
|
||||
|
||||
ctext290za = []
|
||||
for i in range(len(PW2)):
|
||||
ctext290za.append([PW2[i] + str(i + 10)])
|
||||
for i in range(len(ctext190za)):
|
||||
ctext290za[i % len(PW2)].append(ctext190za[i])
|
||||
ctext290za.sort()
|
||||
ausgabe_90za = ""
|
||||
z = 1
|
||||
for i in ctext290za:
|
||||
for j in range(len(i) - 1):
|
||||
if z == 5:
|
||||
ausgabe_90za += i[j + 1] + " "
|
||||
z = 1
|
||||
else:
|
||||
ausgabe_90za += i[j + 1]
|
||||
z += 1
|
||||
|
||||
print("PW1", PW[0])
|
||||
print("PW2", PW2)
|
||||
print("ausgabe_az09", ausgabe_az09)
|
||||
print("ausgabe_90za", ausgabe_90za)
|
||||
@@ -0,0 +1,70 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf8 -*-
|
||||
|
||||
# ausgabe_za FFFGA DDDFD DXAXA DAGDA XAXDX XFXDF DFGAG FAAXG AGAAG DAAAF FAXFA AAAGX XAAAD GGAFG FAXDG DXFAA XAGXX FXAXF XDDXG DGDFX FGFXA DFXFX FAXGA GDFXG XXXFA D
|
||||
# ausgabe_za GXGGA DDDGD XXAFA DDFAA XAFDF FXFDG DXGAG GAAXF AGADF AAADG FAXXA DADFF FDDAD FGAXG XAFXG XFXDA FAGFX XFAXG FDXFF DFAGX XGXXA DGXGF XDFFD GAXXF FFFGD X
|
||||
# text="Munitionierung beschleunigen Punkt Soweit nicht eingesehen auch bei Tag"
|
||||
# PW="wikipedia, beobachtungsliste"
|
||||
|
||||
|
||||
text = "GXGGA DDDGD XXAFA DDFAA XAFDF FXFDG DXGAG GAAXF AGADF AAADG FAXXA DADFF FDDAD FGAXG XAFXG XFXDA FAGFX XFAXG FDXFF DFAGX XGXXA DGXGF XDFFD GAXXF FFFGD X"
|
||||
PW = "wikipedia, beobachtungsliste"
|
||||
# PW auf Komma prüfen!!!
|
||||
|
||||
RN = ["AA", "AD", "AF", "AG", "AX", "DA", "DD", "DF", "DG", "DX", "FA", "FD", "FF", "FG", "FX", "GA", "GD", "GF", "GG",
|
||||
"GX", "XA", "XD", "XF", "XG", "XX"]
|
||||
alpha_az = "ABCDEFGHIKLMNOPQRSTUVWXYZ" # j wird durch i ersetzt
|
||||
alpha_za = "ZYXWVUTSRQPONMLKIHGFEDCBA"
|
||||
text = text.upper()
|
||||
textij = text.replace("J", "I")
|
||||
PW = PW.upper()
|
||||
PW = PW.replace("J", "I")
|
||||
PW = PW.split(",")
|
||||
PW1az = ""
|
||||
for b in PW[0] + alpha_az:
|
||||
if b in alpha_az and b not in PW1az:
|
||||
PW1az += b
|
||||
PW1za = ""
|
||||
for b in PW[0] + alpha_za:
|
||||
if b in alpha_za and b not in PW1za:
|
||||
PW1za += b
|
||||
PW2 = ""
|
||||
for i in PW[1]:
|
||||
if i in alpha_az:
|
||||
PW2 += i
|
||||
ctext = ""
|
||||
for i in textij:
|
||||
if i in alpha_az:
|
||||
ctext += i
|
||||
WBaz = {}
|
||||
for i in range(25):
|
||||
WBaz[RN[i]] = PW1az[i]
|
||||
WBza = {}
|
||||
for i in range(25):
|
||||
WBza[RN[i]] = PW1za[i]
|
||||
ret = ['_'] * len(ctext)
|
||||
lt, lp = len(ctext), len(PW2)
|
||||
t1 = [(PW2[i], i) for i in range(len(PW2))]
|
||||
ind = [q[1] for q in sorted(t1)]
|
||||
upto = 0
|
||||
for i in range(len(PW2)):
|
||||
tic = int(lt / lp)
|
||||
if ind[i] < lt % lp:
|
||||
tic += 1
|
||||
ret[ind[i]::lp] = ctext[upto:upto + tic]
|
||||
upto += tic
|
||||
ctext = ''.join(ret)
|
||||
klartext_az = ""
|
||||
for i in range(0, len(ctext), 2):
|
||||
bi = ctext[i:i + 2]
|
||||
if bi in WBaz:
|
||||
klartext_az += WBaz[bi]
|
||||
klartext_za = ""
|
||||
for i in range(0, len(ctext), 2):
|
||||
bi = ctext[i:i + 2]
|
||||
if bi in WBza:
|
||||
klartext_za += WBza[bi]
|
||||
print("PW1", PW[0])
|
||||
print("PW2", PW2)
|
||||
print("klartext_az", klartext_az)
|
||||
print("klartext_za", klartext_za)
|
||||
82
EinzelfunktionenExperimentierbereich/ADFGX/ADFGX-kodieren.py
Normal file
82
EinzelfunktionenExperimentierbereich/ADFGX/ADFGX-kodieren.py
Normal file
@@ -0,0 +1,82 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf8 -*-
|
||||
|
||||
text = "Munitionierung beschleunigen Punkt Soweit nicht eingesehen auch bei Tag"
|
||||
PW = "wikipedia, beobachtungsliste"
|
||||
# PW auf Komma prüfen!!!
|
||||
|
||||
RN = ["AA", "AD", "AF", "AG", "AX", "DA", "DD", "DF", "DG", "DX", "FA", "FD", "FF", "FG", "FX", "GA", "GD", "GF", "GG",
|
||||
"GX", "XA", "XD", "XF", "XG", "XX"]
|
||||
alpha_az = "ABCDEFGHIKLMNOPQRSTUVWXYZ" # j wird durch i ersetzt
|
||||
alpha_za = "ZYXWVUTSRQPONMLKIHGFEDCBA"
|
||||
text = text.upper()
|
||||
textij = text.replace("J", "I")
|
||||
PW = PW.upper()
|
||||
PW = PW.replace("J", "I")
|
||||
PW = PW.split(",")
|
||||
PW1az = ""
|
||||
for b in PW[0] + alpha_az:
|
||||
if b in alpha_az and b not in PW1az:
|
||||
PW1az += b
|
||||
PW1za = ""
|
||||
for b in PW[0] + alpha_za:
|
||||
if b in alpha_za and b not in PW1za:
|
||||
PW1za += b
|
||||
PW2 = ""
|
||||
for i in PW[1]:
|
||||
if i in alpha_az:
|
||||
PW2 += i
|
||||
klartext = ""
|
||||
for i in text:
|
||||
if i in alpha_az:
|
||||
klartext += i
|
||||
WBaz = {}
|
||||
for i in range(25):
|
||||
WBaz[PW1az[i]] = RN[i]
|
||||
WBza = {}
|
||||
for i in range(25):
|
||||
WBza[PW1za[i]] = RN[i]
|
||||
ctext1az = ""
|
||||
for b in klartext:
|
||||
ctext1az += WBaz[b]
|
||||
ctext1za = ""
|
||||
for b in klartext:
|
||||
ctext1za += WBza[b]
|
||||
ctext2az = []
|
||||
for i in range(len(PW2)):
|
||||
ctext2az.append([PW2[i] + str(i + 10)])
|
||||
for i in range(len(ctext1az)):
|
||||
ctext2az[i % len(PW2)].append(ctext1az[i])
|
||||
ctext2az.sort()
|
||||
ausgabe_az = ""
|
||||
z = 1
|
||||
for i in ctext2az:
|
||||
for j in range(len(i) - 1):
|
||||
if z == 5:
|
||||
ausgabe_az += i[j + 1] + " "
|
||||
z = 1
|
||||
else:
|
||||
ausgabe_az += i[j + 1]
|
||||
z += 1
|
||||
|
||||
ctext2za = []
|
||||
for i in range(len(PW2)):
|
||||
ctext2za.append([PW2[i] + str(i + 10)])
|
||||
for i in range(len(ctext1za)):
|
||||
ctext2za[i % len(PW2)].append(ctext1za[i])
|
||||
ctext2za.sort()
|
||||
ausgabe_za = ""
|
||||
z = 1
|
||||
for i in ctext2za:
|
||||
for j in range(len(i) - 1):
|
||||
if z == 5:
|
||||
ausgabe_za += i[j + 1] + " "
|
||||
z = 1
|
||||
else:
|
||||
ausgabe_za += i[j + 1]
|
||||
z += 1
|
||||
|
||||
print("PW1", PW[0])
|
||||
print("PW2", PW2)
|
||||
print("ausgabe_za", ausgabe_az)
|
||||
print("ausgabe_za", ausgabe_za)
|
||||
@@ -0,0 +1,37 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf8 -*-
|
||||
|
||||
def buchstabenzaehl(buchstabe, anzahl):
|
||||
if buchstabe in anzahl:
|
||||
anzahl[buchstabe] = anzahl[buchstabe] + 1
|
||||
else:
|
||||
anzahl[buchstabe] = 1
|
||||
|
||||
|
||||
def wortzaehl(wort):
|
||||
anzahl = {}
|
||||
for buchstabe in wort:
|
||||
buchstabenzaehl(buchstabe.upper(), anzahl)
|
||||
return anzahl
|
||||
|
||||
|
||||
while 1:
|
||||
print("Zum Beenden: kein Wort eingeben und Return drücken")
|
||||
eingabe = input("Bitte Wort eingeben für welches Anagramme gesucht werden sollen: ")
|
||||
eingabe = eingabe.rstrip()
|
||||
if eingabe == "":
|
||||
break
|
||||
eingabezaehl = wortzaehl(eingabe)
|
||||
wbfile = open("../../data/german.dic", "r") # german.dic von https://sourceforge.net/projects/germandict/
|
||||
for line in wbfile:
|
||||
line = line.strip(" \t\n\r")
|
||||
if eingabe.upper() == line.upper():
|
||||
continue
|
||||
if len(eingabe) != len(line):
|
||||
continue
|
||||
if eingabezaehl == wortzaehl(line):
|
||||
print(line)
|
||||
wbfile.close()
|
||||
print("---keine weiteren Anagramme gefunden---")
|
||||
print()
|
||||
print("Ich hoffe es hat geholfen! Bye,Bye!")
|
||||
@@ -0,0 +1,33 @@
|
||||
abcgross = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
abcklein = "abcdefghijklmnopqrstuvwxyz"
|
||||
|
||||
txt = input("Bitte zu kodierenden Text eingeben:")
|
||||
r = 0
|
||||
while r > 26 or r < 1:
|
||||
r = int(input("Um wieviele Stellen soll verschoben werden?(1-26) "))
|
||||
atxt = ""
|
||||
warn = 0
|
||||
warntxt = ""
|
||||
for i in txt:
|
||||
if i == " ":
|
||||
atxt = atxt + " "
|
||||
continue
|
||||
if i.upper() not in abcgross:
|
||||
atxt = atxt + i # nicht codierbare Zeichen direkt zur Ausgabe bitte!
|
||||
warn = warn + 1
|
||||
warntxt = warntxt + i + ","
|
||||
continue
|
||||
if i == i.upper():
|
||||
abc = abcgross
|
||||
if i == i.lower():
|
||||
abc = abcklein
|
||||
abcl = len(abc)
|
||||
for j in range(abcl):
|
||||
if i == abc[j]:
|
||||
if j + r >= abcl:
|
||||
atxt = atxt + abc[j + r - abcl]
|
||||
else:
|
||||
atxt = atxt + abc[j + r]
|
||||
print("Codierter Text:", atxt)
|
||||
if warn > 0:
|
||||
print("Achtung! folgende im Text enthaltenen Zeichen wurden nicht kodiert:", warntxt[:-1])
|
||||
@@ -0,0 +1,31 @@
|
||||
abc = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
|
||||
"W", "X", "Y", "Z"]
|
||||
letterGoodness = [0.0817, 0.0149, 0.0278, 0.0425, 0.127, 0.0223, 0.0202, 0.0609, 0.0697, 0.0015, 0.0077, 0.0402, 0.0241,
|
||||
0.0675, 0.0751, 0.0193, 0.0009, 0.0599, 0.0633, 0.0906, 0.0276, 0.0098, 0.0236, 0.0015, 0.0197,
|
||||
0.0007]
|
||||
|
||||
txt = input("bitte Text:")
|
||||
ausgabe = ""
|
||||
ausgabeg = 0
|
||||
ausgaber = 0
|
||||
for r in range(1, 27):
|
||||
atxt = ""
|
||||
atxtg = 0
|
||||
for i in txt.upper():
|
||||
if i == " ":
|
||||
atxt = atxt + " "
|
||||
continue
|
||||
abcl = len(abc)
|
||||
for j in range(abcl):
|
||||
if i == abc[j]:
|
||||
if j + r >= abcl:
|
||||
atxt = atxt + abc[j + r - abcl]
|
||||
atxtg = atxtg + letterGoodness[j + r - abcl]
|
||||
else:
|
||||
atxt = atxt + abc[j + r]
|
||||
atxtg = atxtg + letterGoodness[j + r]
|
||||
if atxtg > ausgabeg:
|
||||
ausgabe = atxt
|
||||
ausgabeg = atxtg
|
||||
ausgaber = r
|
||||
print("Der dekodierte Text laut wahrscheinlich: ", ausgabe)
|
||||
70
EinzelfunktionenExperimentierbereich/Viginere/vignere.py
Normal file
70
EinzelfunktionenExperimentierbereich/Viginere/vignere.py
Normal file
@@ -0,0 +1,70 @@
|
||||
#!/usr/bin/python3
|
||||
# -*- coding: utf8 -*-
|
||||
|
||||
BW = {'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5, 'F': 6, 'G': 7, 'H': 8, 'I': 9, 'J': 10, 'K': 11, 'L': 12, 'M': 13,
|
||||
'N': 14,
|
||||
'O': 15, 'P': 16, 'Q': 17, 'R': 18, 'S': 19, 'T': 20, 'U': 21, 'V': 22, 'W': 23, 'X': 24, 'Y': 25, 'Z': 26}
|
||||
UBW = {v: k for k, v in BW.items()}
|
||||
|
||||
PW = "Standardobjekteabcdefghijklmnopqrstuvwxyz"
|
||||
text = "Da ist ein ganz einfacher und sinnfreier Text um die Funktion zu testen und zu sehen was passiert."
|
||||
pwl = len(PW)
|
||||
encoded_text = ""
|
||||
encoded_text_s = "" # wenn Leer und Sonderzeichen Schlüsselbuchstaben verbrauchen
|
||||
auslz = 0 # auslasszähler zählt zeichen die im text nicht codiert wurden
|
||||
for i in range(len(text)):
|
||||
if text[i].upper() not in BW:
|
||||
encoded_text += text[i]
|
||||
auslz += 1
|
||||
encoded_text_s += text[i]
|
||||
else:
|
||||
b1 = BW[text[i].upper()]
|
||||
b2 = BW[PW[(i - auslz) % pwl].upper()]
|
||||
b2s = BW[PW[i % pwl].upper()]
|
||||
ba = (b1 + b2 - 1) % 26
|
||||
bas = (b1 + b2s - 1) % 26
|
||||
if ba == 0:
|
||||
ba = 26
|
||||
if bas == 0:
|
||||
bas = 26
|
||||
if text[i] == text[i].upper():
|
||||
encoded_text += UBW[ba]
|
||||
encoded_text_s += UBW[bas]
|
||||
else:
|
||||
encoded_text += UBW[ba].lower()
|
||||
encoded_text_s += UBW[bas].lower()
|
||||
|
||||
text = encoded_text # zum überprüfen
|
||||
# text=encoded_text_s #zum überprüfen
|
||||
|
||||
|
||||
decoded_text = ""
|
||||
decoded_text_s = ""
|
||||
auslz = 0 # auslasszähler zählt zeichen die im text nicht codiert wurden
|
||||
for i in range(len(text)):
|
||||
if text[i].upper() not in BW:
|
||||
decoded_text += text[i]
|
||||
auslz += 1
|
||||
decoded_text_s += text[i]
|
||||
else:
|
||||
b1 = BW[text[i].upper()]
|
||||
b2 = BW[PW[(i - auslz) % pwl].upper()]
|
||||
b2s = BW[PW[i % pwl].upper()]
|
||||
ba = (b1 - b2 + 1) % 26
|
||||
bas = (b1 - b2s + 1) % 26
|
||||
if ba == 0:
|
||||
ba = 26
|
||||
if bas == 0:
|
||||
bas = 26
|
||||
if text[i] == text[i].upper():
|
||||
decoded_text += UBW[ba]
|
||||
decoded_text_s += UBW[bas]
|
||||
else:
|
||||
decoded_text += UBW[ba].lower()
|
||||
decoded_text_s += UBW[bas].lower()
|
||||
|
||||
print(encoded_text)
|
||||
print(decoded_text)
|
||||
print()
|
||||
print(encoded_text_s)
|
||||
print(decoded_text_s)
|
||||
@@ -0,0 +1,68 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf8 -*-
|
||||
|
||||
text = "Beispielklartext abcdefghijklmnopqrstuvwxyz"
|
||||
# PW="Apfelstrudel"
|
||||
PW = "teebaum"
|
||||
# Chiffrat: IWBQYBWVDVZNOWFO ZIHKWXGCBBDVURTYSNQOMLEFPA
|
||||
|
||||
abc = "ABCDEFGHIKLMNOPQRSTUVWXYZ" # j wird als i chiffriert
|
||||
|
||||
text = text.upper()
|
||||
PW = PW.upper()
|
||||
if "J" in text:
|
||||
text = text.replace("J", "I")
|
||||
if "J" in PW:
|
||||
PW = PW.replace("J", "I")
|
||||
calpha = ""
|
||||
for b in PW:
|
||||
if b not in calpha:
|
||||
calpha += b
|
||||
for b in abc:
|
||||
if b not in calpha:
|
||||
calpha += b
|
||||
CABC = {calpha[12]: calpha[12]}
|
||||
c1 = calpha[:12]
|
||||
c2 = calpha[13:]
|
||||
c2 = c2[::-1]
|
||||
for i in range(12):
|
||||
CABC[c1[i]] = c2[i]
|
||||
UCABC = {v: k for k, v in CABC.items()}
|
||||
CABC.update(UCABC)
|
||||
print(calpha)
|
||||
atxt = ""
|
||||
for b in text:
|
||||
if b in CABC:
|
||||
atxt += CABC[b]
|
||||
else:
|
||||
atxt += b
|
||||
|
||||
print(atxt)
|
||||
hilfe = """
|
||||
Die Woseley-Chiffre arbeitet mit einem
|
||||
Schlüsselwort über welches dann ein Codequadrat
|
||||
/Codealphabet gebildet wird mit welchem dann
|
||||
sowohl kodiert als auch dekodiert wird.
|
||||
Angefangen wird dabei mit dem jeweils ersten
|
||||
Vorkommen eines Buchstaben im Schlüsselwort
|
||||
und danach folgen die restlichen Buchstaben
|
||||
des Alphabets die nicht im Schlüsselwort vorkommen.
|
||||
Da hier nur 25 Zeichen zur Verfügung stehen wird
|
||||
das J mit dem I zusammengefasst und als I behandelt
|
||||
und dargestellt. Sonstige Zeichen die nicht im
|
||||
Codealphabet vorhanden sind werden unverändert
|
||||
ausgegeben.
|
||||
Codequadrat mit Schlüsselwort: Teebaum
|
||||
1 2 3 4 5
|
||||
1 T E B A U
|
||||
2 M C D F G
|
||||
3 H I K L N
|
||||
4 O P Q R S
|
||||
5 V W X Y Z
|
||||
Bei der Chiffrierung/Dechiffrierung wird
|
||||
im Text nun der erste Buchstabe mit dem
|
||||
letzten getauscht, der 2. mit dem vorletzten,
|
||||
usw. also aus T wird Z und umgekehrt,
|
||||
E<->Y, B<->X, A<->W usw..
|
||||
nur ein K bleibt ein K
|
||||
"""
|
||||
59
EinzelfunktionenExperimentierbereich/autokey/autokey.py
Normal file
59
EinzelfunktionenExperimentierbereich/autokey/autokey.py
Normal file
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/python3
|
||||
# -*- coding: utf8 -*-
|
||||
PW = "Key"
|
||||
text = "Dies ist ein geheimer Text"
|
||||
|
||||
BW = {'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5, 'F': 6, 'G': 7, 'H': 8, 'I': 9, 'J': 10, 'K': 11, 'L': 12, 'M': 13,
|
||||
'N': 14,
|
||||
'O': 15, 'P': 16, 'Q': 17, 'R': 18, 'S': 19, 'T': 20, 'U': 21, 'V': 22, 'W': 23, 'X': 24, 'Y': 25, 'Z': 26}
|
||||
UBW = {v: k for k, v in BW.items()}
|
||||
|
||||
PWe = ""
|
||||
PWd = ""
|
||||
for b in PW:
|
||||
if b.upper() in BW:
|
||||
PWe += b.upper() # Sonderzeichen aus PW entfernen und
|
||||
PWd += b.upper()
|
||||
if len(PWe) < len(text):
|
||||
for b in text:
|
||||
if b.upper() in BW:
|
||||
PWe += b.upper()
|
||||
encoded_text = ""
|
||||
auslz = 0 # auslasszähler zählt zeichen die im text nicht codiert wurden
|
||||
for i in range(len(text)):
|
||||
if text[i].upper() not in BW:
|
||||
encoded_text += text[i]
|
||||
auslz += 1
|
||||
else:
|
||||
b1 = BW[text[i].upper()]
|
||||
b2 = BW[PWe[(i - auslz)]]
|
||||
ba = (b1 + b2 - 1) % 26
|
||||
if ba == 0:
|
||||
ba = 26
|
||||
if text[i] == text[i].upper():
|
||||
encoded_text += UBW[ba]
|
||||
else:
|
||||
encoded_text += UBW[ba].lower()
|
||||
|
||||
text = encoded_text # zum überprüfen
|
||||
|
||||
decoded_text = ""
|
||||
auslz = 0 # auslasszähler zählt zeichen die im text nicht codiert wurden
|
||||
for i in range(len(text)):
|
||||
if text[i].upper() not in BW:
|
||||
decoded_text += text[i]
|
||||
auslz += 1
|
||||
else:
|
||||
b1 = BW[text[i].upper()]
|
||||
b2 = BW[PWd[(i - auslz)].upper()]
|
||||
ba = (b1 - b2 + 1) % 26
|
||||
if ba == 0:
|
||||
ba = 26
|
||||
PWd += UBW[ba]
|
||||
if text[i] == text[i].upper():
|
||||
decoded_text += UBW[ba]
|
||||
else:
|
||||
decoded_text += UBW[ba].lower()
|
||||
|
||||
print(encoded_text)
|
||||
print(decoded_text)
|
||||
59
EinzelfunktionenExperimentierbereich/jaegerzaun.py
Normal file
59
EinzelfunktionenExperimentierbereich/jaegerzaun.py
Normal file
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf8 -*-
|
||||
test = "Hallo"
|
||||
t1r2 = "rank the code"
|
||||
t2r2 = "rn h oeaktecd"
|
||||
t3r3 = "coding"
|
||||
t4r3 = "cnoigd"
|
||||
t5r3 = "rank the code"
|
||||
t6r3 = "r eaktecdnho"
|
||||
|
||||
|
||||
def array_ausgabe(arri: list):
|
||||
for line in arri:
|
||||
print("".join(line))
|
||||
print()
|
||||
|
||||
|
||||
def encrypt(plain_text: str, rails: int):
|
||||
arr = [["_" for x in range(len(plain_text))] for y in range(rails)]
|
||||
r = 0
|
||||
z = 0
|
||||
plus = True
|
||||
for b in plain_text:
|
||||
arr[r][z] = b
|
||||
z += 1
|
||||
if r+1 == rails and plus:
|
||||
plus = False
|
||||
r -= 1
|
||||
elif r-1 < 0 and not plus:
|
||||
plus = True
|
||||
r += 1
|
||||
elif plus:
|
||||
r += 1
|
||||
else:
|
||||
r -= 1
|
||||
out = ""
|
||||
for i in range(rails):
|
||||
for j in range(len(plain_text)):
|
||||
if arr[i][j] != "_":
|
||||
out += arr[i][j]
|
||||
print(out)
|
||||
array_ausgabe(arr)
|
||||
print()
|
||||
|
||||
|
||||
def decrypt(cipher: str, rails: int):
|
||||
arr = [["" for x in range(len(cipher))] for y in range(rails)]
|
||||
for r in range(rails):
|
||||
|
||||
#arr[r][z] = b
|
||||
pass
|
||||
|
||||
|
||||
encrypt(t1r2, 2)
|
||||
decrypt(t2r2, 2)
|
||||
encrypt(t3r3, 3)
|
||||
decrypt(t4r3, 3)
|
||||
encrypt(t5r3, 3)
|
||||
decrypt(t6r3, 3)
|
||||
31
EinzelfunktionenExperimentierbereich/kenny/unkennify.py
Normal file
31
EinzelfunktionenExperimentierbereich/kenny/unkennify.py
Normal file
@@ -0,0 +1,31 @@
|
||||
from re import match
|
||||
|
||||
|
||||
def unkennify(text):
|
||||
# Funktion hier entnommen und angepasst: https://www.namesuppressed.com/software/kenny.py
|
||||
decoded = ''
|
||||
codemap = str.maketrans('MmPpFf', '001122')
|
||||
print(codemap)
|
||||
n_len = len(text)
|
||||
i = 0
|
||||
while i + 3 <= n_len:
|
||||
if match('[MmPpFf]{3,}', text[i:i + 3]):
|
||||
# 'mpf' -> '012' -> 5
|
||||
num = int(text[i:i + 3].translate(codemap), 3)
|
||||
# 5 -> 'f'
|
||||
cypher = chr(num + ord('a'))
|
||||
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
|
||||
|
||||
|
||||
print(unkennify("Fmpmppfmmfmp ppmmffmmfmfp ppmmmmpmf"))
|
||||
104
EinzelfunktionenExperimentierbereich/maptiles/map-tilenames.py
Normal file
104
EinzelfunktionenExperimentierbereich/maptiles/map-tilenames.py
Normal file
@@ -0,0 +1,104 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf8 -*-
|
||||
import math
|
||||
|
||||
|
||||
def dec_to_maptiles(lat_deg, lon_deg, zoom):
|
||||
lat_rad = math.radians(lat_deg)
|
||||
n = 2.0 ** zoom
|
||||
xtile = int((lon_deg + 180.0) / 360.0 * n)
|
||||
ytile = int((1.0 - math.log(math.tan(lat_rad) + (1 / math.cos(lat_rad))) / math.pi) / 2.0 * n)
|
||||
return xtile, ytile
|
||||
|
||||
|
||||
def maptiles_to_dec(xtile, ytile, zoom):
|
||||
n = 2.0 ** zoom
|
||||
lon_dec = xtile / n * 360.0 - 180.0
|
||||
lat_rad = math.atan(math.sinh(math.pi * (1 - 2 * ytile / n)))
|
||||
lat_dec = math.degrees(lat_rad)
|
||||
return lat_dec, lon_dec
|
||||
|
||||
|
||||
def dec_to_deg(lat_dec, lon_dec): # Dezimalgrad in Dezimalminuten (Ausgabe als String)
|
||||
if lat_dec < 0:
|
||||
lat_pre = "S"
|
||||
else:
|
||||
lat_pre = "N"
|
||||
if lon_dec < 0:
|
||||
lon_pre = "W"
|
||||
else:
|
||||
lon_pre = "E"
|
||||
lat = abs(lat_dec)
|
||||
lon = abs(lon_dec)
|
||||
lat_degree = int(lat)
|
||||
lon_degree = int(lon)
|
||||
lat_minutes = (lat - lat_degree) * 60
|
||||
lon_minutes = (lon - lon_degree) * 60
|
||||
return ("{}{} {} {}{} {}".format(lat_pre, lat_degree, round(lat_minutes, 3), lon_pre, lon_degree,
|
||||
round(lon_minutes, 3)))
|
||||
|
||||
|
||||
# text="2248563 1378644"
|
||||
# text="8783 5384"
|
||||
# text="52.357780217032044 12.995710372924805"
|
||||
# text="-41.85 -87.64999999999998"
|
||||
text = "52.520803 13.4088653"
|
||||
# https://tile.openstreetmap.org/19/281070/172330.png
|
||||
hilfetext = """
|
||||
Bei vielen Online-Kartendiensten wie Openstreetmap oder
|
||||
Google-Maps erfolgt die Kartendarstellung über vorberechnete
|
||||
"Kachel"-Grafikdateien, welche ein Adressierungssystem benötigen
|
||||
damit je nach Koordinate und Zoomstufe auch der richtige
|
||||
Kartenausschnitt dargestellt und klar ist welche Kacheln daneben
|
||||
darzustellen ist wird.Bei OSM ist eine solche Kachel eine
|
||||
PNG-Grafik mit 256x256 Pixeln und je nach Zoomstufe ist eine
|
||||
unterschiedliche Anzahl solcher Kacheln/Tiles notwendig
|
||||
um die ganze Welt abzubilden. Da je Zoomstufe sich die Anzahl
|
||||
der benötigten Kacheln vervierfacht ist bei den meisten
|
||||
Diensten bei Zoomlevel 18 Schluß, OSM geht bis Zoomlevel 19.
|
||||
Um die einzelnen Kacheln beim tilemap-Server abzufragen brauch
|
||||
man die Zoomstufe, einen X und einen Y-Wert wobei dies alles
|
||||
ganzahlige Werte sind.
|
||||
Aufgerufen von den Servern werden die Kacheln dann nach dem
|
||||
Muster http://servername/Zoom/X/Y.png
|
||||
Den Fernsehturm mit Zoomstufe 18 findet man z.B. bei Openstreetmap
|
||||
hier: https://tile.openstreetmap.org/18/140836/85970.png
|
||||
|
||||
Die Funktion arbeitet hier auf die Art und Weise, daß man 2 durch
|
||||
ein Freizeichen getrennte Zahlen eingibt.
|
||||
Handelt es sich bei den angegebenen Zahlen um "Kommazahlen" welche
|
||||
allerdings mit Punkt anzugeben sind (Bsp: 52.520803 13.4088653 )
|
||||
geht die Funktion davon aus, daß es sich um Koordinaten in Dezimalgrad
|
||||
handelt und sofern es gültige Koordinaten sind erfolgt eine Ausgabe
|
||||
der X und Y Werte für die Zoomstufen und 1-25.
|
||||
(Positive Zahlen stehen für Nord und Ost, negative für Süd und West)
|
||||
|
||||
Handelt es sich bei den beiden Zahlen um Ganzzahlen wird davon
|
||||
ausgegangen, daß es sich um X und Y Werte handelt und es werde für
|
||||
alle Zoomstufen von 1-25 Koordinaten in Dezimalminuten und
|
||||
Dezimalgrad ausgegeben, sofern dies sinnvolle Koordinaten ergibt.
|
||||
"""
|
||||
|
||||
text = text.split()
|
||||
if "." in text[0] and len(text) == 2:
|
||||
print("DEC -> Maptiles")
|
||||
for zoom in range(1, 26):
|
||||
try:
|
||||
la = float(text[0])
|
||||
lo = float(text[1])
|
||||
if not la < -180 and not la > 180 and not lo < -180 and not lo > 180:
|
||||
x, y = dec_to_maptiles(la, lo, zoom)
|
||||
print("Zoom:{} X:{} \tY:{}".format(zoom, x, y))
|
||||
except:
|
||||
pass
|
||||
elif len(text) == 2:
|
||||
print("Maptiles->DEG,DEC")
|
||||
for zoom in range(1, 26):
|
||||
try:
|
||||
la, lo = maptiles_to_dec(int(text[0]), int(text[1]), zoom)
|
||||
if not la < -180 and not la > 180 and not lo < -180 and not lo > 180:
|
||||
print("Zoom: {} \tDEG: {} \tDEC: {} {}".format(zoom, dec_to_deg(la, lo), round(la, 5), round(lo, 5)))
|
||||
except:
|
||||
pass
|
||||
else:
|
||||
print("Zahlen konnten nicht ermittelt werden!")
|
||||
24
EinzelfunktionenExperimentierbereich/maptiles/maptiles.py
Normal file
24
EinzelfunktionenExperimentierbereich/maptiles/maptiles.py
Normal file
@@ -0,0 +1,24 @@
|
||||
# https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Python
|
||||
# Kachelkoordinaten umrechnen
|
||||
import math
|
||||
|
||||
|
||||
def deg2num(lat_deg, lon_deg, zoom):
|
||||
lat_rad = math.radians(lat_deg)
|
||||
n = 2.0 ** zoom
|
||||
xtile = int((lon_deg + 180.0) / 360.0 * n)
|
||||
ytile = int((1.0 - math.log(math.tan(lat_rad) + (1 / math.cos(lat_rad))) / math.pi) / 2.0 * n)
|
||||
return xtile, ytile
|
||||
|
||||
|
||||
def num2deg(xtile, ytile, zoom):
|
||||
n = 2.0 ** zoom
|
||||
lon_deg = xtile / n * 360.0 - 180.0
|
||||
lat_rad = math.atan(math.sinh(math.pi * (1 - 2 * ytile / n)))
|
||||
lat_deg = math.degrees(lat_rad)
|
||||
return lat_deg, lon_deg
|
||||
|
||||
|
||||
for i in range(22, 25):
|
||||
x = num2deg(4496422252, 974119798, i)
|
||||
print(i, x)
|
||||
@@ -0,0 +1,69 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: iso-8859-15 -*-
|
||||
|
||||
#Klartext: Beispielklartext
|
||||
#Schl<68>ssel: Apfelstrudel
|
||||
#Chiffrat: 31 14 35 21 12 35 14 15 41 15 11 23 22 14 53 22
|
||||
|
||||
text="Be1ispie3lklartext was ist das?"
|
||||
PW="A9pfelstr2udel"
|
||||
QZ5=[11,12,13,14,15,21,22,23,24,25,31,32,33,34,35,41,42,43,44,45,51,52,53,54,55]
|
||||
alpha5ij="ABCDEFGHIKLMNOPQRSTUVWXYZ" #j wird durch i ersetzt
|
||||
alpha5uv="ABCDEFGHIJKLMNOPQRSTUWXYZ" #v wird durch u ersetzt
|
||||
QZ6=[11,12,13,14,15,16,21,22,23,24,25,26,31,32,33,34,35,36,41,42,43,44,45,46,51,52,53,54,55,56,61,62,63,64,65,66]
|
||||
alpha6="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
||||
text=text.upper()
|
||||
textij=text.replace("J","I")
|
||||
textuv=text.replace("V","U")
|
||||
PW=PW.upper()
|
||||
PWi=PW.replace("J","I")
|
||||
PWu=PW.replace("V","U")
|
||||
passw5ij=""
|
||||
for i in PWi:
|
||||
if i in alpha5ij:passw5ij+=i
|
||||
passw5uv=""
|
||||
for i in PWu:
|
||||
if i in alpha5uv:passw5uv+=i
|
||||
passw6=""
|
||||
for i in PWi:
|
||||
if i in alpha6:passw6+=i
|
||||
text5ij=""
|
||||
for i in textij:
|
||||
if i in alpha5ij:text5ij+=i
|
||||
text5uv=""
|
||||
for i in textuv:
|
||||
if i in alpha5uv:text5uv+=i
|
||||
text6=""
|
||||
for i in text:
|
||||
if i in alpha6:text6+=i
|
||||
PW5ij=""
|
||||
for b in PWi+alpha5ij:
|
||||
if b in alpha5ij and b not in PW5ij:PW5ij+=b
|
||||
PW5uv=""
|
||||
for b in PWu+alpha5uv:
|
||||
if b in alpha5uv and b not in PW5uv:PW5uv+=b
|
||||
PW6=""
|
||||
for b in PW+alpha6:
|
||||
if b in alpha6 and b not in PW6:PW6+=b
|
||||
WB5ij={}
|
||||
for i in range(25):
|
||||
WB5ij[PW5ij[i]]=str(QZ5[i])
|
||||
WB5uv={}
|
||||
for i in range(25):
|
||||
WB5uv[PW5uv[i]]=str(QZ5[i])
|
||||
WB6={}
|
||||
for i in range(36):
|
||||
WB6[PW6[i]]=str(QZ6[i])
|
||||
ctext5ij=""
|
||||
for b in text5ij:ctext5ij+=WB5ij[b]+" "
|
||||
ctext5uv=""
|
||||
for b in text5uv:ctext5uv+=WB5uv[b]+" "
|
||||
ctext6=""
|
||||
for b in text6:ctext6+=WB6[b]+" "
|
||||
|
||||
print("5x5(j=i)",text5ij,passw5ij)
|
||||
print(ctext5ij)
|
||||
print("5x5(v=u)",text5uv,passw5uv)
|
||||
print(ctext5uv)
|
||||
print("6x6",text6,passw6)
|
||||
print(ctext6)
|
||||
42
EinzelfunktionenExperimentierbereich/polybios/polybios.py
Normal file
42
EinzelfunktionenExperimentierbereich/polybios/polybios.py
Normal file
@@ -0,0 +1,42 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf8 -*-
|
||||
|
||||
# Klartext: Beispielklartext
|
||||
# Schlüssel: Apfelstrudel
|
||||
# Chiffrat: 31 14 35 21 12 35 14 15 41 15 11 23 22 14 53 22
|
||||
|
||||
text = "Beispielklartextjuiv"
|
||||
PW = "Apfelstrudelijuv"
|
||||
Z = "0123456789"
|
||||
QZ5 = [11, 12, 13, 14, 15, 21, 22, 23, 24, 25, 31, 32, 33, 34, 35, 41, 42, 43, 44, 45, 51, 52, 53, 54, 55]
|
||||
alpha5ij = "ABCDEFGHIKLMNOPQRSTUVWXYZ" # j wird durch i ersetzt
|
||||
alpha5uv = "ABCDEFGHIJKLMNOPQRSTUWXYZ" # v wird durch u ersetzt
|
||||
QZ6 = [11, 12, 13, 14, 15, 16, 21, 22, 23, 24, 25, 26, 31, 32, 33, 34, 35, 36, 41, 42, 43, 44, 45, 46, 51, 52, 53, 54,
|
||||
55, 56, 61, 62, 63, 64, 65, 66]
|
||||
alpha6 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
||||
|
||||
text = text.upper()
|
||||
textij = text.replace("J", "I")
|
||||
textuv = text.replace("V", "U")
|
||||
PW = PW.upper()
|
||||
PWi = PW.replace("J", "I")
|
||||
PWu = PW.replace("V", "U")
|
||||
|
||||
PW5ij = ""
|
||||
for b in PWi + alpha5ij:
|
||||
if b in alpha5ij and b not in PW5ij:
|
||||
PW5ij += b
|
||||
PW5uv = ""
|
||||
for b in PWu + alpha5uv:
|
||||
if b in alpha5uv and b not in PW5uv:
|
||||
PW5uv += b
|
||||
PW6 = ""
|
||||
for b in PW + alpha6:
|
||||
if b in alpha6 and b not in PW6:
|
||||
PW6 += b
|
||||
|
||||
print(PW5ij)
|
||||
print(PW5uv)
|
||||
print(PW6)
|
||||
print(PW)
|
||||
print(textij)
|
||||
58
EinzelfunktionenExperimentierbereich/rot123/rot123.py
Normal file
58
EinzelfunktionenExperimentierbereich/rot123/rot123.py
Normal file
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/python3
|
||||
# -*- coding: utf8 -*-
|
||||
|
||||
BW = {'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5, 'F': 6, 'G': 7, 'H': 8, 'I': 9, 'J': 10, 'K': 11, 'L': 12, 'M': 13,
|
||||
'N': 14,
|
||||
'O': 15, 'P': 16, 'Q': 17, 'R': 18, 'S': 19, 'T': 20, 'U': 21, 'V': 22, 'W': 23, 'X': 24, 'Y': 25, 'Z': 26}
|
||||
UBW = {v: k for k, v in BW.items()}
|
||||
text = "12 34567890abc defghijklmnopqr, stuvwxyz5ABCDEFGHI JKLMNOPQRSTUVWXYZ"
|
||||
# 2468024680LOORTVXZBDFHJLNPRTVXZBDFHJLNPRTVXZBDFHJLNPRTVXZBDFHJ
|
||||
encoded_text = ""
|
||||
vz = 1 # verschiebezähler
|
||||
for i in text:
|
||||
if i.upper() not in BW:
|
||||
try:
|
||||
az = int(i)
|
||||
except:
|
||||
encoded_text += i
|
||||
else:
|
||||
ba = (az + vz) % 10
|
||||
encoded_text += str(ba)
|
||||
vz += 1
|
||||
else:
|
||||
b1 = BW[i.upper()]
|
||||
ba = (b1 + vz) % 26
|
||||
if ba == 0:
|
||||
ba = 26
|
||||
if i == i.upper():
|
||||
encoded_text += UBW[ba]
|
||||
else:
|
||||
encoded_text += UBW[ba].lower()
|
||||
vz += 1
|
||||
|
||||
text = encoded_text # zum überprüfen
|
||||
|
||||
decoded_text = ""
|
||||
vz = 1 # verschiebezähler
|
||||
for i in text:
|
||||
if i.upper() not in BW:
|
||||
try:
|
||||
az = int(i)
|
||||
except:
|
||||
decoded_text += i
|
||||
else:
|
||||
ba = (az - vz) % 10
|
||||
decoded_text += str(ba)
|
||||
vz += 1
|
||||
else:
|
||||
b1 = BW[i.upper()]
|
||||
ba = (b1 - vz) % 26
|
||||
if ba == 0:
|
||||
ba = 26
|
||||
if i == i.upper():
|
||||
decoded_text += UBW[ba]
|
||||
else:
|
||||
decoded_text += UBW[ba].lower()
|
||||
vz += 1
|
||||
print(encoded_text)
|
||||
print(decoded_text)
|
||||
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf8 -*-
|
||||
|
||||
RZA = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000, '\u2181': 5000, '\u2182': 10000,
|
||||
'\u2187': 50000, '\u2188': 100000}
|
||||
AZR = [(100000, '\u2188'), (90000, '\u2182\u2188'), (50000, '\u2187'), (40000, '\u2182\u2187'),
|
||||
(10000, '\u2182'), (9000, 'M\u2182'), (5000, '\u2181'), (4000, 'M\u2181'), (1000, 'M'), (900, 'CM'), (500, 'D'),
|
||||
(400, 'CD'), (100, 'C'), (90, 'XC'), (50, 'L'), (40, 'XL'), (10, 'X'), (9, 'IX'), (5, 'V'), (4, 'IV'), (1, 'I')]
|
||||
while True:
|
||||
rz = input("Bitte römische Zahl eingeben: ")
|
||||
rz = rz.rstrip()
|
||||
rz = rz.upper()
|
||||
|
||||
try:
|
||||
az = 0
|
||||
for i in range(len(rz)):
|
||||
if i == len(rz) - 1:
|
||||
az += RZA[rz[i]]
|
||||
print(rz, "=", az)
|
||||
else:
|
||||
if RZA[rz[i]] < RZA[rz[i + 1]]:
|
||||
az -= RZA[rz[i]]
|
||||
else:
|
||||
az += RZA[rz[i]]
|
||||
except:
|
||||
try:
|
||||
zahl = int(rz)
|
||||
if zahl > 500000:
|
||||
print("Nööö, größer als 500000 mag ich nicht")
|
||||
continue
|
||||
rom = ""
|
||||
for az, romz in AZR:
|
||||
count = zahl // az
|
||||
zahl -= az * count
|
||||
rom += romz * count
|
||||
print(rz, "=", rom)
|
||||
except:
|
||||
print("Es konnte keine römische oder arabische Zahl erkannt werden")
|
||||
Reference in New Issue
Block a user