zkouška 21.1. [Hric]

Osiris at 2008-01-21 17:38:40

Dnes byly zadány tyto příklady (nezapsal jsem si zadání, pouze interpretuji):

Prolog:

Převeďte n-ární strom na binární.


Je dán graf. Najděte všechny cesty délky 2, vytvořte nový graf z původního, který bude mít tyto cesty přidané jako hrany. Nesmí se použít bagof, setof a findall.

Haskell:

Máte seznam a číslo n a vypsat seznam obsahující prvky původního seznamu jehož součet je n (problém batohu).

Máte seznam s a  seznam dvojic (a,b). Máte vypsat všechny permutace původního seznamu, kde pro každou dvojici je v permutaci a před b.

Pak byla ještě teoretická otázka, pattern matching.

Velký příklad:

Máte orientovaný graf s pojmenovanými hranami a v něm vrchol u. Máte seznam J, který obsahuje jména hran a to, zda se smí hrana smazat nebo ne. Vygenerujte nový graf, který bude obsahovat pouze cesty vedoucí z vrcholu u takové, že tyto cesty vyhovují J. Cesta vyhovuje J, když můžeme některé hrany z J smazat tak, že se promazané J a cesta rovnají.

Příklady jsem měl všechny, velký příklad taktéž, teorii jsem moc neměl, dostal jsem 1.

hardwire2 at 2008-01-21 18:52:28

Jestli je na to jenom hodina, tak je to docela drsný....nemoh bys alespoň naznačit, jak jsi řešil ty příklady z Haskellu?

nardew at 2008-01-21 19:00:26

na male bolo 75min, na velky 90.

riesenie 3.), lebo len ten som vedel z haskellu:

batoh [] _ = []
batoh (a:t) lim
    | (sum b1) == lim = b1
    | (sum b2) == lim = b2
    | otherwise = []
    where b1 = batoh t lim
          b2 = a:(batoh t (lim - a))

ten 4.) niektori robili tak, ze vygenerovali vsetky permutacie a potom to len preseli, ci splnuju podmienky

inak odporucam prejst zadania z tohoto fora z roku 2005, ked mal neproc Hric, lebo zadania sa opakuju, niekde malinka zmena(teda aspon pri malych)

Osiris at 2008-01-21 19:15:50

hardwire2 wrote:Jestli je na to jenom hodina, tak je to docela drsný....nemoh bys alespoň naznačit, jak jsi řešil ty příklady z Haskellu?

3 už máš napsaný, tak jen napíšu, jak se řešil ten čtvrtý

Hricovi nezáleželo na složitosti, takže jsem to udělal tak, že jsem si vygeneroval všechny permutace a pak ty permutace přelil přes síto :

vsechnycovyhovuji s dvojice = [ x | x <- permutace s, vyhovuje x dvojice]

kde vyhovuje projela vsechny dvojice a vratila true, když byla permutace korektní

Medved at 2008-01-21 20:09:26

Je potreba zapocet? Nejak jsem jeste nestihl dopsat zapoctak, coz me dost sere...

nardew at 2008-01-21 20:11:34

Medved wrote:Je potreba zapocet? Nejak jsem jeste nestihl dopsat zapoctak, coz me dost sere...

ano, ten je povinny

Kudo at 2008-01-22 01:35:06

Pls mohli by ste niekto napisat ake su poziadavky na 3. Myslim kolko z malych programov musim mat spravne a ako mam mat velky program.

Dik

nardew at 2008-01-22 01:44:24

no asi sa to lisi od terminu ku terminu a od cloveka ku cloveku. ja som jeden nemal vobec, dva som mal male chyby ktore mi dal opravit a aj som ich opravil, jeden som mal napoly, velky az na par mensich chyb dobre a mal som za tri, co je podla mna vcelku primerane. ale ked si pozres reporty zpred 2 rokov, tak fakt sa to uplne navzajom lisi..

Medved at 2008-01-22 01:58:11

To je teda peknej vopruz, protoze naucit se na zkousku je zalezitost jednoho odpoledne, kdezto napsat zapoctak 14 dni kazdodenni prace. Asi se s neprockem rozloucim pro letosek :/

nardew wrote:

Medved wrote:Je potreba zapocet? Nejak jsem jeste nestihl dopsat zapoctak, coz me dost sere...

ano, ten je povinny

Chjoodge at 2008-01-22 13:15:05

Medved wrote:(...) kdezto napsat zapoctak 14 dni kazdodenni prace.

Omglol můj trval čistého času třeba pět hodin...

strky at 2008-01-22 23:42:03

Ako prebiehala skuska? Bolo napisanie nejakej casti z malych prikladou podmienkou pripustenia k velkemu? Alebo sa to pisalo dohromady? Ako dlho trvala ustna cast? Kedy bola?

nardew at 2008-01-22 23:59:27

strky wrote:Ako prebiehala skuska? Bolo napisanie nejakej casti z malych prikladou podmienkou pripustenia k velkemu? Alebo sa to pisalo dohromady? Ako dlho trvala ustna cast? Kedy bola?

hric napise na tabulu 4 male priklady - 2 na prolog, 2 na haskell - a jeden teoreticky. na vypracovanie tychto 5 prikladov bolo 75min. potom bola 15min pauza, po ktorej sa vsetci znovu zidu v ucebni a hric napise na tabulu tazky priklad, na ktory je cas 90min. pri odovzdavani velkeho ti hric povie cas, kedy mas prijst na ustnu(ja som mal ustnu o 2hod.). na ustnej ti da pripadne opravit nejake male chyby v malych prikladoch(co je vcelku dobre), no a potom po par min. k tebe pride a spolu preberete najprv male priklady a po nich zacnes vysvetlovat velky priklad, pricom velky priklad si hric predtym vobec necital, az ked mu ho vysvetlujes ty. ustna teda dokopy trvala v mojom pripade nieco cez 20min - 30min. tot vsio.
ake su podmienky k pripusteniu k ustnej neviem, ale urcite musis mat aspon jeden priklad ako tak schopne i z prologu i z haskellu. inak male priklady su vsetky rovnocenne.

Chjoodge at 2008-01-23 15:47:49

Rada: Čtyři úlohy a jedna otázka na 75 minut se může zdát trochu hodně, ale malé příklady jdou napsat dost krátce. Většinou není řešení delší než dvacet řádek. Takže pokud vás napadne, jak něco vyřešit, ale zdá se vám to dlouhé, tak to raději vymyslete znovu, protože ty malé příklady jsou o tom přijít na ta krátká řešení, abyste to stihnuli :) Začít psát trojstránková řešení se vyplatí až když už není zbytí, protože ten čas pak žerou dost rychle.

Navíc i když něco vymyslíte oklikou na tři strany místo na tři řádky (jako třeba já generování permutací v Haskellu :)), tak z toho Hric moc nadšený není.

Škoda, že to vím až teď :D Ale aspoň že se trojka taky zapisuje :)

jumbo at 2008-01-24 21:03:00

a ten velky priklad sa programoval v prologu alebo haskelly?

hardwire2 at 2008-01-24 21:24:41

jumbo wrote:a ten velky priklad sa programoval v prologu alebo haskelly?

Pry v cem chces, ale je to sity na miru Prologu.