Zkouška 13. 9. 2017

Přednáška je věnována neprocedurálnímu programování. Většina semestru je věnována programování v jazyku Prolog, ve kterém studenti i ladí zápočtové programy. Informativně se studenti seznámí i s jazykem LISP a neprocedurálními částmi programovacích systémů.
ZuzkaD
Matfyz(ák|ačka) level I
Příspěvky: 8
Registrován: 16. 1. 2017 12:49
Typ studia: Informatika Bc.

Zkouška 13. 9. 2017

Příspěvek od ZuzkaD »

Zadání příkladů na termínu 13. 9. Je možné, že budou níže drobné nepřesnosti oproti původnímu zadání na zkoušce, ale pokusím se přepsat co nejvěrněji.

První část:

1 - Prolog - Rozděl
Napište predikát rozdel(+Mnozina,-Rozdeleni), který rozdělí množinu na neprázdné podmnožiny. Všechny možnosti rozdělení pak vrátí spojené v jednom seznamu.
Příklad:
rozdel([a,b,c],X).
X = [ [a,b,c], [a,b][c], [a][b,c], [a,c], [a][c] ].

2 - Prolog - Nezávislé množiny
Napište predikát nez(+Graf,+Vrchol.-NezMn), který vezme graf a jeden jeho zadaný vrchol a postupně vydává všechny jeho největší nezávislé množiny obsahující daný vrchol. Myslím, že jsme si mohli zvolit libovolnou reprezentaci grafu. V příkladě je použito g(V,H), kde V je seznam vrcholů a H je seznam hran
Příklad:
nez(g([a,b,c,d,e],[a-b,b-c,b-d,c-d]),a,X),
X=[a,c,e];
X=[a,d,e].

3 - Haskell - Formule
Máme typ:
data Formule = Kost Bool | Not Formule | And Formule Formule | Or Formule Formule
a chceme napsat funci gen, která vygeneruje nekonečný seznam složený z formulí:
Příklad:
gen = [ Konst True, Konst Flase, Not True, Not False, And True True, ...

4 - Haskell - Řád prvků

Stejné zadání jako tady příklad 1, akorát jsme to měli psát v Haskellu: http://forum.matfyz.info/viewtopic.php?f=169&t=11043

Druhá část: Velký příklad:
Máme seznam vzorků a každý z nich potřebujeme otestovat na několika přístrojích (dostaneme zadáno, u každého vzorku, na jakých přístrojích ho máme otestovat), taky dostaneme zadáno, jak dlouho trvá měření pro příslušnou dvojici přístroj-vzorek a celkový čas T. Pokud vzorek změříme na všech přístrojích, dostaneme odměnu. Výše odměny je zadána pro každý vzorek jako cena c(V).
Na jednom přístroji lze v jednom okamžiku měřit jen jeden vzorek a jeden vzorek lze v jednom okamžiku měřit jen na jednom přístroji.
Cílem je naplánovat kdy budeme co měřit na jakém přístroji, abychom maximalizovali odměnu v čase do T.
Příklad je NP, cílem je vymyslet a použít nějakou heuristiku, abychom neprohledávali všechny možnosti.
Odpovědět

Zpět na „PRG005 Neprocedurální programování“