Quote from: kane77 on 18.11.2007, 19:38:09ja nechcem vyzerat ako totalny magor, ale mne to neslape ani s tym lst ani s nicim inym..postup je ako pisal uz ejden vyssie..new, save, compile a na zaver load ?Quote from: santa_claus on 18.11.2007, 18:38:57Quote from: kane77 on 17.11.2007, 22:26:39:nevyhadzuje ti ta 11 pri kompilacii problem ?..lebo mne hej a nevem s tym ani pohnut, pls neskusil by si sa na to pozriet ?
trocha som sa dnes nudil a spravil som toto:Code [Select]
1.) Napíšte funkciu, ktorá vráti počet prvkov v zozname (neobsahujúcom ďalšie zoznamy) - nepoužite LENGTH !
(defun len(list)
(cond ((null list) 0)
((null (cdr list)) 1)
(t (1+ (len (cdr list))))
)
)
2.) Napíšte funkciu, ktorá zistí, či počet prvkov v zozname (na najvyššej úrovni) je párny, alebo nepárny - nepoužite LENGTH !
(defun len(list)
(cond ((null list) 0)
((null (cdr list)) 1)
(t (1+ (len (cdr list))))
)
)
(defun parny(list)
(if (eq (mod (len list) 2) 0) 'parny 'neparny))
5.) Napíšte funkciu, ktorá zistí, či daný prvok je prvkom zoznamu (neobsahujúceho ďalšie zoznamy).
(defun contains(c list)
(cond ((eql c (car list)))
((null (cdr list)) (not (null (cdr list))))
(t (contains c (cdr list)))
)
)
6.) Napíšte funkciu, ktorá zistí, koľkokrát sa daný prvok vyskytuje v zozname (neobsahujúcom ďalšie zoznamy).
(defun counter(c list)
(cond ((eql c (car list)) (1+ (count c (cdr list))) )
((null (cdr list)) 0)
(t (count c (cdr list)))
)
)
7.) Napíšte funkciu, ktorá zistí, koľkokrát sa daný prvok vyskytuje v zozname (neobsahujúcom ďalšie zoznamy).
(defun nthelm(n list)
(cond ((eq 1 n) (car list))
(t (nthelm (- n 1) (cdr list))))
)
8.) Napíšte funkciu, ktorá vráti počet párnych čísel v zozname (neobsahujúcom ďalšie zoznamy).
(defun evenelm(list)
(cond ((null (cdr list)) (if (eq (mod (car list) 2) 0) 1 0))
((eq (mod (car list) 2) 0) (1+ (evenelm(cdr list))))
(t (evenelm(cdr list)))
)
)
9.) Napíšte funkciu, ktorá vráti počet nepárnych čísel v zozname (neobsahujúcom ďalšie zoznamy).
(defun oddelm(list)
(cond ((null (cdr list)) (if (eq (mod (car list) 2) 1) 1 0))
((eq (mod (car list) 2) 1) (1+ (evenelm(cdr list))))
(t (evenelm(cdr list)))
)
)
11.) Napíšte funkciu, ktorá vráti posledný prvok zoznamu (neobsahujúceho ďalšie zoznamy) - nepoužite LENGTH !
(defun last(list)
(cond
((null list) (return list))
((null (cdr list)) (car list))
(t (last (cdr list)))))
3. a 4. napisal MKI a 10. mam ja takze to tu nedavam..
eh no jasne ze vyhadzuje.. som si to nevsimol.. vyhadzuje preto lebo funkcia last uz v lispe existuje ... takze staci premenovat last na co ja viem napriklad lst..
takze spravne takto:
(defun lst(list)
(cond
((null list) (return list))
((null (cdr list)) (car list))
(t (lst (cdr list)))))