KöMaL - Középiskolai Matematikai és Fizikai Lapok
Sign In
Sign Up
 Magyar
Information
Contest
Journal
Articles

 

Problem I. 289. (March 2012)

I. 289. Dominoes are fun to play with. Each piece contains two nonnegative integers and the corresponding number of dots. We say that a domino set is an \(\displaystyle N\)-set (\(\displaystyle 0\le N\le 10\)), if these integers fall between 0 and \(\displaystyle N\). Two domino pieces are considered to be identical if the pairs of numbers on them (sorted into ascending order) are the same. A set of dominoes does not contain identical dominoes.

For example, a 2-set contains the following pieces: [0 0] [0 1] [0 2] [1 1] [1 2] [2 2].

Your first task is to create the elements of an \(\displaystyle N\)-set by using a functional algorithm. The input of the function creating the set is the value of \(\displaystyle N\), while the output is the ordered sequence of the dominoes, as in the example. (``Példa'' is example, ``dominó'' is domino, and ``Eredmény'' is the result.)

Your second task is to create a function that gives the total number of dots of an \(\displaystyle N\)-set. (``Pöttyszám'' is number of dots.)

In a family some children have domino sets, but they are mixed up during the play. Your third task is to select those pieces which occur more than once. The input of your function is the unsorted list of dominoes, while the output is the ordered list similar to the example. (``Többször'' is more than once.)

We recommend using Imagine Logo as a programming environment, but you can solve the task by using programming languages following the von Neumann model (such as C, C++, Pascal, ...). During your solution, apart from the inputs and outputs, you should use only the functional aspects of the programming language. Do not use variables. Repetition should be accomplished through recursion only. Try and decompose your solution into as many parametrizable functions as possible. You can read more about functional programming in problem I. 259.

Your source code (i289.imp Imagine Logo Project, i289.pas, i289.cpp, ...) and a text file i289.txt -- describing your functions and giving the name of the developer environment to use for compiling -- should be submitted in a compressed file i289.zip.

(10 pont)

Deadline expired on 10 April 2012.


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

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.


Statistics:

11 students sent a solution.
10 points:Fényes Balázs, Gema Barnabás, Kucsma Levente István, Szabó Levente, Tegzes Tamás, Varga 256 Erik.
9 points:Beleznay Soma, Kalló Kristóf.
6 points:3 students.

Our web pages are supported by:   Ericsson   Cognex   Emberi Erőforrás Támogatáskezelő   Emberi Erőforrások Minisztériuma   Nemzeti Tehetség Program    
MTA Energiatudományi Kutatóközpont   MTA Wigner Fizikai Kutatóközpont     Nemzeti
Kulturális Alap   ELTE   Morgan Stanley