Advertisement
vardgrig1

Lisp Likvid

Feb 21st, 2023 (edited)
276
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 4.26 KB | None | 0 0
  1. ;problem 5 from bilet11
  2. (defun sumHelper (l sum)
  3.   (if (null l)
  4.       sum
  5.       (if (atom (car l))
  6.           (if (numberp (car l))
  7.               (sumHelper (cdr l) (+ sum (car l)))
  8.               (sumHelper (cdr l) sum)
  9.           )
  10.           (sumHelper (cdr l) (sumHelper (car l) sum))
  11.       )
  12.   )
  13. )
  14.  
  15. (defun findSum (l)
  16.   (sumHelper l 0)
  17. )
  18.  
  19. ;(print (findSum '(4 (5 (2 3 (1 1))4) 3 5 4)))
  20.  
  21. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  22.  
  23. ; program to print first element of the deepest level in the given list
  24. (defun max_deepest_helper(lst deep)
  25.    (if (null lst); if null return 0
  26.        (cons deep 0)
  27.        (if (atom (car lst)); else if first elem is atom
  28.           (if (< deep (car (max_deepest_helper (cdr lst) deep))); if deep < mnacaci deep-ic
  29.               (max_deepest_helper (cdr lst) deep); call it for rem list and deep
  30.               (cons deep (car lst)); else (deep first elem)
  31.           )
  32.        (if (< (car (max_deepest_helper (car lst) (+ deep 1))) (car (max_deepest_helper (cdr lst) deep))); else if first it's not atom and deep of the first list, deep + 1 < deep of rem list, deep
  33.           (max_deepest_helper (cdr lst) deep); call it for rem list, deep
  34.        (max_deepest_helper (car lst) (+ deep 1)); else call it for rem list, deep+1
  35.        )
  36.        )
  37.    )
  38. )
  39.  
  40. (defun max_deepest(lst)
  41.     (cdr (max_deepest_helper lst 0)))
  42.  
  43. ;(print (max_deepest '(1 2 ( 3 (42 5) 8) (1 2 (4)))))
  44.  
  45. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  46.  
  47. ;program to remove all prime elements of the list and print the result
  48. (defun primep (n d)
  49.   (if (= n 1); if n == 1
  50.       t      ; return true
  51.   (if (/= n (isqrt n)); else if (n != sqrt(n))
  52.       (or (= d 1)  (and (/= (rem n d) 0) (primep  n (- d 1)))); returns true if(d == 1 || (n % d != 0 && isPrime(n, d-1)))
  53.   )
  54.   )
  55. )
  56.  
  57.  
  58. (defun remove-primes (lst)
  59.   (if (null lst); if list is null
  60.        nil ; retrun nil
  61.   (if (atom (car lst));else if first elem of list is atom (1)
  62.       (if (primep (car lst) (- (car lst) 1)); if that elem is prime
  63.           (remove-primes (cdr lst)); call this function without this elem
  64.       (cons (car lst)(remove-primes (cdr lst)))); else create list for this elem + call function without this part
  65.   (cons (remove-primes (car lst)) (remove-primes(cdr lst)))))); else if that elem is not an atom, make new list from calling this function for first elem and calling this function whithout this elem  
  66.  
  67. ;(print (remove-primes '(1 2 ( 3 (42 5) 8) (1 2 (4)))))
  68.  
  69. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  70.  
  71. ;problem4 from bilet5 and bilet11
  72.  
  73. (defun nod(a b)
  74.    (and (null a) (null b) (numberp a) (numberp b))
  75.    (if (= a b); if a == b
  76.        a      ; return a
  77.        (if (> a b); else if a > b
  78.            (nod (- a b) b); return gcd(a-b,b)
  79.        (nod a (- b a)); else return gcd(a,b-a)
  80.        )
  81.    )
  82. )
  83. ;(print (gcd 36 60))
  84.  
  85. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  86.  
  87. ;problem 4 from bilet4
  88.  
  89. (defun factorial (n)
  90.   (if (<= n 1)
  91.       1
  92.       (* n (factorial (- n 1)))))
  93.  
  94. (defun Func (x y)
  95.   (if (or (< x 0) (< y 0))
  96.       0
  97.       (f x y 0)))
  98.  
  99. (defun f (x y sum)
  100.   (if (> y -1)
  101.       (f x (- y 1) (+ sum (factorial (* x y))))
  102.       sum))
  103.  
  104. ;(print (Func 2 2))
  105.  
  106. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  107.  
  108. ;problem 5 from bilet4
  109.  
  110. (defun isUnique(x lst)
  111.     (if (null lst)
  112.         t
  113.         (if (= x (car lst))
  114.             nil
  115.             (isUnique x (cdr lst))))
  116. )
  117.  
  118. (defun remove-non-unique-elements (lst)
  119.   (if (null lst)
  120.       nil
  121.       (if (isUnique (car lst) (cdr lst))
  122.           (cons (car lst) (remove-non-unique-elements (cdr lst)))
  123.           (remove-non-unique-elements (remove (car lst) lst))
  124.       )
  125.   )
  126. )
  127.  
  128. (defun remove-even(lst)
  129.    (if (null lst)
  130.        nil
  131.        (if (evenp (car lst))
  132.            (remove-even (cdr lst))
  133.            (cons (car lst) (remove-even (cdr lst)))
  134.        )
  135.    )
  136. )
  137.  
  138. (defun Func(L1 L2 L3)
  139.     (if (or (null L1) (null L2) (null L3))
  140.         nil
  141.         (cons (cons (remove-even L1)  L2)  (remove-non-unique-elements L3))
  142.         ;(append (remove-even L1)  L2  (remove-non-unique-elements L3))
  143.     )
  144. )
  145. (print (Func '(1 2 3 4 2 5 6 5) '(1 2 3 4 2 5 6 5) '(1 2 3 4 2 5 6 5)))
  146.  
  147. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  148.  
  149.  
  150.  
  151.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement