BME Villamosmérnöki és Informatikai Kar
Muszaki informatika szak |
Nappali tagozat
2003/2004. tanév, tavaszi félév
|
A kis házi feladat beadása nem kötelező.
empty
névkonstans szolgál. A csomópontok node/3
struktúrák, melyek első és második argumentuma egy-egy újabb fát jelöl, harmadik argumentuma egy párt ír le. A kulcs-érték pár mindkét tagja egész szám. Fánkat az alábbi jelöléssel írhatjuk le formálisan:
% :- type key == int. % :- type value == int. % :- type keyval ---> key-value. % :- type tree ---> node(tree,tree,keyval) % |empty.Érvényes fa például a
node(empty,node(empty,empty,1-1),1-2)
struktúra.
Írjon egy olyan parja/3
Prolog eljárást, amely az első argumentumában megadott fában kikeresi a második argumentumban megadott kulcshoz tartozó értéke(ke)t és visszaadja azt (felsorolással) a harmadik argumentumban:
% :- pred parja(tree::in,key::inout,value::inout). % parja(Fa,Kulcs,Ertek): % Fa-ban Kulcs kulcshoz Ertek érték tartozikEgy kulcs többször is szerepelhet a megadott fában. Az eljárásnak több módban is működnie kell, alkalmasnak kell lennie arra, hogy kulcsokat soroljon fel, amennyiben az érték adott, valamint arra is, hogy felsorolja a lehetséges kulcs-érték párokat. Figyelem, a fa mindig bemenő argumentum.
| ?- parja(node(empty,node(empty,empty,1-2),2-2),1,E). E = 2 ? ; no | ?- parja(node(empty,node(node(empty,empty,1-5),empty,1-2),2-2),1,E). E = 2 ? ; E = 5 ? ; no | ?- parja(node(empty,node(node(empty,empty,1-5), node(empty,empty,2-2),1-2),2-2),3,E). no | ?- parja(node(empty,node(empty,empty,3-4),1-2),K,4). K = 3 ? ; no | ?- parja(node(empty,node(empty,empty,3-4),1-2),K,V). K = 1, V = 2 ? ; K = 3, V = 4 ? ; noA programot Prolog nyelven kell elkészíteni.
khf-pl2.pl
néven kell beküldeni a
megoldást. A névben meg kell különböztetni a kis- és nagybetuket.
A programok készülhetnek MS DOS vagy MS Windows alatt is, de Linux operációs rendszer alatt is muködniük kell. A beadási határido március 9., kedd 24:00.
A vizsgaosztályzat megállapításakor a határidore beadott, helyesen megoldott kis házi feladatért plusz 1 pont jár (a 100 pontból).