Középiskolai Matematikai és Fizikai Lapok
Informatika rovattal
Kiadja a MATFUND Alapítvány
Már regisztráltál?
Új vendég vagy?

Az I. 504. feladat (2020. február)

I. 504. A középkorban használt titkosítási eljárások egyike a Cardano-rács. A titkosítandó szöveget ebben az esetben négyzet alakban rendezik el, a szöveg rejtjelezése és visszafejtése pedig az erre illeszkedő, megfelelő helyeken kivágott rostély ablakain keresztül történik. A szövegből a rácsban csak a betűk szerepelnek, az írásjelek és szóközök nem. A rostély egy-egy helyzetében a látható betűket sorfolytonosan kiolvassuk, a rostély háromszori körbefordításával a négyzet minden betűje felhasználásra kerül. (A dupla betűket két karakterrel kódoljuk, például GY helyett G és Y.)

A módszer bemutatása az I. 201. feladatban szerepelt, érdemes belenézni a kitűnő mintamegoldásokba (https://www.komal.hu/feladat?a=feladat&f=
I201&l=hu
).

Készítsünk programot, amely a Cardano-ráccsal történő rejtjelezést és visszafejtést végzi el:

1. Olvassuk be és tároljuk el a Cardano-rácsot tartalmazó cardano.txt állományt, amely egy \(\displaystyle 6\times 6\)-os rostélyt tartalmaz. Az átlátszó rácspontokban 0 szerepel, a nem átlátszókban 1.

2. Készítsünk eljárást Forgat néven, amely lehetővé teszi a Cardano-rács \(\displaystyle -90\) fokos (vagyis az óramutató járásával egyező irányú) elforgatását.

3. Írassuk ki a képernyőre a megadott Cardano-rácsot, valamint annak \(\displaystyle -90\) fokos elforgatását. A két rács egymás alatt jelenjen meg.

4. A fenti mintán látható szöveget a titkos.txt fájl tartalmazza \(\displaystyle 6\times 6\)-os rácsokra bontva. Olvassuk be a fájl tartalmát, fejtsük vissza azt a megadott Cardano-rács segítségével a Forgat eljárás felhasználásával, majd a megfejtést sorfolytonosan írassuk ki a képernyőre.

Ha a titkosítandó szöveg ,,egy négyzetnél'' hosszabb, akkor azt több négyzetre kell bontani. Ha nem tesz ki a szöveg utolsó része egy teljes négyzetet, akkor azt véletlenszerű karakterekkel töltik fel.

A Cardano-rács alkalmazásával találkozhatunk Jules Verne: Sándor Mátyás c. könyvében is. A könyvben szereplő titkosítandó szöveget a nyilt.txt UTF-8 kódolású állomány tartalmazza. A könyvben a titkosítást két lépésben végezték, az alábbiakban ezt kell végrehajtani:

5. Olvassuk be a nyilt.txt fájl tartalmát, majd fordítsuk meg a szöveget. A beolvasott, illetve a megfordított szöveget egyaránt írassuk ki a képernyőre.

6. A felcserélt karakterekből álló szöveget rejtjelezzük a megadott Cardano-rács alkalmazásával, és az eredményt \(\displaystyle 6\times 6\)-os rácsban – a minta szerint – írassuk ki a sandormatyas.txt fájlba.

Beküldendő egy i504.zip tömörített állományban a program forráskódja és egy rövid leírás, ami megadja, hogy a forrásállomány melyik fejlesztői környezetben fordítható.

Letölthető fájlok: cardano.txt, nyilt.txt, titkos.txt.

(10 pont)

A beküldési határidő 2020. március 10-én LEJÁRT.


Értékelés: A feladatra mindössze 9 megoldás érkezett, de egy kivételével mind 10 pontos. Bár a megadott szövegek UTF-8 kódolású, ékezetes szövegek voltak, teljes értékűként elfogadtuk azokat a megoldásokat is, amelyek csak ASCII kódolással működnek helyesen, mivel ez nyelvfüggő.

Mintamegoldás: A mintamegoldás Nagy 793 Mártontól, a váci Boronkay György Műszaki Szakközépiskola, Gimnázium és Kollégium 12. évfolyamos tanulójától származik, és C# nyelven készült.

i504.cs


Statisztika:

9 dolgozat érkezett.
10 pontot kapott:Endrész Balázs, Horcsin Bálint, Kós Péter, Mályusz Etre Magnusz, Mócsy Mátyás, Nagy 793 Márton, Szabó Barbara Noémi, Ürmössy Dorottya.
8 pontot kapott:1 versenyző.

A KöMaL 2020. februári informatika feladatai