Zkouška 6. 6. 2016 (Dvořák, Hric)

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ů.

Zkouška 6. 6. 2016 (Dvořák, Hric)

Příspěvekod Quarwen » 11. 6. 2016 22:02

Jako obvykle: rozdelene na 2 casti:

1. Cast: (80 minut)
Je treba ziskat alespon 4 body z Prologu (ulohy 1 a 2), 4 body z Haskellu (ulohy 3 a 4) a celkove alespon 12 bodu. Celkove je mozno ziskat 20 bodu.

Prolog:
1) (5 bodu) ( viz: http://forum.matfyz.info/viewtopic.php?f=169&t=10536 - uloha 1) Naprogramujte predikat splay(+Hodnota, +BinarniVyhledavaciStrom, -Vysledek), ktery provede funkci splay (protahnout dany vrchol az do korene pomoci rotaci) na Hodnotu. Pokud Hodnota ve strome neni, pak se splay provede na bezprostredniho predchudce/naslednika.

2) (5 bodu) Na vstupu mame seznam po castech konstantnich funkci [Funkce], kde kazda Funkce je ve tvaru [Hodnota-DelkaUseku]. Vsechny funkce zacinaji v 0 a po konci posledniho useku pokracuji hodnotou 0. Mame vytvorit nejmensi novou funkci takovu, ze v kazdem bode je vetsi rovna vsem zadanym funkcim.

Priklad: [ [2-5, 2-3], [3-4] ]
Dve funkce: prvni ma v intervalu [0, 2) hodnotu 5, v intervalu [2, 4) hodnotu 3 a v intervalu [4, inf) hodnotu 0. Druha ma v intervalu [0, 3) hodnotu 4 a v intervalu [3, inf) hodnotu 0.
Vysledkem je fce [2-5, 1-4, 1-3]

Haskell:
3) (5 bodu) (viz: http://forum.matfyz.info/viewtopic.php?f=169&t=10536 - uloha 3) Mame zadanou matici (jako seznam seznamu). Nasim cilem je vypsat seznam vsech dvojic (x, y) takovych, ze podmatice (1, 1) (x, y) bude obsahovat pouze kladne hodnoty. Dvojice (x, y) musi byt vzdy nejvyssi mozne (t. j. nelze ani v jedne souradnici zvetsit)

4) (5 bodu)
a) Napiste fold pro binarni stromy Tree a = Leaf a | T (Tree a) (Tree a).
fold :: (a -> b) -> (b -> b -> b) -> Tree a -> b
b) Napiste one-liner funkci, ktera vypise minimum a maximum z celeho stromu pomoci vami napsaneho foldu.
c) Napiste hlavicku funkce z b)


2. Cast: (90 minut) (Jazyk dle vlastniho vyberu)
Na vstupu mame seznam spotrebicu, jak dlouho musi bezet (bez preruseni), od kdy do kdy je muzeme pustit a jak velky vyzaduji prikon. Ukolem je naplanovat spusteni jednotlivych spotrebicu tak, aby nejvyssi prikon v libovolnem case byl co nejnizsi (aby jsme mohli instalovat co nejmensi pojistky).
Quarwen
Matfyz(ák|ačka) level I
 
Příspěvky: 7
Registrován: 8. 1. 2016 17:31
Typ studia: Informatika Bc.
Login do SIS: camrav

Re: Zkouška 6. 6. 2016 (Dvořák, Hric)

Příspěvekod knezi » 10. 6. 2018 12:21

U dvojky prologu jsou prohozeny délky a hodnoty v příkladu.
knezi
Matfyz(ák|ačka) level I
 
Příspěvky: 3
Registrován: 2. 6. 2016 08:47
Typ studia: Informatika Bc.


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

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník