Az I. 453. feladat (2018. március) |
I. 453. Feladatunk egy síkbeli bolyongás szimulációja és az eredményének megmutatása. Egy \(\displaystyle N\times M\) méretű négyzetháló celláiban egész számok vannak. A cellák jelentős részében a 0, míg néhány cellában a \(\displaystyle -5\) vagy \(\displaystyle +5\) található. Ezeket a cellákat megjelöljük, és a bennük lévő számot rögzítjük, vagyis nem fog változni a szimuláció során. A kezdetben nulla értékű cellák mindegyikéből elindulunk, és egy ideig véletlenszerűen bolyongunk a cellák között, amíg meg nem érkezünk egy megjelölt cellába. Ekkor a kezdetben nulla értékű cella számához hozzáadjuk annak a megjelölt cellának a számát, ahová eljutottunk.
Ezt a bolyongást minden, kezdetben nulla értékű cellából \(\displaystyle S\)-szer végezzük el, tehát az ilyen cellák számértéke \(\displaystyle S\)-szer fog változni. A bolyongás során minden esetben egy celláról egy vele csúcsban vagy oldalánál érintkező szomszédos cellára lépünk. Ha az \(\displaystyle S\)-szeri bolyongást minden nem megjelölt cellára elvégeztük, akkor a szimuláció véget ér. Ekkor minden megjelölt cella értékét megszorozzuk \(\displaystyle S\)-sel. Az így kialakult számértékekhez rendeljünk lineárisan egy színskáláról színeket, és a kapott képet jelenítsük meg grafikusan.
A program bemenete a négyzetháló mérete (\(\displaystyle 50 \le N, M \le 100\)), az egy cellából induló bolyongások száma (\(\displaystyle 50 \le S \le 1000\)), valamint a nem nulla kezdőértékű cellák száma (\(\displaystyle 1 \le Z \le 100\)), és soronként egy-egy megjelölt cella koordinátái és \(\displaystyle -5\) vagy \(\displaystyle +5\) értéke.
A feladat megoldásaként a versenykiírásban szereplő eszközökkel elkészíthető alkalmazások mellett a webes vagy mobil applikációkat is elfogadjuk. A bemeneti adatok egyszerű bevitelét az alkalmazás jellegétől függően lehessen megadni.
Beküldendő egy i453.zip tömörített állományban a program forráskódja és a működéséhez szükséges egyéb fájlok, továbbá a hozzá kapcsolódó felhasználói dokumentáció, valamint a leírás, amely tartalmazza, hogy a forrásállomány melyik fejlesztői környezetben fordítható.
(10 pont)
A beküldési határidő 2018. április 10-én LEJÁRT.
Mintamegoldásként az öt helyes megoldást beküldő versenyző munkáját mutatjuk be – mindegyik tanulságos a nyelvi és grafikai megvalósításuk eltérő.
A feladat kitűzésében nem szerepelt, hogy mi történjen akkor, amikor a bolyongás kivezet az \(\displaystyle N \times M\)-es területről. A megoldók maguk döntöttek arról, hogy a lépést ne engedjük meg, vagy az egyik oldalon kimenő bejön a másik oldalon, vagy a bolyongás a ,,végtelenbe'' visz, tehát nem módosítja az eredményt. A megoldások lényege ebben különböző, így más-más ábrát adnak.
Csahók Mihály budapest, 10. évfolyamos tanuló munkája (Python): i453csm.zip
Papp Marcell Miklós 8. évfolyamos, miskolci versenyző munkája (HTML/Javascript): i453pmm.zip
Vígh Márton budapesti, 10. osztályos tanuló megoldása (C#): i453vm.zip
Zsombó István pécsi, 12. évfolyamos versenyző megoldása (Java): i453zsi.zip
Ürmössy Dorottya budapesti, 9. osztályos tanuló munkája (HTML/Javascript): i453ud.zip
Statisztika:
7 dolgozat érkezett. 10 pontot kapott: Csahók Mihály, Papp Marcell Miklós, Ürmössy Dorottya, Vígh Márton, Zsombó István. 8 pontot kapott: 1 versenyző. 6 pontot kapott: 1 versenyző.
A KöMaL 2018. márciusi informatika feladatai