Feladat: I.250 Korcsoport: - Nehézségi fok: -
Füzet: 2010/november, 485 - 486. 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.

Legyen egy N×M (5N,M100) téglalap alakú lemezünk, amelyben a repedések terjedését szeretnénk szimulálni.
A téglalapot töltsük fel 0...99 közötti véletlen számokkal. A téglalap oldalainak maximális értékű pontjaiból fognak a repedések kiindulni. Ha több maximális értékű pont van egy oldalon, akkor egyszerre onnan több repedés indul ki. A repedések az oldaltól függő irányba növekszenek tovább. Például az alulról induló repedés csak balra fel, vagy fel, vagy jobbra fel terjedhet. A jobbról érkező repedés balra fel, balra, vagy balra le, a többi irányból hasonlóan elv szerint terjedhet.
Alulról érkező repedés választható lépése vastagon keretezve:

 
 

A három választható szám közül a maximális érték irányába folytatódik a repedés. Ha azonos számokat talál, akkor ezek irányában szétágazik. Ha eléri a téglalap szélét vagy már egy kialakult repedésbe fut bele, akkor ott a terjedés megáll.
Készítsünk programot, amely az N×M téglalapban a repedések kialakulását mutatja be.
A program első két argumentuma N és M értéke, a harmadik egy kimeneti fájl legyen. A kimeneti fájlban jelenítsük meg a véletlen számok mátrixát és a mintán látható módon a repedések képét. A megjelenítés során a repedést ,,X'' és többi pontot ,,.'' karakter ábrázolja. A számok, illetve a karakterek között egy-egy szóköz legyen.
Lehetséges eredmény 10×10-es lemez repedésekor:
 
 

Beküldendő a program forráskódja (i250.pas, i250.cpp, ...), valamint a program rövid dokumentációja (i250.txt, i250.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ó egy tömörített i250.zip mappában.