BME Villamosmérnöki és Informatikai Kar
Műszaki informatika szak |
Nappali tagozat
2002/2003. tanév, őszi félév
|
A kis házi feladat beadása nem kötelező.
A programot tömörítve, elektronikus levélben kell beküldeni. A beküldéshez
egy bash
szkriptet kell használni.
A szkriptet futtatni a bash dpkhfbe.02a
paranccsal lehet
(feltéve, hogy ezen a néven mentettük el).
Figyelem!
wget
'../dp-current/dpkhfbe.02a'
ural2
szerveren a /usr/local/bin
könyvtárban található a bash
program.
A szkript elindulaskor elmagyarázza a teendőket (mi legyen az adott könyvtárban, milyen néven stb.). Mielőtt valaki hibára panaszkodna, győződjön meg róla, hogy a hiba az ural2.hszk.bme.hu szerveren is reprodukálható. (A szkript helyes letöltése után.)
A programok készülhetnek MS DOS vagy MS Windows alatt is, de Linux operációs rendszer alatt is működniük kell.
datatype 'a fa = L | F of 'a * 'a fa * 'a faÍrjon SML-függvényt
utlevel
néven, amely egy
ilyen struktúrájú fában egy megadott értékhez kiszámítja a gyökértől az
érték csomópontbeli előfordulásaihoz vezető utakat! Útnak azt a
listát nevezzük, amelynek elemei a bejárás során érintett csomópontbeli
értékek, beleértve a gyökeret és a célcsomópontot is.
(* utlevel (fa, ert) = azon utak listája, amelyek fa-ban ert értékű
csomópontokhoz vezetnek.
utlevel : ''a fa * ''a -> ''a list list
*)
Az SML-függvénynek argumentuma egy fából és az ebben keresendő értékből
álló pár. Eredménye az összes olyan út listája, amely a gyökérből az érték
egy csomópontbeli előfordulásához vezet.
Az eredménylistában minden útnak pontosan egyszer kell szerepelnie. Ha az adott érték egyátalán nem fordul elő a fában, az eredmény az üres lista legyen. A megoldáslistán belüli sorrend tetszőleges.
Ha definiál segédfüggvényeket, azokat feltétlenül lássa el fejkommenttel! Törekedjék arra, hogy a megoldás hatékony legyen!
Fontos! A fenti datatype
deklarációt írja
bele a megoldását tartalmazó khf-ml2.sml
állományba is,
különben a tesztek nem fognak működni!
- utlevel(L, 1.0); > val it = [] : real list list - utlevel(F(1,L,L), 1); > val it = [[1]] : int list list - utlevel(F("x", F("y",L,L), F("z",L,L)), "y"); > val it = [["x", "y"]] : string list list - utlevel(F("x", F("y",L,L), F("z",L,L)), "nincs_benne"); > val it = [] : string list list - utlevel(F(3, F(2,F(1,L,L),L), F(4,L,F(1,L,L))), 1); > val it = [[3, 2, 1], [3, 4, 1]] : int list list - utlevel(F(#"a", F(#"a",L,L), F(#"a",L,L)), #"a"); > val it = [[#"a", #"a"], [#"a", #"a"], [#"a"]] : char list list
khf-ml2.sml
néven kell beküldeni a megoldást.
A beadási határidő december 1., vasárnap 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 max. 100 ponton felül).