Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;Дефинирај функција presmetaj која прима три аргументи: листа L и елементи Elem1 и Elem2. Ако елементот Elem1 е поголем од Elem2, тогаш ;функцијата враќа листа од сите редни позиции на кои се појавуваат Elem1 и Elem2 (при што првиот елемент е на позиција 1), а во ;спротивно враќа листа чии елементи се добиваат така што елементот од листата L кој е на соодветната позиција ќе се земе на степен ;Elem1.
- (defun funkcija1 (lista elem1 elem2 brojac)
- (cond
- ((null lista) nil)
- ((or (eq (car lista) elem1)(eq (car lista)elem2))(cons brojac (funkcija1 (cdr lista) elem1 elem2 (+ 1 brojac))))
- (t (funkcija1 (cdr lista) elem1 elem2 (+ 1 brojac)))
- )
- )
- (defun funkcija2 (lista elem1 elem2)
- (cond
- ((null lista) nil)
- (t (cons (stepen (car lista) elem1)(funkcija2 (cdr lista) elem1 elem2)))
- )
- )
- (defun stepen (broj indeks)
- (cond ((eq indeks 0) 1)
- (t (* broj (stepen broj (- indeks 1)))
- )))
- (defun presmetaj (lista elem1 elem2)
- (cond
- ((> elem1 elem2)(funkcija1 lista elem1 elem2 1))
- ((< elem1 elem2)(funkcija2 lista elem1 elem2))
- )
- )
- ;(print(presmetaj '(1 2 1 3 6 1 4 2 9) 3 2)) ; (2 4 8)
- (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