Помогите с задачей
Шифровка текста с помощью решетки заключается в следующем. Решетка, т. е. квадрат из клетчатой бумаги 10x 10 клеток, некоторые клетки в котором вырезаны, совмещается с целым квадратом 10x 10 клеток и через прорези на бумагу наносятся первые буквы текста. Затем решетка поворачивается на 90° и через прорези записываются следующие буквы. Это повторяется еще дважды. Таким образом, на бумагу наносится 100 букв текста. Решетку можно изображать квадратной матрицей порядка 10 из нулей и единиц (нуль изображает прорезь). Доказать, что матрица [a,y]i=i io; /=i ю может служить ключом шифра, если из элементов аи% al0_i+i/, апоЧ+и a10- l+1; 10-/+i в точности один равен нулю. Даны последовательность из 100 букв и матрица-ключ. а) Зашифровать данную последовательность. б) Расшифровать данную последовательность. Помогите с задачей?(
import numpy as np
def encrypt(text, key):
text = text.upper().replace(" ", "")
n = len(text)
grid = np.zeros((10, 10), dtype=str)
k = 0
for i in range(10):
for j in range(10):
if key[i][j] == "0":
grid[i][j] = text[k]
k += 1
if k == n:
break
if k == n:
break
encrypted_text = ""
for i in range(4):
rotated_grid = np.rot90(grid, i)
for j in range(10):
for k in range(10):
if rotated_grid[j][k] != "0":
encrypted_text += rotated_grid[j][k]
return encrypted_text
def decrypt(text, key):
n = len(text)
grid = np.zeros((10, 10), dtype=str)
k = 0
for i in range(4):
rotated_grid = np.rot90(key, i)
for j in range(10):
for k in range(10):
if rotated_grid[j][k] == "0":
grid[j][k] = text[k]
k += 1
if k == n:
break
if k == n:
break
if k == n:
break
decrypted_text = ""
for i in range(10):
for j in range(10):
if grid[i][j] != "0":
decrypted_text += grid[i][j]
return decrypted_text