@ElShikari

Как реализовать алгоритм двойной перестановки?

Необходимо реализовать ввод исходного текста и вывод зашифрованного, и обратно для дешифровки.

Кратко об алгоритме:
Ключом к шифру двойной перестановки служит последовательность номеров столбцов и номеров строк исходной таблицы (в нашем примере последовательности 4132 и 3142 соответственно).
a47d36e5dee24e54b937b216254275b9.gif

Начинаю программировать, поэтому буду рад объяснениям.

s = [list(map(str,input().split())) for i in range (4)]
s[0], s[1] = s[1], s[0]
s[1], s[3] = s[3], s[1]
s[2], s[3] = s[3], s[2]

' '.join(str(x) for x in s)

s[0][0], s[0][1] = s[0][1], s[0][0]
s[0][1], s[0][3] = s[0][3], s[0][1]

s[1][0], s[1][1] = s[1][1], s[1][0]
s[1][1], s[1][3] = s[1][3], s[1][1]

s[2][0], s[2][1] = s[2][1], s[2][0]
s[2][1], s[2][3] = s[2][3], s[2][1]

s[3][0], s[3][1] = s[3][1], s[3][0]
s[3][1], s[3][3] = s[3][3], s[3][1]


print (' '.join(str(x) for x in s))
input ("Press Enter")


Сроки поджимали и сделал на скорую руку, так сказать методом "грубой силы", что мало походит на нормальный код. Хотелось бы услышать замечания.
  • Вопрос задан
  • 5026 просмотров
Решения вопроса 1
adugin
@adugin Куратор тега Python
def decode(text, xkeys, ykeys):
    return ''.join(text[4*(y-1)+(x-1)] for y in ykeys for x in xkeys)

print decode(u'ТЮАЕООГМРЛИПОЬСВ', (4,1,3,2), (3,1,4,2))

Для кодирования - по аналогии.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы