Mathematical and Physical Journal
for High Schools
Issued by the MATFUND Foundation
Already signed up?
New to KöMaL?

Problem I. 209. (March 2009)

I. 209. By using a spreadsheet application, prepare a version of the game MasterMind. (See, for example, http://en.wikipedia.org/wiki/Mastermind_(board_game), or http://egyszervolt.hu/jatek/mastermind.html where you can also play the game.) In our example, ``Rejtett'' means ``hidden'', ``Tippek'' is ``guesses'', ``Helyén van'' is ``in the correct place'', while ``Szerepel'' means ``present but out of place''.

Your solution should be similar to our example. Instead of colours, you should use the first 6 letters of the English alphabet. The game is played by two players: the code maker places four secret letters in the first 4 cells of row 2. The other player, the code breaker makes several guesses beginning with row 4.

The result of a guess in a given row should be displayed in columns E and F. Column E should contain the number of letters of the current guess that are in the correct place compared to the 4 secret letters, while column F should give the number of cells of the guess that contain letters being present among the 4 secret letters but are out of place. If the guess exactly matches the secret letters, the background should be changed and bold characters should be used. At the beginning of the game, 20 free rows should be reserved for the guesses.

For the enjoyable play, you should make sure that content of cells A2:D2 (if it is a valid code of 4 letters) should remain invisible. (For example, you can use the same text colour as background colour.) Moreover, evaluation in columns E and F should appear only after the code breaker has entered a syntactically correct guess of 4 letters.

The sheet (i209.xls, i209.ods, ...) together with a short documentation (i209.txt, i209.pdf, ...) should be submitted, also containing a brief description of your solution and the name and version number of the spreadsheet application.

(10 pont)

Deadline expired on April 15, 2009.


Sorry, the solution is available only in Hungarian. Google translation

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


Statistics:

12 students sent a solution.
10 points:Balla Attila, Janosov Milán, Kristóf Tamás.
9 points:Englert Péter, Fehér Péter, Pap 999 Dávid.
8 points:1 student.
7 points:2 students.
6 points:2 students.
5 points:1 student.

Problems in Information Technology of KöMaL, March 2009