Průběh zkoušky byl stejný jako v předchozím termínu:
1. část
Haskell:
Úkolem bylo vymyslet reprezentaci polynomů a vytvořit funkce pro násobení a dělení (se zbytkem).
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.
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.