Staonův svět - Neprocedurální programování

Neprocedurální programování – 12.2.2007, Kryl, R.

No, příklady už si pořádně nepamatuji, tak to někdo dopňte…

První v Haskellu bylo pořadí → permutace a obráceně (přibližně :o) ), pak byl takovej nějakej rekurzivní věšák :o) a v Prologu součtové seznamy a šifra Monte Christo.

Teď jsem byl na ústní a nakonec to mám!!! Za 3 :o)

První příklad jsem neměl vůbec a ve všech ostatních jsem měl chyby (občas i dost velký, třeba z posledního příkladu jsem neměl ani půlku :o) ). Měl jsem šanci na dvojku, ale jako první otázku jsem dostal lazy patterns a nedokázal jsem mu to vysvětlit (ještě aby jo, když nevím, co to je :o) ), takže tak… Přede mnou byli dneska zatím jenom dva lidi a ani jeden nedal.

Přeji štěstí Ondrovi, kterej tam ještě nebyl :o)

Pavel


Update:

Na ústní jsem ještě nebyl, ale zkusím poněkud podrobněji sepsat příklady z písemné části.

Indexy k-ciferných čísel

Vzít všechna k-ciferná čísla, která každou číslici obsahují pouze jednou a nezačínají 0 (tzn. 007 nebylo tříciferné číslo) a čísla lexikograficky seřadit a očíslovat v pořadí. Úkolem bylo udělat převod z indexu na číslo a opačně. Samozřejmě efektivně, ne že si všechna čísla vygeneruji, seřadím je a pak s tím pracuji.

V Haskellu.

Mobil

Rekursivní věšák – oblíbená Krylova úloha Mobil.

Mobil je buď závaží o dané hmotnosti, nebo je to zavěšené rameno (závěs nemusí být ve středu), na jehož obou koncích jsou zavšeny mobily. Úkolem bylo vytvořit algoritmus, který řekne, zda je mobil vyvážený (tzn. v každém závěsu mobilu platí momentová věta). Váhy rame a závesů se zanedbávaly, tedy šlo jen o hmotnost závaží.

V Haskellu.

Součtové seznamy

Mějme seznam L. Součtový A + B je jeho reprezentací, pokud L = A ++ OB, kde ++ znamená spojení seznamů, a OB je reversní seznam B (otočený pozpátku).

Nad touto reprezentací se měly naprogramovat následující operace

  • přidat prvek na konec seznamu,
  • odebrat prvek z konce seznamu,
  • přidat prvek na začátek seznamu,
  • odebrat prvek ze začátku seznamu,
  • konkatenaci dvou seznamů.

V Prologu.

Šifra Monte Christo

Šifra funguje způsobem, že mám mřížku 4×4 a v ní vyříznuté čtyři otvory. Mřížku přiložím k matici 4×4 znaků a přečtu ty, které vidím. Potom mřížku otočím a opět přečtu. A ještě jednou a ještě jednou. Pokud mám větší text, tak text postupně zpracovávám po 16 znakových blocích.

Úkolem bylo vytvořit procedury, které budou šifrovat a dešifrovat data do/ze souboru. Pokud si člověk nepamatoval vstupně výstupní funkce, mohl si svoje „vymyslet“ a používat je (v komentáři popsat, jak fungují).

Zároveň se také mělo otestovat, zda mřížka je korektní, tzn. pokrývá všechny pozice v matici.

Úloha také v Prologu.

Ondra

P.S. Příště byste možná mohli psát s diakritikou, abych to pak nemusel celé přepisovat ;)


Tak mám zkoušku za sebou. Písemku jsem měl celkem dobře, aspoň si to myslím. Krylovi se to nechtělo příliš procházet, tak na to vždycky tak letmo kouknul a řekl, že to je dobře :) Takže to mám za jedna. Přede mnou bylo asi pět lidí a kromě jednoho všichni za jedna.

Ondra

Matfyz | 14.2.2007 St 14:45 | <<< trvalý odkaz >>> | tisk | 2 komentáře

Komentáře k textu

Rss komentářů tohoto textu

[1] reaguj
Staon mejl web 14.2.2007 St 19:57

Hmm, moc pěkné. To jsem na sebe zítra zvědavý, budu se na to muset ještě kouknout, lazy patterns sice přibližně vím, ale stejně bych mu to neuměl vysvětlit :)

Nevíš, jak dopadl Michal?

[2] reaguj
Tiboh 14.2.2007 St 22:40

No hele, hacky a carky po mne nemuzes chtit… to bych ten kousek psal hodinu :o) Bud rad, ze nepiseu jak jeden clovek, kterej kazdou dlouhou hlasku zdvojuje, to se pak neda moc cist :o) O Michalovi nic nevim… byl tam uz vcera a nijak sem se s nim nebavil.

Přidej komentář!

  Gravatar povolen.

Příspěvěk je formátován Texy! syntaxí. Není povoleno HTML, odkazy se převádějí automaticky.
Internetový časopis iHrom je?
Odpověd: časopis počítačová hra

Autor vzhledu: Staon. Stránky jsou postaveny na redakčním systému RS2 (verze RC2).