Advertisement
gjorgjikirkov

parni

May 9th, 2016
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 1.04 KB | None | 0 0
  1. (defun checkParnost (n) ;; vrakja T dokolku na parnite pozicii vo brojot ima parni cifri floor koristime za da dobieme
  2.     (cond               ;; cel, broj ne decimalen
  3.         ((< n 1) t)
  4.         ((evenp (floor (/ (mod n 100) 10))) (checkParnost (floor (/ n 100))))
  5.         (t nil)
  6.     )    
  7. )
  8.  
  9. (defun brojCifri (n) ;; vrakja broj na cifri vo eden broj
  10.     (cond
  11.         ((eq n 0) 0)
  12.         (t (+ 1 (brojCifri (floor (/ n 10)))))
  13.     )    
  14. )
  15.  
  16. (defun parniCount (L n posList) ;ako brojot na cifri e eden znaci deka taa cifra se naogja na prva pozicija -> NIL
  17.     (cond
  18.         ((null L) posList)
  19.         ((eq (brojCifri (car L)) 1) (parniCount (cdr L) (+ n 1) posList))
  20.         ((and (> (brojCifri (car L)) 1) (eq (checkParnost (car L)) 'T)) (parniCount (cdr L) (+ n 1) (append  (list (+ n 1)) posList)))
  21.         (t (parniCount (cdr L) (+ n 1) posList))    
  22.     )  
  23. )
  24.  
  25. (defun parni (L)
  26.     (reverse (parniCount L 0 '()))
  27. )
  28.  
  29. (print (parni '(4232)))
  30. (print (parni '(4322)))
  31. (print (parni '(21 12 33 422 13 4215)))
  32. (print (parni '(2)))
  33. (print (parni '(2 12 4211 33 54 13 571)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement