Advertisement
ABIX_Edukacja

plotkowy

Feb 9th, 2021
635
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.63 KB | None | 0 0
  1. def szyfruj_slowo(slowo, klucz=3):
  2.     """Funkcja przyjmuje słowo i zwraca je zaszyfrowanie według klucza, domyślnie wartości 3"""
  3.     dl_slowa = len(slowo)
  4.     lista_znakow = [["~" for i in range(klucz)] for j in range(dl_slowa)]  
  5.     kolumny = [i for i in range(klucz)]
  6.     szyfr = ""
  7.     # wyświelamy wartości wstępne
  8.     print(f"Długość słowa: {dl_slowa} = 0-{dl_slowa-1}")
  9.     print(f"Wartość klucza: {klucz}")
  10.     print(f"Lista znaków: {lista_znakow}")
  11.     print(f"Wymiar listy znaków to: {dl_slowa} wierszy x {klucz} kolumn(y)")
  12.     print(f"Kolumny: {kolumny}")
  13.  
  14.     # aby uzyskać "płotek", dodajemy kolumny odliczane do 1
  15.     for i in range(klucz-2, 0, -1):
  16.         kolumny.append(i)
  17.     print(f"Kolumny 'płotka': {kolumny}")
  18.  
  19.     wiersz = 0
  20.     while slowo:
  21.         for i in kolumny:
  22.             if slowo:
  23.                 # przepisujemy pierwszy znak z jawnego tekstu
  24.                 lista_znakow[wiersz][i] = slowo[0]
  25.                 print(f"Dopisujemy znak {slowo[0]} w wierszu {wiersz}, kolumna: {i}")
  26.                 # przepisujemy wszystkie elementy bez pierwszego znaku do slowo
  27.                 slowo = slowo[1:]
  28.                 wiersz += 1
  29.                 print(f"Lista znaków: {lista_znakow[:wiersz]}")
  30.  
  31.    
  32.     # łączymy znaki , jeśli są różne od "~"
  33.     for i in range(klucz):
  34.         for j in range(len(lista_znakow)):
  35.             if lista_znakow[j][i] != "~":
  36.                 szyfr += lista_znakow[j][i]
  37.                 print(f"Dodajemy znak {lista_znakow[j][i]} (wiersz={j}/klucz={i}), cały szyfr to {szyfr}")
  38.  
  39.     return szyfr
  40.  
  41. slowo = szyfruj_slowo("Linux-to-system", 3)
  42.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement