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. 382. feladat (2015. október)

I. 382. A ZUMA egy többféle elrendezésű pályán játszott lövöldözős játék. A játék során a pályán mozgó, kezdetben folytonos sort alkotó, különböző színű golyókat kell lövések segítségével eltüntetni, mielőtt azok bármelyike elérné a pálya végét. Készítsünk programot, amelyben a játékot egy egyenes szakaszon játsszuk, a golyók balról jobbra mozognak és minden időegységben egy lövés történik.

Szabályok:

\(\displaystyle \bullet\) a golyók kezdetben a pálya bal oldalán helyezkednek el, közöttük golyó nélküli pozíció nincs;

\(\displaystyle \bullet\) balról az első golyó minden időegységben egy egységgel tolódik jobbra;

\(\displaystyle \bullet\) minden olyan golyó tolódik, amelynek a szomszédja tolódik;

\(\displaystyle \bullet\) a kilőtt golyó tolódás után ér célba, de még ugyanabban az időegységben

\(\displaystyle \circ\) ha a találat helyén golyó van, akkor

\(\displaystyle *\) ha a találat helyén és közvetlenül mellette azonos színű golyók voltak egymás mellett;

- azokat eltünteti, helyük üres lesz;

- amíg az üressé váló rész két oldalán együttvéve 3 vagy több azonos színű golyó van, azok is eltűnnek;

\(\displaystyle *\) különben a kilőtt golyó a találat helyére kerül, az ott lévő golyó pedig jobbra tolódik és a jobbra lévő golyók közül mindazok tolódnak, amelyek szomszédja tolódik;

\(\displaystyle \circ\) ha a találat helyén nincs golyó, akkor

\(\displaystyle *\) ha valamely szomszédjában van golyó, a golyó a célhelyen marad;

\(\displaystyle *\) különben a golyó eltűnik.

A bemeneti fájl első sora a pálya \(\displaystyle h\) hosszát, a pályán lévő golyók \(\displaystyle p\) számát és a játék során kilőtt golyók \(\displaystyle k\) számát tartalmazza. A második sor \(\displaystyle p\) darab karaktert tartalmaz, amely a golyók színét jelöli, amelyek sorrendben a pálya bal szélétől helyezkednek el. (A golyók színét az A, ..., F karakterek jelölik.) A következő \(\displaystyle k\) sor egy-egy golyó-hely párt tartalmaz: a páros első tagja a golyó színét jelöli, a második tagja pedig a pozíciót, amelyen a golyó a pályát eléri. A kimenet a rendszer állapotát mutatja az utolsó lövést követően.

\(\displaystyle \bullet\) Ha az összes golyót sikerült lövésekkel eltüntetni, akkor az első sorba 0 kerüljön, a második sorba azon lövés sorszáma, amely után ez először teljesült.

\(\displaystyle \bullet\) Ha valamely golyó elérte a pálya végét, akkor az első sorba a -1 kerüljön, a második sorba pedig azon lövés sorszáma, amely után ez történt.

\(\displaystyle \bullet\) Ha van még golyó a pályán, de egy sem érte el a végét, akkor az első sor az 1 értéket tartalmazza, a második sor pedig \(\displaystyle h\) darab karaktert, amely a pályán lévő golyók színét jelöli balról jobbra. Az üres pozíciókra . kerüljön.

Az alábbi példa sorai egy-egy, egymástól független állapotokban bekövetkezett lövést és annak eredményét mutatják.

A program első parancssori argumentuma a bemeneti fájl neve, a második pedig a kimeneti fájl neve legyen.

Beküldendő egy tömörített i382.zip állományban a program forráskódja, valamint a program rövid dokumentációja, 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ó.

(10 pont)

A beküldési határidő 2015. november 10-én LEJÁRT.


A megoldások értékeléséhez a következő bemeneteket használtuk: i382bemenet.zip

be0a-0e: a feladatleírásnál megadott eseteket tartalmazza (3 helyes - 1 pont, 5 helyes - 2 pont)

be0f-0g: azonos elemekre vonatkozó speciális eset (mindkettő helyes: 1 pont)

be1a-1b: azonos elemekre vonatkozó speciális eset (mindkettő helyes: 1 pont)

be2: a feladatleírásban megtalálható minta

be3-be5: általános tesztesetek

Az érdemi dokumentáció 1 pontot ért, a bemenetek leírásnak megfelelő kezelése újabb 1 pontot jelentett.


Statisztika:

10 dolgozat érkezett.
8 pontot kapott:2 versenyző.
7 pontot kapott:2 versenyző.
6 pontot kapott:1 versenyző.
5 pontot kapott:3 versenyző.
1 pontot kapott:2 versenyző.

A KöMaL 2015. októberi informatika feladatai