Tema 3
Definir la funció rdc que torna tots els elements d’una llista menys el darrer
(defun rdc (l) (cond ((null (cdr l)) nil) (t (cons (car l) (rdc (cdr l))))))> rdc
(rdc '(a b c d))> (a b c)
Definir la funció snoc que afegeix un element al final d’una llista
(defun snoc (l x) (cond ((null l) (list x)) (t (cons (car l) (snoc (cdr l) x)))))> snoc
(snoc '(a b c) 'd)> (a b c d)
Definir la funció escala per multiplicar tots els elements d’una llista per un número
(defun escala (x l) (cond ((null l) nil) (t (cons (* x (car l)) (escala x (cdr l))))))> escala
(escala 2 '(1 2 3 4))> (2 4 6 8)
Definir les funcions màxim i mínim d’una llista de números
(defun max (l) (cond ((null (cdr l)) (car l)) (t (max (list (max (car l) (cadr l)) (cddr l))))))> max
(defun min (l) (cond ((null (cdr l)) (car l)) (t (min (list (min (car l) (cadr l)) (cddr l))))))> min
(max '(1 2 3 4 5))> 5
(min '(1 2 3 4 5))> 1
Escriure una funció per ordenar una llista de números amb el mètode de selecció directa (trobar el mínim a cada passa i posar-ho al principi)
(defun ordena (l) (cond ((null l) nil) (t (cons (min l) (ordena (remove (min l) l))))))> ordena
(ordena '(5 4 3 2 1))> (1 2 3 4 5)
Escriure la funció invertir que donada una llista la gira al revés (sense utilitzar reverse)
(defun invertir (l) (cond ((null l) nil) (t (snoc (car l) (invertir (rdc l))))))> invertir
(invertir '(a b c d))> (d c b a)