Az I. 204. feladat (2009. január) |
I. 204. Múlt havi számunkban, az I. 201. feladatban szerepelt a Cardano-féle rács, amely szövegek titkosítására alkalmas. Készítsünk programot, amely egy megadott rács segítségével titkosít egy megadott szöveget, azaz létrehozza a szöveg betűinek rács által mutatott elrendezését.
A program a rács elrendezését a parancssor első argumentumaként megadott szöveges fájlból olvassa. A fájl egy N×N-es rács esetén N sort tartalmaz, és minden sorában a rács kezdő állása mellett azokban a cellákban, amely alatt látni lehet a betűket egy kis ,,o'' betű található, a többi helyen egy ,,.'' pont. A program a még titkosítatlan szöveget a parancssor második argumentumaként megadott szöveges állományból olvassa. A fájl a magyar ABC kis- és nagybetűi mellett szóközöket, valamint a szokásos írásjeleket tartalmazza, és egy vagy több sorból áll. A program kimenete a parancssor harmadik argumentumaként megadott szöveges állomány, amely N×N-es betűnégyzeteket tartalmaz, melyek egymástól egy-egy üres sorral vannak elválasztva.
A titkosítás a szöveg elejétől kezdődik, és egymás után hozza létre az N×N-es betűnégyzeteket. A betűnégyzetek csak az eredeti szöveg betűit tartalmazzák (mindegyiket nagybetűssé alakítva), a szóközöket, újsor karaktereket és az egyéb írásjeleket nem. A titkosítás könnyen megfejthető, ha a szöveg karaktereinek elfogyása esetén az utolsó betűnégyzet nem teljes, csak bizonyos részein tartalmaz betűket. Ennek elkerüléséhez az utolsó betűnégyzetet úgy kell elkészíteni, hogy a szöveg végéhez hozzáillesztünk a szöveg elejétől annyi betűt, hogy a négyzet teljes legyen.
Példa:
Beküldendő a program forráskódja (i204.pas, i204.cpp, ...), valamint a program rövid dokumentációja (i204.txt, i204.pdf, ...), amely tartalmazza a megoldás rövid leírását, és megadja, hogy a forrásállomány melyik fejlesztő környezetben fordítható.
(10 pont)
A beküldési határidő 2009. február 16-án LEJÁRT.
A feladat megoldása az alábbi FreePascal környezetben készült, érthetően kommentezett programból nyomon követhető (i204.pas).
A megoldásokat a mellékelt tömörített állományban található bemenetekkel teszteltük, emellett a kapott a kimeneteket is közreadjuk. (teszt.zip).
Statisztika:
14 dolgozat érkezett. 10 pontot kapott: Englert Péter, Fehér Péter, Kővágó Zoltán. 9 pontot kapott: Barta 111 János, Erdős Gergely, Jákli Gábor, Tóth Szabolcs. 8 pontot kapott: 1 versenyző. 7 pontot kapott: 1 versenyző. 6 pontot kapott: 1 versenyző. 5 pontot kapott: 3 versenyző. 3 pontot kapott: 1 versenyző.
A KöMaL 2009. januári informatika feladatai