Advertisement
Latkoski

Пресметај - единечни, парни

Aug 21st, 2016
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 1.43 KB | None | 0 0
  1. Дефинирај функција presmetaj која прима еден аргумент: листа L. Ако листата има
  2. парен број на елементи тогаш враќа листа од сите парни броеви во L, а во спротивно враќа листа
  3. од броеви коишто се појавиле само еднаш (не се повториле) во L.
  4.  
  5.  
  6. (defun presmetaj (lista)
  7.     (cond
  8.         ((eq (daliParna lista 0) t)(vratiParni lista))
  9.         ((eq (daliParna lista 0) nil)(edinecni lista 0 lista))
  10.         )
  11.     )
  12.  
  13. (defun daliParna (lista brojac)
  14.     (cond
  15.     ((and (null lista)(eq (mod brojac 2) 0)) t)
  16.     ((and (null lista)(eq (mod brojac 2) 1)) nil)
  17.     (t (daliParna (cdr lista)(+ 1 brojac)))
  18.     ))
  19.  
  20. (defun vratiParni (lista)
  21.     (cond
  22.     ((null lista) nil)
  23.     ((evenp(car lista))(cons (car lista)(vratiParni (cdr lista))))
  24.     ((oddp (car lista))(vratiParni (cdr lista)))
  25.         )
  26. )
  27.  
  28. (defun edinecni (lista brojac pomlista)
  29.     (cond
  30.         ((null lista) nil)
  31.         ((and (null pomlista)(eq brojac 1))(cons (car lista)(edinecni (cdr lista) 0 lista)))
  32.         ((and (null pomlista)(> brojac 1))(edinecni (remove (car lista)(cdr lista)) 0 lista))
  33.         ((eq (car lista)(car pomlista))(edinecni lista (+ 1 brojac)(cdr pomlista)))
  34.         (t(edinecni lista brojac (cdr pomlista)))
  35.         ))
  36.    
  37. (print (presmetaj '(2 4 5 7 9 11 2 2)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement