Zadanie 6. Szyfr Cezara (2016)


Podstawieniowy szyfr Cezara z przesunięciem (kluczem) k polega na zastąpieniu każdego znaku jawnego znakiem leżącym w alfabecie o k pozycji w prawo od zastępowanego znaku. Przykład: znak ‘B’ po zakodowaniu kluczem k=3 zastąpiony zostanie znakiem ‘E’.
… A B C D E F …
1 2 3
Przy szyfrowaniu znaku należy postępować w sposób cykliczny, to znaczy, jeżeli znak nie posiada w alfabecie następnika przesuniętego o k pozycji, to alfabet „zawija się" i za literą Z następuje znów litera A.
Przykład: jawny znak ‘X’ po zakodowaniu kluczem k=3 zastąpiony zostanie znakiem ‘A’, znak ‘Y’ – znakiem ‘B’, natomiast ‘Z’ – znakiem ‘C’.
… W X Y Z A B C D …
W tym zadaniu rozpatrujemy tylko słowa zbudowane z wielkich liter alfabetu angielskiego (o kodach ASCII odpowiednio od 65 do 90), o długościach nie większych niż 30 znaków.

Zadanie 6.1. (0–3)
W pliku dane_6_1.txt znajduje się 100 słów. Słowa umieszczono w osobnych wierszach.
Fragment pliku dane_6_1.txt:
INTERPRETOWANIE
ROZWESELANIE
KONSERWOWANIE
Napisz program, który zaszyfruje słowa z pliku dane_6_1.txt z użyciem klucza k = 107. Wynik zapisz do pliku wyniki_6_1.txt, każde słowo w osobnym wierszu, w porządku odpowiadającym kolejności słów z pliku z danymi.
Uwaga:
Dla pierwszego słowa z pliku dane_6_1.txt (INTERPRETOWANIE) wynikiem jest słowo LQWHUSUHWRZDQLH.
A pełne rozwiązanie to:
Wierszjawnyzaszyfrowanybrak zawijania
97INWOKACJALQZRNDFMDLQZRNDFMD
98INWESTOWANIELQZHVWRZDQLHLQZHVWRZDQLH
99ROZSZERZANIEURCVCHUCDQLHUR#V#HU#DQLH
100ARYSTOTELESDUBVWRWHOHVDU#VWRWHOHV

Zadanie 6.2. (0–4)
W pliku dane_6_2.txt zapisano 3 000 szyfrogramów i odpowiadające im klucze szyfrujące. W każdym wierszu znajduje się jeden szyfrogram (zaszyfrowane słowo) i po pojedynczym znaku odstępu odpowiadający mu klucz (maksymalnie czterocyfrowa liczba).
Fragment pliku dane_6_2.txt:
BCYKUNCM 1718
YFOGNSKGYW 7580
WARDA 9334
Napisz program, który odszyfruje słowa zaszyfrowane podanymi kluczami. Wynik zapisz w pliku wyniki_6_2.txt: każde odszyfrowane słowo w osobnym wierszu, w porządku odpowiadającym kolejności szyfrogramów z pliku z danymi.
Uwaga:
Dla pierwszego szyfrogramu z pliku dane_6_2.txt (BCYKUNCM) wynikiem jest słowo ZAWISLAK.
A pełne rozwiązanie to:
Wierszwynik
10KREZEL
11ANTOLAK
100KWIATKOWSKI
453LADA

Zadanie 6.3. (0–5)
W pliku dane_6_3.txt zapisano 3 000 par słów, po jednej parze w wierszu, oddzielonych pojedynczym znakiem odstępu. Drugie słowo w każdej parze jest szyfrogramem pierwszego z nieznanym kluczem.
Niektóre szyfrogramy są błędne, co oznacza, że niektóre litery w słowie zakodowano z różnymi przesunięciami. Słowo ma zawsze tę samą długość co odpowiadający mu szyfrogram.
Fragment pliku dane_6_3.txt:
ZAWISLAK EFBNXQFP
KRASZEWSKI XENFMRJFXV
Napisz program, który wyszuka i wypisze te słowa z pliku dane_6_3.txt, które błędnie zaszyfrowano. Wynik zapisz w pliku wyniki_6_3.txt: każde słowo w osobnym wierszu, w porządku odpowiadającym kolejności tych słów z pliku z danymi.
Uwaga:
Pierwsze słowo w pliku wynikowym to SMIGIELSKI.
Pełne rozwiązanie to:
SMIGIELSKI
JANEK
JANUSZEWSKI
WOLAK
GAJEK
MROCZKOWSKI
SZCZESNIAK
CIESLINSKI