Feladat: I.343 Korcsoport: - Nehézségi fok: -
Füzet: 2014/március, 160 - 161. 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.

Egy N×N-es (1N50) tábla cellái üres vagy színes négyzetek. A táblát függőlegesre állítva a színes négyzetek a legalacsonyabb üres helyet foglalják el, azaz a gravitáció miatt egymásra csúsznak. Háromféle: piros, kék és zöld színű négyzet lehetséges, amelyeket P, K és Z betűk jelölnek, az üres cellát a . karakter. A táblát szegély veszi körbe, ami megakadályozza, hogy a színes négyzetek kiessenek.
A táblát balra, jobbra, illetve függőlegesen át lehet forgatni. A forgatás hatására a színes négyzetek újra a legalacsonyabb szabad cellába csúsznak.

 
 

A tábla egyik oldalán egy nyílás van, amely induláskor a tábla legalsó sorának K-adik (1KN) oszlopába esik. Ezen keresztül a felette lévő színes négyzetek kicsúsznak, azaz a táblából törlődnek.
K=4 esetén:
 
 

A tábla forgatását egy utasítássor adja meg. Az utasítássor B, J és F betűkből áll. A B a balra, a J jobbra és az F a függőleges átforgatást írja le.
Készítsünk programot i343 néven, amely a tábla forgatását leíró utasítássort végrehajtja.
A program első parancssori argumentuma a táblát és az utasítássort leíró adatállomány neve legyen. A fájl első sorában N (1N50) a tábla méretét és K (1KN) a nyílás helyét adja meg. Az ezt követő N sor a tábla indulás előtti cellánkénti tartalmát adja meg, majd a rákövetkező sorban a forgatásokat leíró utasítássor (1karakterek száma50) következik.
A parancssor második argumentumaként megadott kimeneti állomány első három sorába az utasítássor végrehajtása utáni színes négyzetek számát írjuk. Az ezt követő N sorba a tábla forgatások utáni állapotát adjuk meg cellánként.
 
BemenetKimenet   5 3   Piros: 4 darab   .....   Kek: 4 darab   ...K.   Zold: 1 darab   .P.K.   .....   PZ.KZ   K....   KZ.PP   KP...   BFJ   ZK.P.   PP.K.   
 

Beküldendő a program forráskódja (i343.pas, i343.cpp, ...) és rövid dokumentációja (i343.txt, i343.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ó.