Sestavte funkci, ktera ke vstupujici (nekonecne) posloupnosti realnych cisel a prirozenemu cislu N vyda posloupnosti "klouzavych prumeru s intevalem N". Klouzavy prumer s intervalem N je prumer poslednich prvku.
Mocninna rada je reprezentovana (nekonecnou posloupnosti) posloupnosti jejich koeficientu. Vytvorte funkce, ktere spocitaji
a) Soucet dvou mocninnych rad
b) Soucin dvou mocninnych rad
c) K-tou derivaci mocninne rady
Ke kazdemu obecnemu (korenovemu) stromu existuje kanonicka reprezentace pomoci binarniho stromu, v niz
levy syn znamena prvorozeny syn v puvodnim strome a
pravy syn znamena mladsi bratr v puvodnim strome
sestavte predikat(y) pro transformaci z obecneho na binarni a zpet.
Definujet predikat odpov (r1,r2) dvou promennych, ktery pro kazde dva seznamy (cisel a specialnich znaku *, ?) r1 a r2 uspeje pokud existuji "substituce jednoho cisla za kazdy zolik ? a substituce posloupnosti (treba prazdne) cisel za znak * takove, ze po provedeni techto substituci dostanete stejne seznamy."
Napr:
odpov ( [1,5,*,7,?,1] , [*,7,7,5,1] ).
odpov ( [1,*,5,7,?,1] , [?,?,7,5,1] ).
Muzete predpokladat, ze v jednom seznamu je maximalne jedna hvezdicka.
Tak to je vse, ted jsem se vratila akorat z pisemky a ustni probihaji od dneska az do stredy takze zadnou statistiku uspesnosti bohuzel neposkytnu...
ja byl na ustnim dneska jako treti - prede mnou 1,1 ja za 3 (podle me je Kryl celkem tvrdy na to ze ne uplne vyznamna chyba (to co clovek opravi po chvili ladeni) znamena ze to nemate dobre, ale na druhou stranu celkove hodnoceni je docela mirne - ja osobne mel zhruba 2,5 prikladu dobre a vysledek byl mezi 2 a 3... Takze moje rada je pozor na hloupe chyby (treba splest si + a - s * a / v prvnim prikladu
Tak na ustni to u me trvalo asi dve minuty, 30 sekund na priklad a bral do ruky index.
Co mu stacilo:
1. Klouzave prumery - urcite pomocnou fci (nebo lambda), ktera dostane dvakrat seznam (puvodni a puvodni bez prvnich n clenu), soucasnou sumu a dane N a bude nove soucty pocitat pomoci tech predchozich.
Co jsem slysel, nelibi se mu, kdyz to clovek pokazde pocita znovu.
2.
a) Soucet je snad trivka ( add (x:xs) (y:ys) = (x+y) : ( add xs ys ) )
b) Soucin jsem udelal dvema zpusoby - ten lepsi mi dokonce sam doktor pochvalil (z tech 30 sekund stravil asi 25 louskanim tohoto).
c) Derivaci jsem udelal taky dvakrat - jednak jako der_n x n = der ( der x n - 1), jednak primo - to uz nekomentoval, ale myslim, ze ho to potesilo.
3. Aniz bych to vedel, udelal jsem temer stejne reseni, jako je na http://prgs.xf.cz/, to zmatchoval a sel dal.
odpov([?|XS], [_|YS]) :- odpov(XS, YS).
plus zrcadlove
odpov([*|XS], [Y|YS]) :- odpov(XS, YS) ; odpov([*|XS], YS); odpov(XS, [Y|YS]).
opet plus zrcadlove.
Za hodne asi vdecim take tomu, ze spechal. Po onech dvou minutach mi venoval autogram s kouzelnym slovickem, teorii po me nechtel zadnou (a ja precetl celou Introduction to Haskell v anglictine...).
Vim akorat o dvou dalsich lidech, jeden za jedna, druhy za dva.
See ya, neprocko..or rather not
Those who want, try to find the way. Those who do not want, try to find the reason.
No ja sla hned v pondeli na ustni asi jako pata nebo tak. Prolog jsem mela cely dobre, coz me zachranilo. Klouzavy prumer mi nevzal, nevim presne proc - rozhodne se mu nelibilo to, ze to bylo neefektivni (proste scitani n clenu pokazde znova neni nejlepsi...), ale mumlal neco o spatne podmince, takze nevim, kvuli ceho to presne bylo, ale rozhodne mi ten priklad bral jako cely spatne. U soucinu jsem taky udelala hloupou chybu, takze mi ho nevzal, soucet a derivaci jsem mela dobre (derivaci dokonce pochvalil). Nakonec mi rekl, ze to je spis tri nez dve, ale ze se me jeste teda na neco zepta, ze kdyz mu to reknu na jedna, tak dostanu dve, ale bat se nemusim, hur nez tri to byt uz nemuze - tohle je super, kdyz vas nekdo takhle uklidni, protoze vite, ze ma smysl to risknout - nemate, co ztratit. Zeptal se na rozdilove seznamy - takze po peti minutach jsem to sama vzdala a nechala si napsat trojku.
U ustni je akorat neprijemne sledovat, jak prohlizi tu pisemku - zvlast, kdyz mate jeden a pul prikladu uplne blbe, to jsem pak jenom trnula, aby mi nekde v tom prologu nenasel chybu. Jinak Kryl byl v pohode a rozhodne jsem nemela pocit, ze by mel nejaky problem s tim, ze jsem holka. Pak me jeste uklidnil tim, ze mi rekl, ze zkousku jsem urcite udelala, a ze se jeste musi rozhodnout jak.
Celkove hodnoceni se mozna muze zdat drsne, ale zase to byly relativne lehke priklady, takze se da pochopit, ze mu vadily i sebemensi chybky. Jinak tri hodiny na pisemnou je hodne casu, zvlast pokud si clovek aspon trochu prosel priklady na forech a vedel aspon trochu do ceho jde. Ja jsem tomu venovala celkove asi ctyri odpoledne a stacilo to - sice jsem nepodala nijak oslnivy vykon, ale zkousku mam a to mi staci.
Takze doporuceni: projit si a zkusit naprogramovat nejaka ta stara zadani, cim vic toho stihnete, tim lip - je velka sance, ze se nejake ty priklady vyskytnou v pisemce. Nestresovat a nepanikarit- tri hodiny je dost a kdyz si prectete nekolikrat zadani, tak vetsinou zjistite, ze to nejak pujde. Kdyz nebudete vedet neco, o cem budete mit pocit, ze byste to meli vedet, zeptejte se - treba u nas se jeden clovek zeptal, co je mocninna rada, ze uz si to moc nepamatuje, kryl se sice zeptal, jestli si z neho dela srandu, ale pak ten vzorecek napsal na tabuli, takze pohoda. Pisemku, pokud budete mit cas, si pak jeste projdete - je pravda, co tu uz nekdo psal - i kdyz tam mate blbou chybu, u ktere je jasne, ze ji zvladnete opravit behem minuty, u ustni uz to nebudete mit prilezitost udelat - muzete mu śice rict reseni, ale to vam nepomuze (nebo aspon me to nepomohlo), co je psano je dano, a tak to kryl taky bere. No a nakonec - ja mela z tehle zkousky nejvetsi strach, protoze me dost lidi strasilo, jaka je to hruza a jak kryl nema rad zenske, ale nakonec mi to neprislo o nic horsi, nez ty ostatni zkousky a kryl byl fakt (v ramci svych moznosti;)) prijemny.
No ja jsem byla na ustnich vcera rano, jako treti.
U prvniho mi za chybu dal to scitani furt dokola, u druhyho se mu nelibilo moje nasobeni, ze pri nekonecnym seznamu, to nic nevyplivne, protoze to ceka na dno rekurze...
U tretiho jsem opominula prazdny obecny strom, ale jinak OK, a ctvrtej sice slozite resenej, ale v poradku.
Teorie : lazy patterns a lazy vyhodnocovani, prolog : akumulator, chtel abych mu to povidala jako neznalemu kamaradovi, ktery o tom nic nevi, proste jako laikovi, coz mi nastesti slo, takze vysledek za 1.
Pred teoretickejme otazkama mi rekl ze pod 2 nespadnu, takze urcite stoji za to zkusit ty otazky, protoze vam nic horsiho, nez na co je vase pisemka NEDA.
Neni to jako Jirovsky, ktery kdyz ste nevedeli otazku tak jste mohli spadnout z jednicky na ctyrku...
Ale jak to tady ctu, tak postupem dne je Kryl prisnejsi a prisnejsi, takze je urcite lepsi jit rano, asi kdybych sla odpoledne tak tu jednicku nemam...
No preju stesti vsem co jeste neprocko nemaj...
Pz píše:1. Klouzave prumery - urcite pomocnou fci (nebo lambda), ktera dostane dvakrat seznam (puvodni a puvodni bez prvnich n clenu), soucasnou sumu a dane N a bude nove soucty pocitat pomoci tech predchozich.
Co jsem slysel, nelibi se mu, kdyz to clovek pokazde pocita znovu.
Kdyz se to ale pocita tak, ze si clovek udrzuje posloupnost castecnych souctu a ty pak odcita, tak se tam prece ale kumuluje chyba... protoze Float ma v haskellu omezenou presnost. Pokud je to skutecne tak, tak to (v zavislosti na konkretni implementaci) bude od urciteho clenu bud vracet 0 (protoze (100000000000... - 100000000000...)/n == 0/n == 0) nebo tam bude vznikat nejaka odchylka.
BTW nevedel by nekdo, proc mi tahle vec (rozdil seznamu, nasledne vydeleny n-kem) nefunguje?
vydeleny_rozdil :: [Float] -> [Float] -> Integer -> [Float]
vydeleny_rozdil (a:as) (b:bs) n = (a-b)/n : (vydeleny_rozdil as bs n)
Evidentne tomu vadi, ze delim Float Integerem. Hlasi mi to:
ERROR file:.\prvni.hs:46 - Type error in application
*** Expression : (a - b) / n
*** Term : a - b
*** Type : Float
*** Does not match : Integer
For every epsilon, there is delta.
Where is my delta?
Lukas Mach píše:Evidentne tomu vadi, ze delim Float Integerem.
Tenhle problem jsem taky resil, muze za to typovy system Haskellu Dvorak mi na to poradil, ze existuje _nejaka_ funkce, ktera prevadi Int na Float, ale uz jsem to nehledal, tak nevim.
stinny píše:Tenhle problem jsem taky resil, muze za to typovy system Haskellu Dvorak mi na to poradil, ze existuje _nejaka_ funkce, ktera prevadi Int na Float, ale uz jsem to nehledal, tak nevim.
Diky, staci mi, ze se to resi nejakou konverzni funkci... navic na papiru snad takovahle chyba nebude hrat roli.
For every epsilon, there is delta.
Where is my delta?