od Shigi » 8. 6. 2012 16:28
Ahojte,
tento termín bol (asi výnimočne) vypísaný p. Hricom, ktorý aj skúšal a znenie úloh bolo približne takéto:
Prolog
-
Na vstupe sú dané dve čísla D a H a s nimi aj binárny vyhľadávací strom v tvare t(LavyPodstrom,Hodnota,PravyPodstrom), resp. void pre uzly.
Úlohou bolo implementovať predikát orez(D,H,BVS,OrezanyBVS), kde nový strom bude obsahovať len také uzly, pre ktoré platí, že ich hodnoty X spadajú do intervalu medzi D a H, t.j. D <= X a X <= H.
Príklad:
?- orez(10,20,t( t( t( void, 3, void ), 5, void ), 10, t( void, 18, t( void, 25, void ) ) ), OrezanyBVS).
OrezanyBVS = t(void, 10, t(void, 18, void))
- Je daný zoznam vektorov a úloha bola vybrať tie vektory, ktoré nie sú dominované žiadným iným vektorom.
Vektor u je dominovaný vektorom v, ak všetky zložky vektoru v sú väčšie alebo rovné než príslušné zložky vektoru u.
Predikát sa volal paretoMax(+ZoznamVektorov,-NedominovaneVektory).
Príklad:
?- paretoMax([ [0,0,3], [1,1,2], [1,1,1] ], V).
V = [ [0,0,3], [1,1,2] ]
Haskell
- Na vstupe máme zoznam hodnôt vrcholov binárneho vyhľ. stromu v poradí preorder.
Úloha je zrekonštruovať bin. vyhľ. strom z tohto zoznamu.
Príklad:
readBVS [10,5,3,20,15,25]
Node (Node (Node Void 3 Void) 5 Void) 10 (Node (Node Void 15 Void) 20 (Node Void 25 Void))
- Mali sme zadaný graf (orientovaný, bez smyčiek, bez izolovaných bodov a ešte niečo..) ako zoznam hrán s ohodnoteniami a bolo ho treba previesť na zoznam vrcholov, kde ku každému vrcholu prislúchal zoznam susedov s ohodnotením.
Deklarácia mohla vyzerať takto:
hr2sous :: (Eq a) => (Num b) => [(a,a,b)] -> [(a,[(a,b)])]
Príklad:
hr2sous [ ('a','b','1'), ('b','a',2), ('b','c',3), ('c','d',4) ]
[ ('a', [('b',1)]), ('b', [('a',2), ('c',3)]), ('c', [('d',4)]) ]
Hodnotenie
Za každý príklad sme mohli získať 5 bodov, pričom podmienka na postup do ústnej časti bola 12 bodov a za každý jazyk sme museli získať minimálne 5 bodov.
Ahojte,
tento termín bol (asi výnimočne) vypísaný p. Hricom, ktorý aj skúšal a znenie úloh bolo približne takéto:
[b]Prolog[/b]
[list=1]
[*]
Na vstupe sú dané dve čísla [i]D[/i] a [i]H[/i] a s nimi aj binárny vyhľadávací strom v tvare [i]t(LavyPodstrom,Hodnota,PravyPodstrom)[/i], resp. [i]void[/i] pre uzly.
Úlohou bolo implementovať predikát [i]orez(D,H,BVS,OrezanyBVS)[/i], kde nový strom bude obsahovať len také uzly, pre ktoré platí, že ich hodnoty [i]X[/i] spadajú do intervalu medzi [i]D[/i] a [i]H[/i], t.j. [i]D <= X[/i] a [i]X <= H[/i].
Príklad:
[i]?- orez(10,20,t( t( t( void, 3, void ), 5, void ), 10, t( void, 18, t( void, 25, void ) ) ), OrezanyBVS).[/i]
[i]OrezanyBVS = t(void, 10, t(void, 18, void))[/i]
[*] Je daný zoznam vektorov a úloha bola vybrať tie vektory, ktoré nie sú dominované žiadným iným vektorom.
Vektor [i]u[/i] je dominovaný vektorom [i]v[/i], ak všetky zložky vektoru [i]v[/i] sú väčšie alebo rovné než príslušné zložky vektoru [i]u[/i].
Predikát sa volal [i]paretoMax(+ZoznamVektorov,-NedominovaneVektory)[/i].
Príklad:
[i]?- paretoMax([ [0,0,3], [1,1,2], [1,1,1] ], V).[/i]
[i]V = [ [0,0,3], [1,1,2] ][/i][/list]
[b]Haskell[/b]
[list=1]
[*]Na vstupe máme zoznam hodnôt vrcholov binárneho vyhľ. stromu v poradí preorder.
Úloha je zrekonštruovať bin. vyhľ. strom z tohto zoznamu.
Príklad:
[i]readBVS [10,5,3,20,15,25][/i]
[i]Node (Node (Node Void 3 Void) 5 Void) 10 (Node (Node Void 15 Void) 20 (Node Void 25 Void))[/i]
[*]Mali sme zadaný graf (orientovaný, bez smyčiek, bez izolovaných bodov a ešte niečo..) ako zoznam hrán s ohodnoteniami a bolo ho treba previesť na zoznam vrcholov, kde ku každému vrcholu prislúchal zoznam susedov s ohodnotením.
Deklarácia mohla vyzerať takto:
[i]hr2sous :: (Eq a) => (Num b) => [(a,a,b)] -> [(a,[(a,b)])][/i]
Príklad:
[i]hr2sous [ ('a','b','1'), ('b','a',2), ('b','c',3), ('c','d',4) ][/i]
[i][ ('a', [('b',1)]), ('b', [('a',2), ('c',3)]), ('c', [('d',4)]) ][/i][/list]
[b]Hodnotenie[/b]
Za každý príklad sme mohli získať 5 bodov, pričom podmienka na postup do ústnej časti bola 12 bodov a za každý jazyk sme museli získať minimálne 5 bodov.