Kryl 28.5.2013

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

Kryl 28.5.2013

Příspěvekod LordG » 28. 5. 2013 16:29

První část
------------
HASKELL
1) Řídká matice, reprezentovaná jako (m, n, s), kde:
m = počet řádek
n = počet sloupců
s = seznam trojic (i,j,ai,j), kde i,j je klasický index v matici a ai,j je nenulová hodnota.

Úkol: naprogramovat transpozici a násobení takto reprezentovaných matic.

2) Definovat přirozenou reprezentaci binárního stromu, v jehož uzlech je uložen typ třídy Ord, a naprogramovat fci, která z BVS této reprezentace vypustí uzly, jejichž hodnoty nepatří do zadaného intervalu.

PROLOG
3) Permutace je zadaná jako c(Cislo, Cykly), kde Cislo je počet permutovaných čísel a cykly je seznam cyklů permutace s tím, že prvky, které permutace zobrazí na ně samotné, tam nejsou. Naprogramovat složení takto reprezentovaných permutací tak, aby výsledná reprezentace byla také taková.

4) Sestavit predikát taut(Formule), který ověří, jestli formule je tautologií.
K tomu navíc definovat unární operátor ~ pro negaci a binární &, # pro konjunkci a disjunkci. Formule je potom zadaná pomocí těchto operátorů a atomů (klasika, zapsané malými písmeny, např ~a#b&a.

DRUHÁ ČÁST
---------------
Máme dětskou tiskárnu. V té je daný počet nul, jedniček, ..., devítek. Úkoly:
1) Napsat fci, která zjistí, jestli lze číslo N složit.
2) Napsat fci, která k zadanému N spočítá - pokud ho lze reprezentovat - jeho pořadí podle velikosti mezi reprezentovanými čísly.
3) Napsat fci, která pro dané P spočítá P-té nejvyšší reprezentovatelné číslo.

Komentář: číslo N mohlo být v rozsahu Int, tzn pokud by v řešení tento fakt pomohl, bylo lze toho využít.
Komentář 2: Já zvolil inkrementální počítání odspoda, tzn počítal jsem pořadí N od nejmenšího a P-té nejnižší reprezentovatelné číslo.... A zítra jdu na ústní, tak uvidíme.
LordG
Matfyz(ák|ačka) level I
 
Příspěvky: 15
Registrován: 11. 1. 2012 13:08
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 2 návštevníků