Napisz program który łączy dwie listy: (1 2 3 4) i (a b c d),
CL-USER> (setq x '(1 2 3 4))
(1 2 3 4)
CL-USER> (setq y '(a b c d))
(A B C D)
CL-USER> (concatenate 'list x y)
(1 2 3 4 A B C D)
Napisz funkcję która odwraca listę,
(defun odwroc(x)
(reverse x
))
Napisz funkcję, która sprawdza, czy podana lista jest palindromem,
(defun palindrom (x)
(setq x2 (reverse x))(equal x x2))
Napisz funkcję, która sortuje rosnąco listę liczb całkowitych,
(defun sortowanier(x)
(sort x #'<))
Napisz funkcję, która sortuje malejąco listę liczb całkowitych,
(defun sortowanie(x)
(sort x #'>))
Napisz funkcję, która oblicz iloczyn dwóch list liczbowych parami różnych, w wyniku otrzymujemy listę iloczynów,
(defun iloczyny(x)
(loop for x in '(6 7 8 9 10)
for y in '(1 2 3 4 5)
collect (* x y)) )
Napisz funkcję, która zlicza ilość wystąpień liczb podzielnych przez trzy na podanej liście.
(defun sprawdz (x)
(setq a 0)
(dolist (el x)
(if (= (rem el 3) 0) (setq a (+ a 1)) (format t " "))
)
a)
1. Oblicz wartość wyrażenia: (2 + 3*4 / 8 )
(/ ( + 2 ( * 3 4 ) ) 8) =7/4
(+ ( / (* 3 4 ) 8) 2) = 7/2
2. Oblicz wartość wyrażenia: sin(12) + cos(256%32)
(+ (sin 12) (cos ( mod 256 32 )))
3. Napisz funkcje suma, obliczajaca sumę dwóch liczb
(defun suma(x y)(+ x y ))
4. Napisz funkcje badajaca, czy dana liczba jest parzysta
(defun parzysta(x)
(if (oddp x) ‘false ‘true))
5. Napisz funkcje obliczającą wartość silni,
(defun silnia (x)
(if (> x 0)
(* x (silnia (- x 1)))
1))
6. Napisz funkcję zwracającą n-ty element ciągu fibonacciego
(defun fib (n)
( if (< n 2) n
(+ (fib (- n 1)) (fib (- n 2)))))
7. Napisz funkcję, która oblicza sumę liczb nieparzystych w podanym przedziale
(defun nieparzyste (a b)(setq y 0)
(loop for x from a to b
If (oddp x)
Do ( setq y (+ y x)))(print y))
Napisz funkcję, która oblicza sumę kwadratów liczb w podanym przedziale
(defun kwadrat (a b) (setq y 0)
(loop for x from a to b
Do (setq y (+ y (* x x ))))(print y))
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!KOLOKWIUM!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Napisz funkcję, która zlicza ilość wystąpień liczb podzielnych przez pięć na podanej liście.
(defun sprawdz (x)
(setq a 0)
(dolist (el x)
(if (= (rem el 5) 0) (setq a (+ a 1)) (format t " "))
)
a)
2. Napisz funkcję, która dla podanej listy liczb dziesiętnych, generuje listę zawierającą
na pozycjach będących n-krotnością ostatniej cyfry albumu studenta odpowiednią liczbę
binarną, odpowiadającą liczbie dziesiętnej na tej pozycji w liście wejściowej.
Przykład:
Lista: (1 2 3 4 5 6 7 8 9 10)
Album: 12352 -> ostatnia cyfra to 2
Wynik: (1 10 3 100 5 110 7 1000 9 1010) lub (1 (1 0) 3 (1 0 0) 5 (1 1 0) 7 (1 0 0 0) 9 (1 0 1 0) )
(setq lista '#(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15))
(defun bin1 (x y)
(if (zerop x)
y
(multiple-value-bind (a b) (floor x 2)
(bin1 a (cons b y)))))
(defun bin (x)
(if (and (numberp x) (plusp x))
(bin1 x '())
(if (eql x 0) '(0) nil)))
(defun zamiana (nazwa_listy nr)
(dotimes (i (array-total-size nazwa_listy))
(if (eql 0 (mod (+ i 1) nr ))
(setf (svref nazwa_listy i) (bin (svref nazwa_listy i)))
)))
Sposób 2
(defun bin(x)
(if(evenp x) (setq z(cons 0 z)) (setq z(cons 1 z)))
(if(= 0 (floor x 2)) z (bin(floor x 2))))
to jest zamiana podanej liczby na binarną
3. Napisz program który pobiera wartości parami z dwóch list, i zapisuje mniejszą z wartości na
trzecią listę. Należy założyć, że listy wejściowe będą równej długości.
Przykład:
Lista1: (1 10 2 8)
Lista2: (2 20 3 5)
Wynik: (1 10 2 5)
(defun mniejsza(x, y)
(loop for x in '(1 10 2 8)
for y in '(2 20 3 5)
( if( x <y collect x collect y)))) – zle
Sposob 1:
(setq i '())
(defun mniejsze(a b)
(if(< a b) a b))
(defun xxx(x y)
(setq i(cons (wieksze (car x) (car y)) i ))
(if (equal (cdr x) nil) (reverse i)
(xxx(cdr x) (cdr y))))
Sposob 2:
(setf lista1 '#(1 2 3 4))
(setf lista2 '#(2 1 4 3))
(setf wynik (make-array 4))
(dotimes (i (array-total-size wynik))
(if (> (svref lista1 i) (svref lista2 i))
(setf (svref wynik i) (svref lista1 i))
(setf (svref wynik i) (svref lista2 i))
)
)