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. 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:
| a golyók kezdetben a pálya bal oldalán helyezkednek el, közöttük golyó nélküli pozíció nincs; |
| balról az első golyó minden időegységben egy egységgel tolódik jobbra; |
| minden olyan golyó tolódik, amelynek a szomszédja tolódik; |
| a kilőtt golyó tolódás után ér célba, de még ugyanabban az időegységben |
| ha a találat helyén golyó van, akkor |
| 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; |
| 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; |
| ha a találat helyén nincs golyó, akkor |
| ha valamely szomszédjában van golyó, a golyó a célhelyen marad; |
| különben a golyó eltűnik. |
A bemeneti fájl első sora a pálya hosszát, a pályán lévő golyók számát és a játék során kilőtt golyók számát tartalmazza. A második sor 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ő 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.
| 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. |
| 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. |
| 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 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ó. |