Használható segédanyagok: GHC dokumentáció, Hoogle, a tárgy honlapja és a BE-AD rendszerbe feltöltött beadandók. Ha bármi kérdés, észrevétel felmerül, azt a felügyelőnek jelezzétek, NE a mellettetek ülőnek!
A feladatok egymásra épülnek ezért érdemes ezeket a megadásuk sorrendjében megoldani, de legalább megérteni az aktuális feladatot megelőző feladatokat!
Tekintve, hogy a tesztesetek, bár odafigyelés mellett íródnak, nem fedik le minden esetben a függvény teljes működését, határozottan javasolt még külön próbálgatni a megoldásokat beadás előtt, vagy megkérdezni a felügyelőket!
Részpontszámokat csak az elégséges szint elérése után lehet kapni!
A feladat megoldása során a prioritásos sor adatszerkezetet és a hozzá tartozó műveletek halmazát fogjuk megvalósítani. A prioritásos sort valójában egy lista segítségével fogjuk megadni, amely mindig prioritás és azon belül is beérkezési sorrendben tárolja a bejegyzéseket. Hogy megkülönböztessük egy hagyományos rendezett párokból álló listától, egy saját típust hozunk neki létre.
A prioritást egész számként adjuk meg:
Továbbá az Entry
algebrai adattípus a prioritásos sor elemeit írja le:
Végül magát a prioritásos sort a PQueue
típus foglalja össze:
Készítsünk egy olyan függvényt, amellyel a prioritásos sorba beillesztendő elemeket tudunk előállítani!
Adjuk meg azt a függvényt, amely a paraméterül kapott Entry
típusú paraméterből kinyeri annak értékét!
Adjuk meg azt a függvényt, amely a paraméterül kapott Entry
típusú paraméterből kinyeri annak prioritását!
Adjuk meg azt a függvényt, amely egy rendezett párok listájából prioritásos sort hoz létre! A feladat megoldása során ügyeljünk a következőkre:
Az alábbi konstanst a tesztelések során fogjuk felhasználni:
Adjuk meg azt a függvényt, amely egy újabb elemet helyez el a prioritásos sorban! A megoldás során ügyeljünk a következőkre:
Adjuk meg azt a függvényt, amely a soron következő elemet adja vissza a prioritásos sorból! Mivel nem lehetünk biztosak abban, hogy a sor tartalmaz elemeket, ezért egy Maybe
típusú értékkel térjen vissza.
Segítségül a Maybe
definíciója:
data Maybe a = Just a | Nothing
Adjuk meg azt a függvényt, amely a soron következő elemet elhagyja a prioritásos sorból! A függvénynek akkor is működnie kell, ha a sor üres.