Kryl 18.6.

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

Kryl 18.6.

Příspěvek od nahodny kolemjdouci »

Haskell:
1] Mame nekonecne mocnine rady jako seznam koeficientu
a] funkci na soucet prvni n clenu k-te derivace rady v bode x
b] nasobeni dvou rad
2] Navrhnete prirozenou reprezentaci BVS a napiste funkci ktera pro rostouci seznam a prirozene cislo n vytvori z prvnich n clenu rady pefrektne vyvazeny BVS(tzn pocet uzlu v pravem a levem podstromu se lisi vzdy max o 1)

Prolog:
3] Definujte bez pouziti aritmetiky proceduru rozdel(+Seznam,-Prvni,-Druhy,-Treti) kde vstup je konkatenaci vystupu a vystup je v pomeru XX : X : XX (priblizne) formalne seznamy splnuji:
a] delka Prvniho se lisi max o jedna od delky Tretiho
b] delka Prvniho a Tretiho je max od 1 ruzna od dvojnasobku delky Druheho
4] Dva seznamy obsahuji cislice, ? a * kde ? reprezentuje lib cifru a * reprezentuje lib dlouhou sekvenci cifer(i prazdnou). Mame napsat proceduru ktera rozhodne zda tyto seznamy matchuji (Uz to tu (nejednou) je).

Velka uloha(Haskell):
Mame dve sady operatoru(dobrovolne libovolne operatory) a to
a] +,*,conc,zavorky
b] = a] spolu s -,/(celociselne)
Na vstupu dostanem cislo(kladne) a cifru, nasim ukolem je sestrojit co nejkratsi(v poctu pouzitych cifer) reprezentaci cisla pomoci cifer a operatoru pripadne oznamit ze to nejde.
Operator conc spojuje cifry tzn 4 conc 4 = 44, lze spojovat pouze cifry a ne vyrazy tzn (4+4) conc 4 neni pripustne.
Vstup a vystup jsou detaily kterymi se nemame zabivat ale ma to byt "snadno" zpracovatelne nejakou dalsi fci tzn navrhnout nejaky rozumny typ pro nase vyrazy...


Pak napisu jak hodnotil velkou ulohul (pokud mi rovnou neutrhne hlavu za suboptimalni reseni :] ).
kolemjdouci_nahodny

Re: Kryl 18.6.

Příspěvek od kolemjdouci_nahodny »

U mě hrotil hlavně tu první část (půlka prvního příkladu blbě, o dvou dalších prohlásil, že je to pomalé a fuj, ale uznal). U druhé části se zeptal na myšlenku, velmi zběžně proběhl kód a se slovy, že na jedna to není a trojku mi dát nechce jsem odešel s dvojkou.
nahodny kolemjdouci

Re: Kryl 18.6.

Příspěvek od nahodny kolemjdouci »

Ano, myslim ze tentokrat necekal zcela zpravne a efektivni reseni velke ulohy, asi chtel hlavne nejakou analyzu a myslenku - ptal se treba v cem se ty dve varianty lisej.

Prvni cast procital docela peclive, vynadal me treba i ze v 1] mam radu po ktere chci jen Num pac ono je prece jasne ze mocnina rada ma smysl jen float...

Kazdopadne male priklady vicemene bez chyby, velka jen suboptimalni reseni a odesel jsem s jednickou.

Tak hodne zdaru ostatnim!
Odpovědět

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