Latkoski

Пресметај

May 6th, 2016
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 1.53 KB | None | 0 0
  1.  
  2. ;Дефинирај функција presmetaj која прима три аргументи: листа L и елементи Elem1 и Elem2. Ако елементот Elem1 е поголем од Elem2, тогаш ;функцијата враќа листа од сите редни позиции на кои се појавуваат Elem1 и Elem2 (при што првиот елемент е на позиција 1), а во ;спротивно враќа листа чии елементи се добиваат така што елементот од листата L кој е на соодветната позиција ќе се земе на степен ;Elem1.
  3. (defun funkcija1 (lista elem1 elem2 brojac)
  4.     (cond
  5.         ((null lista) nil)
  6.         ((or (eq (car lista) elem1)(eq (car lista)elem2))(cons brojac (funkcija1 (cdr lista) elem1 elem2 (+ 1 brojac))))
  7.         (t (funkcija1 (cdr lista) elem1 elem2 (+ 1 brojac)))
  8.         )
  9. )
  10.  
  11.  
  12. (defun funkcija2 (lista elem1 elem2)
  13.     (cond
  14.         ((null lista) nil)
  15.         (t (cons (stepen (car lista) elem1)(funkcija2 (cdr lista) elem1 elem2)))        
  16.         )
  17.    
  18.     )
  19.  
  20.  
  21. (defun stepen (broj indeks)
  22. (cond    ((eq indeks 0) 1)
  23.     (t (* broj (stepen broj (- indeks 1)))  
  24.     )))
  25.  
  26. (defun presmetaj (lista elem1 elem2)
  27.     (cond
  28.         ((> elem1 elem2)(funkcija1 lista elem1 elem2 1))
  29.         ((< elem1 elem2)(funkcija2 lista elem1 elem2))
  30.         )    
  31.  
  32.     )
  33.  
  34.  
  35. ;(print(presmetaj '(1 2 1 3 6 1 4 2 9) 3 2)) ; (2 4 8)
  36. (print(presmetaj '(1 2 1 3 2 9) 2 3)) ; (1 4 1 9 4 81)
Advertisement
Add Comment
Please, Sign In to add comment