Az I. 187. feladat (2008. május) |
I. 187. Havazáskor a hópihék egymásra rakódnak. Bizonyos magasságot elérve a hótömeg megcsúszik, és veszélyes lavina alakulhat ki. A megcsúszás jelensége minden apró szemcsés, por állapotú szilárd anyagnál megfigyelhető. A jelenséget vizsgáljuk meg egy általunk készített szimulációs programmal.
A talaj az egyszerűség kedvéért legyen sík, N×M cellára (3N,M100) felosztva. A szimuláció minden lépésében essen 1 hópihe valamelyik véletlenszerűen kiválasztott cellára. A valóságban a hópihék időben párhuzamosan esnek, de sok szimulációs lépés végrehajtásával ezt jól közelíthetjük.
A hóréteg vastagsága fokozatosan növekszik, és ezt számoljuk minden cellában. Ameddig a HM (4HM12) kritikus magasságot nem éri el a hó, addig különösebb változás nem történik. Ha a cellában a hópihék száma eléri a kritikus értéket, akkor 4 szomszédjának átad egy-egy hópihét. (A cella értéke 4-gyel csökken és a négy oldalszomszédjáé 1-1-gyel nő.) Ennek hatására a szomszéd cellákban is megnő a hóréteg magassága és a kritikus magasság felett, az előbbiekhez hasonlóan azok is továbbadják a négy szomszédjuknak a hópihéket. Amennyiben a szomszéd cellában a magasság nem éri el a kritikus értéket, akkor az nem ad tovább és így a szomszédjait sem kell tovább vizsgálni. A vizsgált terület széléről ledőlő hó eltűnik. Ha az átadás több cellán keresztül végig vonul, akkor beszélhetünk megcsúszásról, és ha ez a terület nagy, akkor lavináról.
A program jelenítse meg minden hópihe leesése után a változást grafikusan. A jó megfigyelhetőség érdekében a cellákat 3×3-as, vagy 5×5-ös pixelekkel ábrázoljuk. Azokat a cellákat, amelyekben változás nem történt, színezzük egyforma színnel (háttérszín is lehet) és a megváltozott tartalmú cellákat egy másik színnel.
A szimuláció végrehajtása közben lépésenkénti és folyamatos üzemmódok közül lehessen választani. A program leállítását a felhasználó kezdeményezheti.
Beküldendő a program forráskódja (i187.pas, i187.cpp, ...), valamint a program rövid dokumentációja (i187.txt, i187.pdf, ...), amely tartalmazza a megoldás vázlatos leírását, és megadja, hogy a forrásállomány melyik fejlesztő környezetben fordítható.
(10 pont)
A beküldési határidő 2008. június 16-án LEJÁRT.
Megoldás
Havazáskor a hópihék talajra érkezésének helye és ideje véletlenszerűnek tekinthető. A természeti jelenség párhuzamos jellegét nagyszámú elemi lépés (egy hópihe leesése) gyors, egymás utáni végrehajtásával szimulálhatjuk. Modellünkben a talajt egy N×M-es mátrix reprezentálja. A mátrix elemeiben számláljuk az adott pontba érkezett hópelyheket, azaz a hó magasságot ábrázoljuk.
Szimulációs lépés
Vizsgáljunk meg egy elemi lépést! Egy hópehely leesését a mátrix egy véletlenszerű elemének eggyel növelése jelenti. Ha az így kialakuló hó magassága nem éri el a kritikus magasságot, akkor a szimulációs lépés be is fejeződött. Ellenkező esetben az omlás, a megcsúszás jelenségét kell meghatároznunk.
Omlás
Ha a cellában a hópihék száma eléri a kritikus értéket, akkor 4 szomszédjának átad egy-egy hópihét. (A cella értéke 4-gyel csökken és a négy oldalszomszédjáé 1-1-gyel nő.) Ennek hatására a szomszéd cellákban is megnő a hóréteg magassága és a kritikus magasság felett, az előbbiekhez hasonlóan azok is továbbadják a négy szomszédjuknak a hópihéket. A hatás terjedését rekurzív vizsgálattal, illetve mátrixelem érték változtatással tudjuk szimulálni.
Megjelenítés A jelenség tanulmányozásához egy-egy szimulációs lépés után az előző állapothoz képesti változásokat jelenítjük meg. A hópihe becsapódását és az esetleges omlást figyeljük meg. Tanulmányozhatjuk, hogy sok szimulációs lépésen keresztül különösebb változást nem tapasztalunk, a hóréteg vastagsága növekszik. Később 1-1 becsapódás óriási változást, átrendeződést eredményez. Szimulációnk tárgya a káosz-jelenségek közé tartozik. A megcsúszás nagy területre terjedhet ki.
Üzemmódok
A szimuláció végrehajtása közben lépésenkénti és folyamatos üzemmódok választunk a jelenség megfelelő nyomon követéséhez. A lépésenkénti üzemmód azt jelenti, hogy valamely billentyű leütése szükséges egy új hópehely leeséséhez. Így a kiváltott hatás jól megfigyelhető.
Siegler Gábor
Mintamegoldás
Statisztika:
6 dolgozat érkezett. 10 pontot kapott: Véges Márton. 9 pontot kapott: Póta Kristóf. 8 pontot kapott: 1 versenyző. 6 pontot kapott: 1 versenyző. 5 pontot kapott: 2 versenyző.
A KöMaL 2008. májusi informatika feladatai