Zkouška 21.6.2018

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ů.
Quimby
Matfyz(ák|ačka) level I
Příspěvky: 5
Registrován: 30. 6. 2015 14:40
Typ studia: Informatika Bc.
Kontaktovat uživatele:

Zkouška 21.6.2018

Příspěvek od Quimby »

První příklad(prolog):
Nalezněte lexikograficky předchozí permutaci:(Pokud není tak false)

Kód: Vybrat vše

prev([1,2,6,3,4,5,7],V).
   V = [1,2,5,7,6,4,3] 
Druhý příklad(prolog):
Dostaneme list atomů a list binárních operátorů. Máme postupně vydat všechny termy obsahující všechny atomy (pořadí zleva doprava), operátory se mohou opakovat.

Kód: Vybrat vše

gen([a,b,c],[xor],V).
  V = a xor (b xor c).
  V =(a xor b) xor c.
gen([a,b,c],[xor,and],V).
  V = a xor (b xor c).
  V = a xor (b and c).
  V = a and (b xor c).
 V = a and (b and c)...
Třetí příklad(haskell):
Ohodnotit vrcholy obecného n-arní stromu v pořadí v jakém jsou vrcholy uzavírány, takže post-fixově. Měla se napsat datová struktura pro strom, typová hlavička fce a pak tu funkci implementovat:

Kód: Vybrat vše

data Strom a = Nil | Strom a [Strom a]
label::Strom a -> Strom (a,Int)
Čtvrtý příklad(haskell):
Implementovat horní celou část čísla = kladná zaokrouhluje nahoru, záporná dolů. Mělo by to běžet v čase logn a samozřejmě bez použítí ceil/floor a podobných fcí.

Velký příklad:
Na vstupu jsou kostičky domina(dvojice symbolů) a máme je uspořádat do co nejmenšícho počtu řetězců. V řetězci na sebe musí navazovat:

Kód: Vybrat vše

Vstup: [(8,8),(1,2),(2,3),(3,4), (7,8)]
Reseni: [[(1,2),(2,3),(3,4)],[(7,8),(8,8)]]
Můžeme si vybrat jazyk, musíme navrhnout reprezentaci vstupu,výstupu a samozřejmě algoritmus. Měli jsme najít polynomiální řešení.
Naposledy upravil(a) Quimby dne 16. 9. 2018 12:11, celkem upraveno 1 x.
Alfonz
Matfyz(ák|ačka) level I
Příspěvky: 7
Registrován: 19. 1. 2017 14:53
Typ studia: Informatika Bc.

Re: Zkouška 21.6.2018

Příspěvek od Alfonz »

Ahoj. K tomu prvemu prikladu...
Riesenim nema byt nahodou zoznam [1,2,5,7,6,4,3] ?
Pokial nie, berem s5, asi som zle pochopil ulohu. Pokial ano, tak sa hodi to opravit, nech sa nemylia aj ostatni :) Vdaka
Quimby
Matfyz(ák|ačka) level I
Příspěvky: 5
Registrován: 30. 6. 2015 14:40
Typ studia: Informatika Bc.
Kontaktovat uživatele:

Re: Zkouška 21.6.2018

Příspěvek od Quimby »

Hmm, nějak se mi spletla 5 a 3, máš samozřejmě pravdu, jinak by to nebyla ani permutace. Opraveno.
Odpovědět

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