Az I. 228. feladat (2009. december) |
I. 228. A következő játékot ketten játszhatják. Egy sorba felállítanak páros sok bábut, amelyek mindegyikének ismert a tömege. A játékosok felváltva vesznek el a sor valamelyik végéről egy-egy bábut. Amikor a bábuk elfogynak, a levett bábuk tömegét összeadják és az nyert, akinél az összeg nagyobb.
Készítsük el a játék weblapon játszható változatát. Jelenítsük meg egy lapon a bábuk képét és rajtuk vagy alattuk a bábu tömegét. Ha a felhasználó a kívánt bábura kattint, és az a sor végén található, akkor a program tüntesse el a bábut, tömegét pedig adja hozzá a játékos eredményéhez. Amikor az összes bábu elfogyott, a program nevezze meg a győztest. Az egyik játékos legyen a gép, aki a játékot kezdi.
A játékot 16 bábura kell elkészíteni. A gép stratégiája, amely egyben a nyerés algoritmusa a következő: a kezdő játékos összeadja a páros és a páratlan sorszámú bábuk tömegét és azokból veszi le a sor végén állót, amelyik tömege nagyobb. Egyenlőség esetén mindegy, hogy a páros vagy páratlan sorszámúakat szemeli ki.
A feladat megoldásánál a HTML és a JavaScript elemei használhatók.
Beküldendő az i228.html dokumentum és az esetlegesen szükséges GIF, JPEG vagy PNG formátumú képfájlok, valamint a megoldás rövid dokumentációja (i228.txt vagy i228.pdf) egy i228.zip fájlba tömörítve.
(A feladat alapjául az 1996-os Nemzetközi Informatikai Diákolimpia egyik feladata szolgált.)
(10 pont)
A beküldési határidő 2010. január 11-én LEJÁRT.
A feladatot majd minden megoldó jól megoldotta, több apró figyelmetlenség azonban előfordult.
Mivel a megoldást alapvetően egy html dokumentum adta, fontos, hogy a böngészőbeli megjelenítés korrekt legyen. Örültünk volna, ha a beküldött megoldások érvényes html dokumentumok (ellenőrzés: http://validator.w3.org/ ), azonban erre a feladat szövegében nem utaltunk, így az értékelésből is kimaradt. A megjelenés kapcsán azt figyeltük, hogy a netbookok képernyőjén (1024 képpont széles) és egy átlagos asztali monitoron (1440 képpont széles), valamint a két legelterjedtebb böngészőben (Internet Explorer és Firefox) egyező képet mutasson.
Fontos szempont volt, hogy a program betartsa a bábu levételének szabályát és a művelet eredményét meg is jelenítse mind képben, mind a választott bábuk össztömegében (ez utóbbit legalább a végén). A győztes megnevezése látszólag egyszerű, hiszen a kezdőnek nyerő stratégiája van, azonban nem szabad megfeledkezni a döntetlen lehetőségéről sem.
Az értékelésben a legnagyobb súllyal a nyerő stratégia követése szerepelt, amelyet megfelelőnek ítéltünk akkor is, ha a program az elején döntött a leveendő bábukról, de akkor is, ha minden lépés előtt újra elvégezte az értékelést.
A mintaként Szabó 928 Attila és Balla Attila megoldását közöljük utóbbi nem teljes értékű a megjelenítéssel kapcsolatos hiba miatt, azonban a kivitel és a dokumentáció teljessége miatt mégis mintaként szolgálhat.
Szabo928Attila.zip BallaAttila.zip
Statisztika:
5 dolgozat érkezett. 10 pontot kapott: Barta 111 János, Szabó 928 Attila. 9 pontot kapott: Balla Attila. 8 pontot kapott: 1 versenyző. 6 pontot kapott: 1 versenyző.
A KöMaL 2009. decemberi informatika feladatai