Symbolické programovanie a LISP,
zima 2000/2001
(vychádza z prednášky
Funkcionálne programovanie, Ivan Kalaš)
Petrovič Pavol, Ústav Informatiky, č.d. 15
e-mail: ppetrovi@dent.ii.fmph.uniba.sk
www k prednáške: http://www.ii.fmph.uniba.sk/vyuka/lisp
4.cvičenie
- Zakliate zoznamy
Zakliaty zoznam je dvojica pozostávajúca z prvého
prvku zoznamu a predpisu (funkcie) určujúceho
zvyšok zakliateho zoznamu (podzoznam, t.j. ďalší
zakliaty zoznam). "Posledný" predpis dáva
hodnotu nil.
- Zadefinujte unárnu funkciu lengthZ,
ktorá vráti dĺžku zakliateho zoznamu Zzoz.
(define (lengthZ Zzoz) ...
- Zadefinujte binárnu funkciu appendZ,
ktorá spojí dva zakliate zoznamy Zzoz1
a Zzoz2 do jedného.
(define (appendZ Zzoz1 Zzoz2) ...
- Zadefinujte unárnu funkciu convZN,
ktorá konvertuje zakliaty zoznam Zzoz
na normálny.
(define (convZN Zzoz) ...
- Zadefinujte unárnu funkciu convNZ,
ktorá konvertuje normálny zoznam zoz
na zakliaty.
(define (convNZ zoz) ...
- Zadefinujte unárnu funkciu revZ,
ktorá otočí zakliaty zoznam Zzoz.
(define (revZ Zzoz) ...
- Grafy
Graf je množina vrcholov. Každý vrchol je
dvojica pozostávajúca z hodnoty (mena) vrcholu a z
unárnej funkcie, ktorá aplikovaním hodnoty vrcholu
vráti zoznam všetkých následovníkov (susedné
vrcholy). Príklad grafu:
- Zadefinujte unárnu funkciu depth,
ktorá pre daný vrchol v vráti
zoznam vrcholov patriacich do rovnakého komponentu.
Využite prehľadávanie do hlbky.
(define (depth v) ...
- Zadefinujte unárnu funkciu breadth,
ktorá pre daný vrchol v vráti
zoznam vrcholov patriacich do rovnakého komponentu.
Využite prehľadávanie do šírky a čo
najefektívnejšie funkcie map, apply,
let, ...
(define (breadth v) ...
Last Updated on 19-Oct-2000
By Petrovic Pavol
E-mail: ppetrovi@dent.ii.fmph.uniba.sk