; Lisp lab
; Michal Schorm - xschor02
; absolutni hodnota rozdilu dvou cisel
(defun abs_rozdil (a b) (if (> 0 (- a b)) (* -1 (- a b)) (- a b)))
(write (abs_rozdil 100 20))
; nejmensi prvek v seznamu
(defun min_seznam (seznam) ( if (= 2 (length seznam))
(if (> car(seznam) cdr(seznam)) (car(seznam)) (cdr(seznam)))
(if (> car(seznam) (min_seznam cdr(seznam))) (car(seznam)) (min_seznam cdr(seznam)))
)
)
; fibonnaciho posloupnost
(defun fib (a)
(cond ((= a 0) 0)
((= a 1) 1)
(t (+ (fib (- a 1) ) (fib (- a 2) ) ) )
)
)
(write-line "Fibonnacci: ")
(write (fib 0 ))
(write (fib 1 ))
(write (fib 2 ))
(write (fib 3 ))
(write (fib 4 ))
(write (fib 5 ))
(write (fib 6 ))
(write-line " ")
(write-line " ")
; ackermann function
(defun ack (a b)
(cond ((= a 0) (+ 1 b))
((= b 0) (ack (- a 1) 1))
(t (ack (- a 1) (ack a (- b 1))) )
)
)
(write-line "Ack 0,0 - 0,1 - 0,2")
(write (ack 0 0 ))
(write (ack 0 1 ))
(write (ack 0 2 ))
(write-line " ")
(write-line "Ack 1,0 - 2,0 - 1,1")
(write (ack 1 0 ))
(write (ack 2 0 ))
(write (ack 1 1 ))
(write-line " ")
(write-line "Ack 4,0")
(write (ack 4 0 ))
(write-line " ")
(write-line "Ack 3,2")
(write (ack 3 2 ))