Zkouška 12.6.2012

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

Zkouška 12.6.2012

Příspěvek od rumlcajs_ »

Kdo jste byl dneska na zkoušce z neprocka? Jaké byly příklady? :)

Díky. :)
Uživatelský avatar
kolage
Matfyz(ák|ačka) level I
Příspěvky: 32
Registrován: 27. 1. 2011 18:10
Typ studia: Informatika Mgr.

Re: Zkouška 12.6.2012

Příspěvek od kolage »

Čau,

zhruba takto:

Prolog

1. Zadána tabulka operace násobení nad grupou. Úkolem bylo vypsat řády jednotlivých prvků grupy (http://cs.wikipedia.org/wiki/%C5%98%C3%A1d_prvku). První řádek byly vždy uspořádané prvky grupy (resp. vynásobené prvkem e). Př. zadání [[e,a,b],[b,a,e],[a,b,e]] -> vypsat něco jako [e-r1,a-r2,b-r3], kde ri jsou řády prvků

2. Zadán graf seznamem sousedů. Úkolem vypsat nějakou maximální nezávislou množinu (žádné 2 prvky v ní nemají mezi sebou hranu). Př. zadání [a->[b,c,d],b->[a],c->[],d->[a,b]]

Haskell

3. Zadán řetězec s, číslo n. Vypsat řetězce, které mají stejnou délku jako vstupní řetězec s a liší se max o n znaků. Seznam znaků, se kterými se pracuje vydá nulární funkce abeceda :: [Char]. Navíc měl být na výstupu seznam řetězců uspořádaný. Takže něco jako: (uvažujeme-li abeceda = [a,b,c]) "aaa" 1 -> ["aaa","aab","aac","aba", ...]

4. Rozložit číslo na součin prvočísel. Př. rozloz 99 -> [3,3,11]

The Big One

Máme vzorky V1, ..., Vk, stroje S1, ..., Sn. Na strojích se měří vzorky, každý vzorek má dán seznam strojů, na kterých se musí změřit, dále nutnou dobu měření každého vzorku na daném stroji t(S,V) a cenu, kterou dostaneme za kompletní změření vzorku na strojích - c(V). Kompletní změření je tedy, že máme např. vzorek V1, který má dané strojeProVzorek(V1,[S2,S4]) - tedy musí být změřen na strojích S2 a S4 - nezáleží na pořadí (a měření na stroji nemusí probíhat v celku - čas t(S,V) můžeme rozdělit, ale ve výsledku pak musí délka sjednocení těchto měřených intervalů dát t(S,V)). Stroje fungují paralelně - na S1 se může měřit V1, na S2 třeba Vk apod. ve stejný čas. Nelze měřit stejný vzorek na více strojích zaráz a stejně tak více vzorků ve stejném čase na jednom stroji.

Úkolem je naplánovat měření vzorků do daného času T tak, aby se na tom co nejvíc vydělalo (je to NP-úplný problém, chce to vymyslet nějakou heuristiku - já jsem akorát seřadil vzorky podle ceny a jel jsem v tomto pořadí, stačilo to - ale chce to mít zhruba napsanou kostru programu ve vybraném jazyce).

Snad se to dá pochopit a na nic jsem nezapomněl ... :)
Odpovědět

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