Zk. 23.6.
Napsal: 23. 6. 2011 17:51
Průběh zkoušky byl stejný jako v předchozím termínu:
1. část
Haskell:
1) Úkolem bylo vymyslet reprezentaci polynomů a vytvořit funkce pro násobení a dělení (se zbytkem).
2) a) Pro zadanou permutaci čísel 1..N jsme měli najít následující v lexikografickém pořadí.
b) Pro dané N a K jsme měli najít K-tou permutaci čísel 1..N.
Prolog:
3) Měli jsme udělat predikát odpov(+r1, +r2), který odpoví, za si seznamy čísel, * a ? odpovídají. ? zastupuje libovolnou číslici, * zastupuje libovolně mnoho číslic.
4) Součtové seznamy (trochu podobné rozdílovým), skládající se ze dvou seznamů (A+B), první obsahoval jednu část celého seznamu, druhý obsahoval druhou část, ale obráceně. Poslední prvek součtového seznamu A+B je tedy první prvek B.
Měli jsme napsat predikáty na přidání prvku na začátek a na konec, odebrání prvku ze začátku a konce, konkatenaci a obrácení.
2. část
Na vstupu je konstantní Booleovský výraz zadaný seznamem spojek and, or, not a konstantami True a False. Spojky nemají žádnou prioritu, ani se nijak neasociují (bez závorek tedy nelze zjistit hodnotu výrazu). Úkolem bylo spočítat počet uzávorkování takových, že celý výraz měl hodnotu True.
1. část
Haskell:
1) Úkolem bylo vymyslet reprezentaci polynomů a vytvořit funkce pro násobení a dělení (se zbytkem).
2) a) Pro zadanou permutaci čísel 1..N jsme měli najít následující v lexikografickém pořadí.
b) Pro dané N a K jsme měli najít K-tou permutaci čísel 1..N.
Prolog:
3) Měli jsme udělat predikát odpov(+r1, +r2), který odpoví, za si seznamy čísel, * a ? odpovídají. ? zastupuje libovolnou číslici, * zastupuje libovolně mnoho číslic.
4) Součtové seznamy (trochu podobné rozdílovým), skládající se ze dvou seznamů (A+B), první obsahoval jednu část celého seznamu, druhý obsahoval druhou část, ale obráceně. Poslední prvek součtového seznamu A+B je tedy první prvek B.
Měli jsme napsat predikáty na přidání prvku na začátek a na konec, odebrání prvku ze začátku a konce, konkatenaci a obrácení.
2. část
Na vstupu je konstantní Booleovský výraz zadaný seznamem spojek and, or, not a konstantami True a False. Spojky nemají žádnou prioritu, ani se nijak neasociují (bez závorek tedy nelze zjistit hodnotu výrazu). Úkolem bylo spočítat počet uzávorkování takových, že celý výraz měl hodnotu True.