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. 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 nagyságú () készletben minden szám 0 és 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 -es dominókészletet. Az előállítást végző függvény bemenete é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 -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ó. |