def encode(text, xkeys, ykeys):
return ''.join(text[4*(int(y)+1)-(int(x)+1)] for y in ykeys for x in xkeys)#ТУТ ПОДГОНЯТЬ УРАВНЕНИЕ ТАК, ЧТОБЫ ПРИ ШИФРОВКИ "ПРИЛЕТАЮВОСЬМОГО" ПОЛУЧАЛОСЬ "ТЮАЕООГМРЛИПОЬСВ"
def decode(text, xkeys, ykeys):
return ''.join(text[4*(int(y)-1)+(int(x)-1)] for y in ykeys for x in xkeys)
xkeys = "4132"
ykeys = "3142"
print (xkeys)
print (ykeys)
ciphertext = encode(u'ПРИЛЕТАЮВОСЬМОГО', xkeys, ykeys)#Надо чтобы результат этого шифрования был ТЮАЕООГМРЛИПОЬСВ. Для этого нужно изменять уравнение в def encode так, чтобы оно было обратным выражением тому, что в def decode.
if ciphertext != "ТЮАЕООГМРЛИПОЬСВ":
print(ciphertext)
print ("Уравненпие не верно, подгоняйте дальше...")
else:
print(ciphertext)
print ("Уравнение правильное. Напишите мне.")
text = decode(ciphertext, xkeys, ykeys)
if text != "ПРИЛЕТАЮВОСЬМОГО":
print(text)
print ("Кодированый текст не правильно расшифровался, подгоняйте encode дальше...")
else:
print(ciphertext)
print ("Уравнение правильное. Напишите мне.")
text = decode(u'ТЮАЕООГМРЛИПОЬСВ', xkeys, ykeys)#Как должна проходть расшифровка
print(text)
return ''.join(text[4*(int(y)-1)+(int(x)-1)] for y in ykeys for x in xkeys)
4132
3142
ТЮАЕООГМРЛИПОЬСВ
Уравнение правильное. Напишите мне.
ТЮАЕООГМРЛИПОЬСВ
Уравнение правильное. Напишите мне.
ПРИЛЕТАЮВОСЬМОГО
def getnumber(x, y):
return 4*(int(y)-1)+(int(x)-1)
def encode(text, xkeys, ykeys):
counter = 0
newtext = []
for i in range(len(text)):
newtext.append(' ')
for y in ykeys:
for x in xkeys:
if counter < len(text):
newtext[getnumber(x, y)] = text[counter]
counter += 1
return ''.join(newtext) #ТУТ ПОДГОНЯТЬ УРАВНЕНИЕ ТАК, ЧТОБЫ ПРИ ШИФРОВКИ "ПРИЛЕТАЮВОСЬМОГО" ПОЛУЧАЛОСЬ "ТЮАЕООГМРЛИПОЬСВ"
def decode(text, xkeys, ykeys):
return) ''.join(text[getnumber(x, y)] for y in ykeys for x in xkeys)
def getnumber(x, y):
return 4*(int(y)-1)+(int(x)-1)
def encode(text, xkeys, ykeys):
counter = 0
newtext = ['' for _ in range(len(text))]
for y in ykeys:
for x in xkeys:
if counter < len(text):
newtext[getnumber(x, y)] = text[counter]
counter += 1
return ''.join(newtext) #ТУТ ПОДГОНЯТЬ УРАВНЕНИЕ ТАК, ЧТОБЫ ПРИ ШИФРОВКИ "ПРИЛЕТАЮВОСЬМОГО" ПОЛУЧАЛОСЬ "ТЮАЕООГМРЛИПОЬСВ"
def decode(text, xkeys, ykeys):
return) ''.join(text[getnumber(x, y)] for y in ykeys for x in xkeys)