Feladat: I.256 Korcsoport: - Nehézségi fok: -
Füzet: 2011/január, 33 - 34. 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.

Sok természeti jelenségnél megfigyelhetők a mintázatok. Ezek általában visszavezethetők olyan folyamatokra, melyeknél a kezdetben egységes rendszerben különböző alakzatok jelennek meg. Például kémiai hullámok haladnak az oldatban, vagy az állatok bőre foltossá válik.

 
 

Készítsünk programot i256 néven, amely a foltképződést a következő modellel szimulálja. Legyen egy M×M (10M500) négyzet, amelynek minden pontja két különböző színű állapotban lehet. Érdemes a pontok színét egy mátrixban tárolni.
A szimuláció indításakor minden pont színe véletlenszerűen a kettő közül az egyik. A továbbiakban minden lépésnél a négyzet egy véletlen pontjának a színét változtathatjuk meg. A szabály az, hogy minden pont alakuljon olyan színűvé, amilyen szomszédból több van. A változást a képernyőn jelenítjük meg anélkül, hogy a teljes négyzetet (reakcióteret) újrarajzolnánk. Ezzel a lassú képváltást, villódzást elkerülhetjük. A foltok mérete és alakja függ K (1K4) szomszédszám nagyságától.
Minta K=1, 2 illetve 3 szomszédszámra:
 
 

A reakciótér szélén természetesen a figyelembeveendő pontok száma kevesebb. A szimuláció addig tartson, ameddig a felhasználó le nem állítja.
A program parancssori argumentuma legyen M és K értéke.
Lehetséges eredmény M=150 és K=1 esetén
 
 

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