Advertisement
Tavi33

cflp #7

Apr 7th, 2016
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 2.42 KB | None | 0 0
  1. ;Problema [1]
  2.  
  3. (defun suma(l)
  4.  
  5.     (apply '+ (remove-if-not '(lambda (x) (evenp (position x l))) l))
  6.  
  7. )
  8.  
  9. ;> (suma '(0 1 0 1 0 1))
  10. ;0
  11. ;> (suma '(1 2 3 4 5))
  12. ;9
  13.  
  14. ;Problema [2]
  15.  
  16. ;Se sterg elementele ce se dubleaza (ce sunt si in lista1 si in lista2) apoi se adauga ce ramane la lista1
  17. (defun reuniune (lista1 lista2)
  18.  
  19.     (append lista1 (remove-if-not '(lambda (x) (not (member x lista1))) lista2))
  20.  
  21. )
  22. ;> (reuniune '(a b c d) '(b d e f))
  23. ;(A B C D E F)
  24.  
  25. ;Se sterg elementele din lista1 ce nu sunt si in lista2
  26. (defun intersectie (lista1 lista2)
  27.  
  28.     (remove-if-not '(lambda (x) (member x lista2)) lista1)
  29.  
  30. )
  31. ;> (intersectie '(a b c d e) '(c b e))
  32. ;(B C E)
  33.  
  34. ;Se sterg toti atomii din lista1 ce apartin si listei 2
  35. (defun dif (lista1 lista2)
  36.  
  37.     (append (remove-if-not '(lambda (x) (not (member x lista2))) lista1))
  38.  
  39. )
  40. ;> (dif '(a b c d) '(b d))
  41. ;(A C)
  42.  
  43. ;Problema [3]
  44.  
  45.  (defun aparitii (lista x)
  46.     (setq count 0)
  47.     (car (last (mapcar '(lambda (i) (if (eq i x) (setq count (+ count 1)))) lista)))
  48. )
  49.  
  50. ;>(aparitii '(a b c b b) 'b)
  51. ;3
  52. ;> (aparitii '(1 2 3 2 3 2) 2)
  53. ;3
  54.  
  55. ;Problema [4]
  56.  
  57. (defun print-atom (a)
  58.  
  59.     (princ '|  |)
  60.     (princ a)
  61. )
  62.  
  63. (defun print-first-atom (a)
  64.  
  65.     (princ '|( |)
  66.     (princ a)
  67. )
  68.  
  69. (defun print-list (lista)
  70.  
  71.     (princ '|  (|)
  72.     (princ '| |)
  73.     (do ((l lista (cdr l)))
  74.  
  75.     ((null l) (princ '| )|))
  76.     (princ (car l))
  77.     (if (not (null (cdr l))) (or (terpri) (princ '|    |)))
  78.  
  79.     )
  80.  
  81. )
  82.  
  83. (defun print-spaces (level)
  84.  
  85.     (do ( (i 1 (+ 1 i)) )
  86.  
  87.     ((= level i) nil)
  88.  
  89.     (princ '| |)
  90.  
  91.     )
  92.  
  93. )
  94.  
  95. (defun print-first-list (lista)
  96.  
  97.     (princ '|( ( |)
  98.     (do ((l lista (cdr l)))
  99.  
  100.     ((null l) (princ '| )|))
  101.     (princ (car l))
  102.     (if (not (null (cdr l))) (or (terpri) (princ '|    |)))
  103.  
  104.     )
  105.  
  106. )
  107.  
  108. (defun afis (lista)
  109.  
  110.     (setq pard '|(|)
  111.     (setq parc '|)|)
  112.     (setq space '| |)
  113.  
  114.     (setq first t)
  115.  
  116.     (do ((l lista (cdr l)))
  117.  
  118.     ((null l) t)
  119.     (cond
  120.  
  121.     ((and (not first) (atom (car l))) (print-atom (car l)))
  122.     ((not first) (print-list (car l)))
  123.     ((and first (atom (car l))) (print-first-atom (car l)))
  124.     (t (print-first-list (car l)))
  125.  
  126.     )
  127.     (if (not (null (cdr l))) (terpri) (princ '| )|))
  128.     (setq first nil)
  129.     )
  130. )
  131.  
  132. ;>(afis '((a b) c (d e f) g))
  133. ;( ( A
  134. ;    B )
  135. ;  C
  136. ;  ( D
  137. ;    E
  138. ;   F )
  139. ;  G )
  140.  
  141. ;> (afis '(a b (c d) (e f g) h))
  142. ;( A
  143. ;  B
  144. ;  ( C
  145. ;    D )
  146. ;  ( E
  147. ;    F
  148. ;    G )
  149. ;  H )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement