Witam mam problem z szyfrem kolumnowym. Polega on na narysowaniu tabeli o ilości kolumn co ilość cyfr w kluczu np. dla klucza {2,1,4,0,3} liczba kolumn wynosi 5. Następnie dzielimy nasze słowo przez liczbę kolumn i jeżeli reszta z dzielenia jest różna od 0 to znaczy, że zabraknie miejsca i dzielimy przez liczbę kolumn+1. Następnie poziomo zapisujemy słowo w tabeli i szczytujemy po kolumnach tak jak na zdjęciu. Moglby ktos pomoc z kodem w pythonie?
0
0
Na czym ta pomoc ma polegać?
0
Odczytujesz kolumnami w kolejnosci numerow
kolumna 2: YNA
kolumna 1: RAZ
kolumna 4: TL
kolumna 0: KOI
kolumna 3: PA
Wynik: YNARAZTLKOIPA
0
def encrypt(message, key):
# wyznaczamy liczbę kolumn
num_cols = len(key)
# dzielimy długość słowa przez liczbę kolumn i określamy resztę z dzielenia
num_rows, remainder = divmod(len(message), num_cols)
# jeżeli reszta z dzielenia jest różna od 0, to dodajemy 1 do liczby wierszy
if remainder != 0:
num_rows += 1
# tworzymy pustą tablicę do przechowywania słowa
table = [[''] * num_cols for i in range(num_rows)]
# wypełniamy tablicę poziomo, w kolejnych kolumnach
for i, char in enumerate(message):
row, col = divmod(i, num_cols)
table[row][col] = char
# szyfrujemy przez odczytanie kolumn w kolejności określonej przez klucz
ciphertext = ''
for col in key:
ciphertext += ''.join(table[row][col] for row in range(num_rows))
return ciphertext