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. 289. feladat (2012. március)

I. 289. Gyermekkorunk egyik kedvelt játéka a dominó. Minden dominólap két nem negatív egész számból, illetve a két számnak megfelelő számú pöttyből áll. Egy \(\displaystyle N\) nagyságú (\(\displaystyle 0\le N\le 10\)) készletben minden szám 0 és \(\displaystyle N\) közötti. Két dominólap megegyezik, ha rajtuk a számok az olvasási sorrendtől függetlenül azonosak. Egy dominókészlet nem tartalmaz azonos dominókat.

Pédául egy 2-es dominókészlet a következő dominókat tartalmazza: [0 0] [0 1] [0 2] [1 1] [1 2] [2 2].

Első feladatunk, hogy állítsunk elő funkcionális algoritmussal az \(\displaystyle N\)-es dominókészletet. Az előállítást végző függvény bemenete \(\displaystyle N\) értéke, eredménye a dominólapok alábbi minta szerint rendezett sorozata.

Második feladatunk, hogy készítsünk függvényt, amely egy \(\displaystyle N\)-es dominókészlet összes pöttyeinek számát adja meg.

Egy nagy családban több gyereknek is van dominója, melyek játék közben összekeveredtek egymással.

Harmadik feladatként adjuk meg, hogy a dominók között melyek azok, amelyek többször fordulnak elő. A függvény bemenete a dominólapok nem rendezett listája, kimenete egy a fentiekhez hasonló rendezett lista.

A megoldáshoz az Imagine Logo programozási környezetet ajánljuk, de a feladat megoldható Neumann-elvű programozási nyelvvel is (C, C++, Pascal, ...). A megoldás során - a be és kimenetektől eltekintve - csak a programozási nyelv funkcionális részét használjuk. Ne alkalmazzunk változókat, csak rekurzió segítségével valósítsunk meg az ismétlést. Igyekezzünk a megoldást minél több paraméterezhető függvényre bontani. A funkcionális programozásról az I. 259. feladatnál részletesen olvashatunk.

Beküldendő egy i289.zip tömörített állományban a megoldás forráskódja (i289.imp Imagine Logo Project, i289.pas, i289.cpp, ...) és egy i289.txt szöveges állomány, amely ismerteti a megoldás során készített függvényeket és megadja, hogy a forrásállomány melyik fejlesztő környezetben fordítható.

(10 pont)

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


Megoldásokról:

Elsősorban imagine, de visual basic, freepascal és c++ nyelvű megoldások is érkeztek. A funkcionális nyelvek, így a logo nyelv logikájának a rekurzív megoldási módszer elvárása testhez álló volt.

Állítsunk elő N méretű dominókészletet!

Példa: dominó 3 Eredmény: [[0 0] [0 1] [0 2] [0 3] [1 1] [1 2] [1 3] [2 2] [2 3] [3 3]]

Készítsünk függvényt, amely egy N nagyságú dominókészlet összes pöttyeinek számát adja meg!

Példa: pöttyszám 2 Eredmény: 12, pöttyszám 3 Eredmény: 30

Megjegyzés: az eredmény képlettel is kiszámítható: n(n+1)(n+2)/2.

Mintamegoldásként Fényes Balázs 9. osztályos (Budapest, Szerb Antal Gimnázium) tanuló visual basic nyelvű megoldását: i289.vb

és Kucsma Levente István 9. osztályos (Eger, Dobó István Gimnázium) tanuló imagine nyelvű: I289.IMP megoldását közöljük.


Statisztika:

11 dolgozat érkezett.
10 pontot kapott:Fényes Balázs, Gema Barnabás, Kucsma Levente István, Szabó Levente, Tegzes Tamás, Varga 256 Erik.
9 pontot kapott:Beleznay Soma, Kalló Kristóf.
6 pontot kapott:3 versenyző.

A KöMaL 2012. márciusi informatika feladatai