rendered paste body(defvar *fibonacci-list*)
(defvar *solution*)
(defun next-fibonacci-number ()
(let ((next-fibonacci (+ (elt *fibonacci-list* 0) (elt *fibonacci-list* 1))))
(setf *fibonacci-list* (list (elt *fibonacci-list* 1) next-fibonacci))
next-fibonacci))
(defun problem-2 (max-number)
(setf *fibonacci-list* (list 0 1))
(setf *solution* 0)
(loop
(let ((next-fibonacci (next-fibonacci-number)))
(format t "Fibonacci: ~a~%" next-fibonacci)
(when (= (mod next-fibonacci 2) 0)
(if (> next-fibonacci max-number)
(return)
(setf *solution* (+ *solution* next-fibonacci))))))
(format t "Solution: ~a~%" *solution*))