Az I. 209. feladat (2009. március) |
I. 209. Készítsük el a ,,MasterMind'' játék táblázatkezelő programmal játszható változatát. A játékról részletesen olvashatunk a
http://egyszervolt.hu/jatek/mastermind.html
oldalon, és ugyanitt ki is próbálhatjuk.
Megoldásunkban a játéktér az ábrán látható szerkezetű legyen, színek helyett az ábécé első hat betűjét használjuk. A játékot két játékos játssza: az egyikük a kigondolt betűsorozatot a 2. sor első 4 cellájába írja, a másik játékos pedig a 4. sortól kezdődően tippelhet.
A tipp helyességét az adott sor E és F oszlopa mutassa. Az E oszlopban azon karakterek száma jelenjen meg, amelyek az adott tipp és a rejtett értékek sorában is ugyanabban az oszlopban vannak. Az F oszlopban pedig az, hogy hány cellában szerepel olyan karakter, ami megtalálható a rejtett listában, de nincs a helyén. A helyes tipp más háttérrel és félkövér karakterekkel jelenjen meg, a tippek számára pontosan 20 sornyi helyet készítsünk elő.
Az élvezetes játék érdekében figyeljünk továbbá arra, hogy az A2:D2 cellák tartalma - helyes bejegyzés esetén - ne legyen látható. (Az elrejtés például a háttérrel egyező szövegszínnel biztosítható.) Az E és az F oszlopokban az értékelés pedig csak akkor jelenjen meg, ha a második játékos formailag helyes tippet adott, azaz mind a 4 cellába beírta a felhasználható karakterek egyikét.
Beküldendő a táblázatkezelő munkafüzet (i209.xls, i209.ods, ...), illetve egy rövid dokumentáció (i209.txt, i209.pdf, ...) amelyben szerepel a megoldáskor alkalmazott táblázatkezelő neve, verziója, valamint a megoldás rövid leírása.
(10 pont)
A beküldési határidő 2009. április 15-én LEJÁRT.
A feladatra több tökéletes és majdnem ugyanennyi lényegi részében helyes megoldás érkezett.
Az alábbiakban közölt megoldási leírás - amely a legtöbb beküldő által használt Excel 2003 programhoz illeszkedik - részben ezek felhasználásával készült.
A kigondolt betűsorozat (A2:D2) láthatóságát – mivel kézzel bejegyzett értékekről van szó – csak feltételes formázással lehetett megoldani. A beküldők többsége cellánként döntött a megjelenítésről.
Az A2 cella esetén a feltétel lehetett: =VAGY(A2="A";A2="B";A2="C";A2="D";A2="E";A2="F") vagy =SZÖVEG.KERES(A2;"ABCDEF")>0
Utóbbi hibát generál akkor, ha nem megfelelő karaktert adunk meg, de feltételes formázás ennek ellenére helyes működik.
Az E és F oszlopokban csak akkor kellett megjeleníteni a találatok számát, ha formailag helyes betűsorozat került az első négy oszlopba. Mivel e cellákat nem kézzel kell kitölteni, így a feladat Ha() függvénnyel és feltételes formázással is megoldható. A feltételes formázás egyszerűbb megoldást nyújt, mivel ekkor a cellákban szereplő képlet egyszerűbben kialakítható.
Az ehhez szükséges függvény például:
=DARABTELI(A4:D4;"A") +DARABTELI(A4:D4;"B") +DARABTELI(A4:D4;"C") +DARABTELI(A4:D4;"D") +DARABTELI(A4:D4;"E") +DARABTELI(A4:D4;"F") <>4
A képlet azt használja ki, hogy az egyes karakterek előfordulási száma összesen ki kell adja a cellák számát.
A mintát megvizsgálva többen felfedezték, hogy az F oszlopban nem látható semmi, ha az ott szereplő érték 0. Ezt a feltételes formázást újabb feltétellel bővítve lehet elérni a legegyszerűbben. Logikus lett volna ezt az E oszlopban is beállítani, azonban ezt az értékelésnél nem vizsgáltuk, mert a feladat szövege és a minta nem adott erre utasítást.
Az E oszlop megfelelő (helyén van) cellájának kitöltése a legegyszerűbben a
=HA(A4=A$2;1;0)+HA(B4=B$2;1;0)+HA(C4=C$2;1;0)+HA(D4=D$2;1;0)
képlettel történhetett.
A képlet azt vizsgálja, hogy az egyes cellák tartalma páronként megegyezik-e.
Az F oszlopban az egyezéseket kellett megtalálni, amelyek nem a helyükön vannak.
=MIN(DARABTELI(A4:D4;"A");DARABTELI(A2:D2;"A")) +MIN(DARABTELI(A4:D4;"B");DARABTELI(A2:D2;"B")) +MIN(DARABTELI(A4:D4;"C");DARABTELI(A2:D2;"C")) +MIN(DARABTELI(A4:D4;"D");DARABTELI(A2:D2;"D")) +MIN(DARABTELI(A4:D4;"E");DARABTELI(A2:D2;"E")) +MIN(DARABTELI(A4:D4;"F");DARABTELI(A2:D2;"F")) -E4
A képlet egy általános sora azt határozza meg, hogy a kigondolt és a tippelt betűsorozatban az adott betű hányszor szerepel. Az adott betű nyilván annyiszor szerepel a tippben -- a helyén vagy másutt -- amennyi a kettő közül a kisebbik érték. Ha ezt az összes karakterre összegezzük, akkor abból levonva az egyezések számát (az E oszlop tartalmát) kapjuk meg az adott cella értékét.
Telitalálat esetén az adott sor első négy cellájának háttérszínét módosítani kellett, ami az adott sor E oszlopbeli értékét vizsgáló feltételes formázással oldható meg.
A tippek helyét 20 sorra kellett elkészíteni. Az értékeléskor csak azt vizsgáltuk, hogy a megoldás felkészült-e legalább 20 sor kezelésére.
A helyesen megoldást beadók közül a feladatot kétféleképpen is megoldó Janosov Milán megoldását tesszük közzé. i209minta.zip
Statisztika:
12 dolgozat érkezett. 10 pontot kapott: Balla Attila, Janosov Milán, Kristóf Tamás. 9 pontot kapott: Englert Péter, Fehér Péter, Pap 999 Dávid. 8 pontot kapott: 1 versenyző. 7 pontot kapott: 2 versenyző. 6 pontot kapott: 2 versenyző. 5 pontot kapott: 1 versenyző.
A KöMaL 2009. márciusi informatika feladatai