1. Domácí úkol - dešifrování pomocí mřížky

Čtěte prosím tuto stránku celou a pozorně.

Zadání

Napište program, který pomocí mřížky dešifruje zadaný text. Mřížka velikosti N je čtvercový papír, který je rozdělen na NxN políček. Některá políčka jsou vystřižena.

Před dešifrováním se text musí uspořádat do čtvercových bloků velikosti mřížky. Vstupní zašifrovaný text programu bude mít vždy takovou velikost, aby počet znaků byl násobkem NxN. Dešifrování probíhá po jednotlivých blocích. Mřížka se postupně přikládá na blok textu a po každém přiložení se po řádcích přečtou znaky ve vystřižených políčkách. Po přečtení znaků se mřížka pootočí o pravý úhel PO směru hodinových ručiček a opět se čtou znaky, které jsou vidět ve vystřižených políčkách. Mřížka je zkonstruována tak, aby po čtvrtém čtení znaků už byly přečteny všechny znaky z daného bloku. Pokračuje se dalším blokem.

Příklad:
Mřížka (1 představuje vystřižené políčko)

1 0 0 0
0 1 0 1
0 0 0 0
0 1 0 0
Zašifrovaný text:
AMIE
FBGC
JNKO
PDHL
Správný text po dešifrování by měl být ABCDEFGHIJKLMNOP.

Formát vstupu a výstupu

Program bude mít na vstupu dva soubory: mrizka.txt a vstup.txt.

Vstupní soubor mrizka.txt má na prvním řádku číslo odpovídající délce hrany mřížky. Toto číslo je vždy sudé, označme jej N. Následuje N řádek, na každém řádku je N binárních číslic. Jednotlivé číslice jsou odděleny mezerou. (Je to stejné jako ve výše uvedeném příkladu.)

Vstupní soubor vstup.txt obsahuje zašifrovaný text, každý řádek má délku hrany mřížky. Počet řádků je násobkem délky hrany mřížky.

Výstupní soubor vystup.txt musí obsahovat dešifrovaný text. Rozdělení textu na řádky je libovolné.

Ukázkové vstupní a výstupní soubory si můžete stáhnout zde: data.tar.gz, nebo zde: data.zip.

Soubory ve formátu .tar lze rozbalit například Total Commanderem, nebo pomocí programu tar.exe příkazem "C:\>tar.exe xvf data.tar". Více informací o použití programu tar najdete zde.

Hinty

V souborech data.tar.gz a data.zip najdete také ukázkové programy pro načítání a zapisování dat do souboru. Zapisování do souboru je podobné tisku na obrazovku. Načítání ze souboru je podobné načítání dat z klávesnice.

Poznámky

Termíny

Termín zadání: 25.10.2005.
Termín odevzdání: do 6.11.2005 včetně.
Termín odevzdání oprav: do 13.11.2005 včetně.


email
hruska (zavináč) popelka (tečka) ms (tečka) mff (tečka) cuni (tečka) cz