Advertisement
Latkoski

transformiraj-neparen flatten

May 14th, 2016
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 1.82 KB | None | 0 0
  1. 2. Дефинирај функција transformiraj-neparen, која прима 1 аргумент – целобројна листа и враќа:
  2. а) (25 п) листа во која ќе се содржат само оние елементи од оригиналната листа кои се појавуваат непарен број пати во истата (на прво ниво):
  3. Пример: (transformiraj-neparen '(1 5 3 5 4 1 5 8 3 1 4))(1 5 8)
  4. б) (40 п) листа во која ќе се содржат само оние елементи од оригиналната листа кои се појавуваат непарен број пати во истата (на сите нивоа):
  5. Пример: (transformiraj-neparen '(2 (6 8) (1 4 2 (2 1) 6) ((1) 4)))(2 8 1)
  6.  
  7. (defun transformiraj-neparen-pomosna (lista brojac pomosna-lista)
  8.     (cond
  9.         ((null lista) nil)
  10.         ((and (null pomosna-lista)(eq (mod brojac 2) 0))(transformiraj-neparen-pomosna (remove (car lista) (flatten (cdr lista))) 0 (cdr lista)))
  11.         ((and (null pomosna-lista)(eq (mod brojac 2) 1))(cons (car lista)(transformiraj-neparen-pomosna (remove (car lista)(flatten (cdr lista))) 0 (cdr lista))))
  12.         ((eq (car lista)(car pomosna-lista))(transformiraj-neparen-pomosna lista (+ 1 brojac) (cdr pomosna-lista)))
  13.         ((not (eq (car lista)(car pomosna-lista)))(transformiraj-neparen-pomosna lista brojac (cdr pomosna-lista)))
  14.        )
  15. )
  16.  
  17. (defun flatten (lista)
  18.     (cond
  19.         ((null lista) nil)
  20.         ((listp (car lista)) (append (flatten (car lista)) (flatten (cdr lista))) )
  21.         (t(append (list (car lista)) (flatten (cdr lista))))
  22.     )
  23. )
  24.  
  25. (defun transformiraj-neparen (lista)
  26.     (transformiraj-neparen-pomosna lista 0 lista)
  27.     )
  28.  
  29. (print (transformiraj-neparen '(2 (6 8) (1 4 2 (2 1) 6) ((1) 4))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement