Clausal Language (ver. 5.81.16, by P.J. Voda, J. Komara, J. Kluka)
2. TEST Z ÚVODU DO DEKLARATÍVNEHO PROGRAMOVANIA
Piatok 19. 5. 2006 o 14:30
|
|
Vaše meno: Pozsgaiova Zuzana
|
|
Test pozostáva zo štyroch úloh. Zadania pozri dole.
POKYNY
-
Na vyriešenie úloh máte 60 minút.
-
Meno súboru obsahujúceho vaše riešenie: test02_1430.cl .
-
Na priebežné ukladanie vášho riešenia používajte tlačidlo Save
( Alt+S ).
-
Vaše riešenie odovzdajte podľa pokynov cvičiaceho.
POČET BODOV:
-
1. úloha = 5 bodov
-
2. úloha = 5 bodov
-
3. úloha = 10 bodov
-
4. úloha = 10 bodov
|
|
Preskočte nasledujúce komponenty až po nadpis ÚLOHY .
|
|
Definujte funkciu
, ktorá vráti najväčší prvok zoznamu
. Napr.
.
|
|
|
|
Definujte funkciu
, ktorá vynásobí všetky prvky zoznamu
:
Vaša definícia by mala použiť pomocnú funkciu s akumulátorom. Za priamočiaru
definíciu môžete získať najviac 3 body .
Príklad:
.
|
|
Poznámka k 3. úlohe. (Zadanie pozri nižsie.)
Zoznam
nazveme množinou (a zapíšeme
) práve vtedy, keď jeho prvky sú vzostupne usporiadané bez opakovania.
|
|
|
|
Definujte funkciu
(
), ktorá vypočíta rozdiel množín
a
, čiže
Využite, že
a
sú množiny. Nepoužite žiadne pomocné funkcie ani predikáty.
|
|
|
|
Poznámka k 4. úlohe. (Zadanie pozri nižsie.)
Zoznam
nazveme usporiadaným (zapíšeme
) práve vtedy, keď jeho prvky sú vzostupne usporiadané (s možným opakovaním).
Zoznam
je permutáciou zoznamu
(zapisujeme
) práve vtedy, keď sa každý prvok vyskytuje v zozname
rovnaký početkrát ako v zozname
.
Triedenie je taká funkcia
, ktorá pre každý zoznam
vráti zoznam, ktorý je jeho usporiadanou permutáciou; teda platí
|
|
4. ÚLOHA (10 bodov)
Naprogramujte triedenie quicksort . Musíte zadefinovať dve funkcie:
|
|
a) (5 bodov)
rozdelí zoznam
na dvojicu zoznamov
. Zoznam
bude obsahovať všetky prvky z
menšie ako alebo rovné
, zoznam
bude obsahovať všetky prvky z
väčšie ako
. Formálne
Funkcia
musí vždy vrátiť dvojicu. Nepoužite žiadne pomocné funkcie ani
predikáty.
|
|
|
|
b) (5 body)
, samotný quicksort, používa funkciu
a zabudované zreťazenie zoznamov. Pretože táto funkcia je triedením, podľa
poznámky má platiť
Nepoužite žiadne ďalšie pomocné funkcie ani predikáty.
|
|
|
|
Heap used: 244624 free: 133972344
Time used: 0:0:0:2