Középiskolai Matematikai és Fizikai Lapok
Informatika rovattal
Kiadja a MATFUND Alapítvány
Már regisztráltál?
Új vendég vagy?

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