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 edényben, melynek felszíne téglalap alakú, folyadék található. A folyadék felszínén helyen () szigeteket hozunk létre, melyek mindegyikére azonos számú inaktív baktériumot telepítünk. Az összesen számú () baktériumból minden szigetre kerül. Az edény oldalhossza és egység (). A folyadék felszínére gondolatban az oldalakkal párhuzamosan egy négyzethálót fektetünk. Az így keletkező darab egységnégyzet bármelyike pontosan egy szigetet, vagy a folyadék szabad felszínét fedi le. Mindkét fajta egységnégyzet tetszőleges számú baktériumot tartalmazhat. Az -edik sziget () négyzete az egyik hosszabb oldaltól és az egyik rövidebb oldaltól távolságra van (tehát a szigetek a rövidebb oldal felezőmerőlegeséhez közel, az oldaltól és egymástól nagyjából egyenlő távolságban vannak). A szigeteken lévő inaktív baktériumok korlátlan ideig a szigetükön maradnak. A folyadék belsejében elhelyezünk 0 életkorú aktív baktériumokat is, melyek legföljebb ideig () véletlenszerűen mozognak a folyadék felszínén, az edény belsejében, majd elpusztulnak. Ha egy aktív baktérium életének egy bizonyos időszakában ismét egy szigetre érkezik, ahol van inaktív baktérium, akkor az aktív és az egyik inaktív baktérium elpusztul, és kettőjük helyett összesen számú () új, aktív baktérium jön létre. A baktériumokat kutató tudósok nem tudják megállapítani, hogy egy edényben hány szigetet hozzanak létre, hogy az összes baktérium meghatározott időn belül aktiválódjon. Készítsünk szimulációs programot, amely modellezi a jelenséget, és megadja, hogy adott paraméterek mellett hány szigetet érdemes létrehozni. A szimuláció minden lépése egység ideig tartson, és a következők történjenek:
| átlép az egységnégyzetével oldalszomszédos, véletlenszerűen választott négyzetbe és életkora eggyel nő; |
| ha egy sziget négyzetébe ért, akkor |
| ha életkora és közötti, és a szigeten van inaktív baktérium, akkor az aktív és az egyik inaktív baktérium elpusztul, és helyettük számú új, 0 életkorú aktív baktérium jön létre a sziget négyzetében; |
| ha életkora nem a fenti értékek között van, akkor nem történik semmi, a következő szimulációs periódusban folytatja bolyongását; |
| ha a baktérium életkora nagyobb, mint , akkor elpusztul. |
Az aktív baktériumok egymással történő találkozásakor nem történik semmi. A szimuláció kezdetekor elhelyezzük a szigeteket az inaktív baktériumokkal, és beteszünk az edénybe az egyik szélső szigetre 50 darab, 0 életkorú aktív baktériumot. A szimuláció legföljebb 10 000 időegységig tartson, vagy amíg van az edényben aktív baktérium. A program olvassa be a standard input első sorából , , , és értékét, majd írja a standard output első sorába azon értékeket, amelyeknél az összes baktérium aktiválódik. A szimulációt az adott paraméterekkel és minden lehetséges -nel legalább 100-szor futtassuk le. Beküldendő egy tömörített i429.zip állományban a program forráskódja (az .exe és más, a fordító által generált állományok nélkül), valamint a program rövid dokumentációja, amely leírja a megoldás menetét és megadja, hogy a forrás mely fejlesztői környezetben fordítható. |