ϵ">]>
Module |
Remark
7. CVIČENIE Z PREDMETU ÚVOD DO DEKLARATÍVNEHO PROGRAMOVANIA http://ii.fmph.uniba.sk/cl/courses/1-AIN-505-udp/0506ls/ex/ex07.cl |
Remark
Dátum: streda 28. 3. 2006 Odporúčaná verzia CL: 5.81.16 WWW stránka predmetu: http://ii.fmph.uniba.sk/cl/courses/1-AIN-505-udp/0506ls/?lang=sk Kontakt na cvičiaceho: mailto:kluka@fmph.uniba.sk |
Remark
Párovacia funkcia CL Párovacia funkcia zabudovaná do CL je založená na enumerácii (očíslovaní) binárnych stromov. Zapisuje sa infixovým operátorom "," (čiarka), napr. . Podobne ako pre iné párovacie funkcie, pre funkciu "," platí:
Pretože každé nenulové číslo je pár, môžeme zadefinovať funkciu párová veľkosť ( ), ktorej hodnota sa rovná počtu párovacích operácií potrebných na vytvorenie čísla z . Oproti modifikovanej Cantorovej párovacej funkcii má funkcia "," navyše vlastnosť lexikografického usporiadania : Zabudované funkcie a majú vlastnosti a . Na definovanie funkcií je výhodnejšie používať párovú diskrimináciu : |
Remark
Úloha 1. Naprogramujte funkciu , ktorá rozdelí diadický zápis čísla na začiatok a koniec , pričom má dĺžku . Funkcia vráti pár . Platí Napr. . Pri testovaní použite na zobrazenie výsledku formát . |
Remark
Úloha 2. Naprogramujte funkciu , ktorá vráti pár tvorený podielom a zvyškom po delení čísla číslom . Napr. . Na výpočet použite postupné odčítanie, nie zabudované delenie a modulo. |
Remark
Úloha 3. a) Definujte funkciu , ktorej hodnota sa rovná počtu párovacích operácií potrebných na vytvorenie čísla z (napr. = = = ). b) Definujte funkciu , ktorá zreťazí svoje argumenty chápané ako zoznamy (t.j. ak a , potom ). Napr. . |
Remark
Úloha 5. Definujte funkciu (zobrazovanú pomocou ako ), ktorá obráti zoznam : Napr. . Návod: Naprogramujte dve verzie – jednu používajúcu zreťazenie , druhú používajúcu pomocnú chvostovorekurzívnu funkciu. |
Remark
Úloha 8. Definujte funkciu , ktorá vráti zoznam pozostávajúci z prvých prvkov zoznamu , teda Napr. . Funkcia má mať vlastnosť |
Remark
Úloha 9. Definujte funkciu , ktorá odstráni prvých prvkov zo zoznamu , teda Napr. . Funkcia má mať vlastnosť Všimnite si, že platí |
Remark
Úloha 10. Definujte funkciu , ktorá má vlastnosť bez použitia funkcií a . Poznámka: Funkcia je podobná funkcii z úlohy 1. Uvedomte si, že tak, ako môžeme párovaním vytvoriť dvojicu čísel, môžeme vytvoriť aj dvojicu zoznamov. Pozor na správne zátvorkovanie. |
Remark
Úloha 11. Definujte funkciu , ktorá vráti najmenší prvok zoznamu . Napr. . Analogicky definujte funkciu , ktorá vráti najväčší prvok zoznamu . |
Remark
Úloha 12. Definujte funkciu , ktorá vypočíta zoznam prvých hodnôt Fibonacciho funkcie, teda Namiesto zreťazovania využite pomocnú funkciu s akumulátorom. Funkcia je zadefinovaná na začiatku tohto súboru. |
Remark
Úloha 13. Definujte funkciu , ktorá aplikuje Fibonnaciho funkciu na všetky prvky zoznamu a vráti zoznam výsledkov: |
Remark
Úloha 15. Definujte funkciu , ktorá sčíta všetky prvky zoznamu : Napr. . Využite chvostovorekurzívnu pomocnú funkciu. |
Query: |
|
Results: |
|