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

Prémie:

 

  1. PRI (1b)
    Prečo musia byť funkcie define, if, cond, and a or primitívy?
  2. SAM (2b)
    Vytvorte (nie triviálny) S-výraz, ktorého hodnota je (presne) ten istý S-výraz. Inými slovami: ak sa tento S-výraz napíše do príkazového riadku, PCSCHEME ho vráti ako výsledok.
  3. PER (2b)
    Zadefinujte unárnu funkciu (perms zoz), ktorá vráti zoznam všetkých permutácií zoznamu zoz. Využite funkciu map.
  4. AVG (2b)
    Vytvorte funkciu (<priemer zoz), ktorá na konci prvého (!) prechodu zoznamu zoz vráti počet prvkov menších, ako je ich priemer.
    Pomôcka: Priebežne vytvárajte vhodnú funkciu, ktorú stačí na konci aplikovať.
  5. BAN (1b)
    Vytvorte funkciu (create-account account password), ktorá vznikne modifikáciou funkcie create-account3 zo 6.prednášky. Nová funkcia obsahuje naviac heslá (pozri 6.cvičenie) a vytváranie podkont.
    Podkonto je konto, ktoré zdieľa so svojim nadkontom finančné prostriedky, ale len do určitej výšky.
    Pri vytváraní podkonta sa z nadkonta presunie suma limit (prípadne celá čiastka z nadkonta, ak je menšia ako limit). Takéto podkonto sa potom správa ako bežné konto (s vlastným heslom) s jedinou výnimkou. Pri pridaní sumy nad limit sa prevyšujúca čiastka presunie do nadkonta.
    Príklad: (define moje-konto ((account 'sub-account password) limit password2))
  6. MIR (1-2b)
    Vytvorte funkciu (mirror! list0), ktorá otočí (vlastný) zoznam list0 (rekurzívne, do hĺbky) bez akéhokoľvek použitia funkcie cons.
    1b - verzia, ktorá využíva funkciu set-cdr! (t.j. presmeruje ukazovatele na ďalší prvok),
    2b - verzia, ktorá využíva funkciu set-car! a nevyužíva funkciu set-cdr!.
  7. -->
Koniec prémií!!!

Last Updated on 30-Nov-2000
By Petrovic Pavol
E-mail: ppetrovi@dent.ii.fmph.uniba.sk