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 13:00
|
|
Vaše meno: [Peter Gajdos]
|
|
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_1300.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 zoznam pozostávajúci z prvých
prvkov zoznamu
. Ak
má menej, ako
prvkov, funkcia vráti všetky. Formálne
Príklad:
.
|
|
|
|
Definujte funkciu
, ktorá vypočíta zoznam prvých
hodnôt funkcie zabudovanej funkcie
(druhá mocnina,
), teda
Ak vaša definícia použije zreťazenie, môžete získať najviac 3
body . Definícia bez zreťazenia vyžaduje pomocnú funkciu simulujúcu
cyklus while alebo for.
|
|
|
|
|
|
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á odstráni prvok
z množiny
.
Využite, že
je množina.
|
|
|
|
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 vkladaním ( insertion sort ). Musíte
zadefinovať dve funkcie:
|
|
Naprogramujte triedenie zlučovaním ( merge sort ). Musíte
zadefinovať tri funkcie:
|
|
a) (3 body)
rozdelí zoznam
na dvojicu zoznamov
polovičnej dĺžky ako zoznam
(ak
má nepárnu dĺžku, zoznam
je o jeden prvok dlhší ako
). Zoznam
bude obsahovať prvky na párnych miestach (číslované od 0) v zozname
, zoznam
bude obsahovať prvky na nepárnych miestach v
. Formálne
Funkcia
musí vždy vrátiť dvojicu. Nepoužite žiadne pomocné funkcie ani
predikáty.
|
|
|
|
b) (4 body)
predpokladá, že zoznamy
a
sú usporiadané, a vráti usporiadaný zoznam, ktorý obsahuje všetky prvky
z oboch zoznamov
a
aj s prípadnými opakovaniami. Má teda platiť
Nepoužite žiadne pomocné funkcie ani predikáty. Využite, že zoznamy
a
sú usporiadané.
|
|
|
|
c) (3 body)
, samotné triedenie zlučovaním, používa funkcie
a
. 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: 276588 free: 133940388
Time used: 0:0:0:2