Zkouska 29.6.2010

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ů.
DarkTemplar
Matfyz(ák|ačka) level I
Příspěvky: 2
Registrován: 29. 6. 2010 19:57
Typ studia: Informatika Bc.

Zkouska 29.6.2010

Příspěvek od DarkTemplar »

Ahoj,

prosim, mohl by jste sem nekdo dat zadani z dnesni zkousky z Neproceduralka 29.6 a kdyztak i nejake to reseni. :wink:
Diky.
vlastagf
Matfyz(ák|ačka) level I
Příspěvky: 7
Registrován: 26. 5. 2009 14:42
Typ studia: Informatika Bc.

Re: Zkouska 29.6.2010

Příspěvek od vlastagf »

Hodim sem alespon zadani.

Prolog 1.)
Je zadany graf a cesta grafem. Je treba definovat predikat, ktery postupne vrati vsechna Hamiltonovska prodlouzeni cesty grafem. (cili cesta pres vsechny vrcholy) Reprezentace dat neni pevne dana.

Prolog 2.)
Prevod formuli z DNF do CNF. Spojky and, or a not definovat jako operatory.

Haskell 1.)
Definovat funkci, ktera overi, ze zadana posloupnost je Grayuv kod. Coz je posloupnost binarnich cisel "stejne delky", kde sousedni cisla se lisi maximalne o jeden bit, vcetne prvniho a posledniho cisla a jejich pocet je 2^n.

Kód: Vybrat vše

[0,0], [0,1], [1,1], [1,0]
Haskell 2.)
Vymyslet strukturu binarniho stromu, ktery v listech uchovava jeden typ hodnot a ve vrcholech druhy typ hodnot. Substituovat za typ v listech a napsat funkci, ktera ocisluje listy ve stromu od 1 zprava.

Kód: Vybrat vše

BinStrom a b = List a | Vrchol (BinStrom a b) b (BinStrom a b)
a funkce bude vracet treba
List (a,Int)
srlok
Matfyz(ák|ačka) level I
Příspěvky: 12
Registrován: 20. 6. 2010 15:46
Typ studia: Informatika Bc.

Re: Zkouska 29.6.2010

Příspěvek od srlok »

Tady je moje reseni na ten haskell 2, neni uplne idealni ale funguje mi

Kód: Vybrat vše

data Btree a = Nil | Node a (Btree a) (Btree a)
         deriving (Show, Eq)

numleaves :: Btree a -> Int
numleaves Nil = 0
numleaves (Node _ Nil Nil) = 1
numleaves (Node _ l r) = (numleaves l) + (numleaves r)

markleaves :: Btree a -> Btree (a,Int)
markleaves Nil = Nil
markleaves (Node a l r) = markleavesr (Node a l r) 1

markleavesr :: Btree a -> Int -> Btree (a,Int)
markleavesr Nil _ = Nil
markleavesr (Node a Nil Nil) n = (Node (a,n) Nil Nil)
markleavesr (Node a l r) n = (Node (a,0) lm rm) where
                                 lm = markleavesr l cntr
                                       where cntr = n + numleaves r
                                 rm = markleavesr r n
Odpovědět

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