Feladat: I.262 Korcsoport: - Nehézségi fok: -
Füzet: 2011/március, 163 - 164. oldal  PDF  |  MathML 

A szöveg csak Firefox böngészőben jelenik meg helyesen. Használja a fenti PDF file-ra mutató link-et a letöltésre.

Szövegek titkosításának régen használt módszere a betűcsere, amelynél egy meghatározott rendszer szerint az ábécé egyes betűit egy másikra cserélik. Ezt már a számítógépek használata előtt is aránylag könnyen feltörték statisztikai módszerekkel, az egyes betűk előfordulási arányait figyelve az adott nyelvben és a kódolt szövegben.
Rendelkezésünkre áll a titkos.txt állományban egy betűcserés módszerrel titkosított szöveg. A szöveget a betűcserék előtt még át is kódolták.
Az átkódolás a következőképpen történt:

Az ékezetes magánhangzók ékezet nélküli párjukkal lettek helyettesítve.
A szóközöket q betűvel helyettesítették.
A szövegből elhagyták az írásjeleket és minden más szövegtagolást.
A teljes szövegben nagybetűs írásmódot állítottak be.

Ezek után végül minden betű helyére pontosan egy-egy másik került, végig azonos szisztéma szerint.
A szöveg kezdőrészlete:
 
 

Készítsünk programot i262 néven, amely segít megfejteni a titkosított szöveget.
A program első parancssori argumentuma legyen a megfejtendő titkos szöveget tartalmazó állomány neve, második argumentumaként pedig egy hosszú, magyar nyelvű szöveget tartalmazó állomány nevét lehessen megadni. Az állományból a magyar nyelvű szövegre jellemző betű-előfordulási arányokat határozzuk meg, ennek alapján próbálkozhatunk a titkos szöveg karakterhelyettesítésnek megfejtésével. Ilyen állományokat például a Magyar Elektronikus Könyvtárban találhatunk. A harmadik argumentum az általunk (legalábbis részben) visszakódolt szöveg kimeneti állományának neve legyen.
A program készítse el az első két állomány betűstatisztikáját és ezt jelenítse meg a képernyőn az előfordulás gyakorisága szerint csökkenően. A megfejtendő szöveg első 100-200 karakterét is jelenítse meg, és ezen lehessen karaktercserét végrehajtani. A már lecserélt karaktereket lehet kisbetűs írásmóddal megjeleníteni. Nem szükséges a programmal az összes nagybetűs karaktert egyszerre lecserélni, megengedett a szövegállomány utólagos javítása.
Beküldendő egy tömörített állományban (i262.zip, i262.rar):
a megfejtett szöveg (megfejtes.txt),
a program forráskódja (i262.pas, i262.cpp, ...),
a program rövid dokumentációja (i262.txt, i262.pdf, ...), amely tartalmazza a program használatának bemutatását, a megoldás rövid leírását, és megadja, hogy a forrásállomány melyik fejlesztő környezetben fordítható.