Termín odevzdání | 13.11.2023 23:59 CET |
---|---|
Bodový zisk | 6b |
Naším úkolem je rozluštit zprávu zakódovanou Caesarovou šifrou, která funguje na principu záměny písmene z abecedy za písmeno posunuté o pevně určený počet míst. V našem případě máme k dispozici nejen zašifrovaný text, ale také nespolehlivě odposlechnuté originální znění zprávy, tj. některé znaky originální zprávy jsou chybně zapsány. Řešení tak můžeme založit na testování všech možností kódování Caesarovou šifrou a porovnání s odposlechnutým textem. Posun s největší shodou dekódovaného textu s odposlechnutou zprávu budeme považovat za správný a takto dekódovaný text je náš požadovaný výstup. Obecně nemusí tento postup vést na unikátní správné řešení, nicméně v testovaných případech vždy existuje unikátní řešení.
Do systému BRUTE odevzdávejte soubor pojmenovaný caesar.py
. V tomto souboru bude funkce dekoduj(sifrovany, odposlechnuty)
. První parametr je zakódovaná zpráva a druhý parametr je nespolehlivě odposlechnutý text.
Error: Chybny vstup!
” a skončí.
Error: Chybna delka vstupu!
” a skončí.
Error: Chybny vstup!
” a skončí.
Výstupem je návratová hodnota funkce v podobě dekódované zprávy jako posloupnosti znaků bez znaku konce řádku. Pokud při běhu programu došlo k chybě, návratová hodnota funkce je None
.
V prvním příkladu je zašifrován text “Helloworld
”. Posun je zde o 42 písmen. (16 míst je mezi 'h' a 'x'; 26 pak mezi malými a velkými písmeny). Zašifrovaný text je tedy “xUbbemehbT
”.
Odposlechnutý text může být například “??lloworld
”, kde písmena na místě otazníku špatně odposlechneme a dostaneme jiné náhodné písmeno, například “XYlloworld
”.
Vstup | Očekávaný výstup | Očekávaný chybový výstup |
---|---|---|
xUbbemehbT XYlloworld | Helloworld | žádný |
Příklad vyhodnocení. Největší počet shodných písmen (8/10) má posun o 10, proto jej vyhodnotíme jako správný výsledek.
00: xUbbemehbT ~ XYlloworld > 0 correct letters 01: yVccfnficU ~ XYlloworld > 0 correct letters 02: zWddgogjdV ~ XYlloworld > 1 correct letters 03: AXeehphkeW ~ XYlloworld > 0 correct letters 04: BYffiqilfX ~ XYlloworld > 1 correct letters 05: CZggjrjmgY ~ XYlloworld > 0 correct letters 06: DahhksknhZ ~ XYlloworld > 0 correct letters 07: Ebiiltloia ~ XYlloworld > 1 correct letters 08: Fcjjmumpjb ~ XYlloworld > 0 correct letters 09: Gdkknvnqkc ~ XYlloworld > 0 correct letters 10: Helloworld ~ XYlloworld > 8 correct letters -- result 11: Ifmmpxpsme ~ XYlloworld > 0 correct letters 12: Jgnnqyqtnf ~ XYlloworld > 0 correct letters ... 50: vSZZckcfZR ~ XYlloworld > 0 correct letters 51: wTaadldgaS ~ XYlloworld > 0 correct letters 52: xUbbemehbT ~ XYlloworld > 0 correct letters
Vstup | Očekávaný výstup | Očekávaný chybový výstup |
---|---|---|
mnoXYhnTLJ JCudvgtXRi | studentZRP | žádný |
Vstup | Očekávaný výstup | Očekávaný chybový výstup |
---|---|---|
fghQRa-CEC scbdeMKARZ | žádný | Error: Chybny vstup! |
Vstup | Očekávaný výstup | Očekávaný chybový výstup |
---|---|---|
fghQRa scbdeMK | žádný | Error: Chybna delka vstupu! |