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 téglalap alakú edényben lévő olvadék kristályosodását, fagyását szimulációval szemléltetjük. Az edényt gondolatban egybevágó négyzet alakú részekre bontjuk, és az olvadék egyes részeinek állapotát egy -es táblázatban tároljuk. Az edényben lévő olvadt anyagot 0, a kristályt pedig 1 jelöli a táblázat megfelelő celláiban. Az olvadék adott állapotában a kristályosodás azokban a cellákban megy végbe, ahol az olvadt anyag 8 szomszédja közül legalább 3 kristály. Példa a szomszédságra:
A kristályosodás folyamatának párhuzamosságát azzal biztosítjuk, hogy minden szimulációs lépésben az összes cellát megvizsgáljuk, és ha szükséges, az olvadt részt kristályosra változtatjuk. Az előbbi példában a középső 0 érték 1-re változik, mert három vele szomszédos cellában van kristály. Hasonlóan az első sor negyedik cellája is 1-re változik. A többi cella állapota ebben a szimulációs lépésben nem változik. Készítsünk szimulációs programot, amely a bemeneti adatállományban megadott kristályokat tartalmazó olvadék teljes kikristályosodásának lépésszámát a standard kimenetre kiírja. A program parancssori argumentuma legyen az olvadék mátrixát leíró adatállomány neve. A fájl első sorában két pozitív egész szám szerepel: az első a táblázat sorainak számát (), a második a táblázat oszlopainak számát () adja meg. Az ezt követő db sor mindegyikében db érték szerepel, amely a megfelelő cellák állapotát (0 vagy 1) írja le. A program kimenete egy pozitív egész szám, amely azt adja meg, hogy hány lépésben kristályosodik ki a teljes olvadék, vagy ha a szabályok figyelembevételével ez nem történik meg, akkor az ,,A kristályosodás leállt'' felirat.
Beküldendő a program forráskódja (i190.pas, i190.cpp, ), valamint a program rövid dokumentációja (i190.txt, i190.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ó. |