BME Villamosmérnöki és Informatikai Kar
Műszaki informatika szak
Nappali tagozat
2004/2005. tanév, őszi félév

Deklaratív programozás

3. SML kis házi feladat

2004. november 21.

A kis házi feladat beadása nem kötelező.

A feladat

Egy fa n-edik síkjának a fa n-edik szintű csomópontjaiban tárolt értékek listáját nevezzük, ahol a listaelemek sorrendje a fa prefix bejárásának sorrendjét tükrözi. Nézzük például a következő fát:

peldafa

E fa nulladik síkja a [7], az első síkja a [3,2,5], a harmadik síkja az [1,2,5,1,2] lista, az összes többi síkja pedig az üres lista ([]).

Adva van a következő típusdeklaráció:

datatype 'a fa = T of 'a * 'a fa list
E típusdeklarációt felhasználva az ábrán látható fát például a következő kifejezéssel adhatjuk meg:
val t1 = T(7,[T(3,[]),T(2,[T(1,[]),T(2,[]),T(5,[])]),T(5,[T(1,[]),T(2,[])])])

Írjon olyan SML-függvényt sik néven, amely egy int fa típusú fa n-edik síkját adja eredményül! A feladat megoldásához segédfüggvényt definiálhat, ha ír hozzá fejkommentet.

A sik függvény fejkommentje:

(* sik : int fa -> int -> int list
   sik t n = a t fa n-edik síkja 
*)

Példák

sik t1 0 = [7];
sik t1 1 = [3,2,5];
sik t1 2 = [1,2,5,1,2];
sik t1 3 = [];

Beadás, tudnivalók

A programot az Elektronikus Tanársegéd segítségével a Weben keresztül lehet beadni, a HF beadás menüpont alatt. Ez a harmadik SML kis házi feladat, ezért khf-ml3.sml néven kell beküldeni a megoldást. A névben meg kell különböztetni a kis- és nagybetűket.

FONTOS! A program első nemüres sorába írja a datatype 'a fa = T of 'a * 'a fa list adattípus-deklarációt!

A programok készülhetnek MS Windows alatt, de Linux operációs rendszer alatt is működniük kell. A beadási határidő 2004. november 29. hétfő 24:00.

A vizsgaosztályzat megállapításakor a határidőre beadott, helyesen megoldott kis házi feladatért plusz 1 pont jár (a 100 pontból).