RosettaCodeData/Task/Hailstone-sequence/Common-Lisp/hailstone-sequence.lisp

12 lines
384 B
Common Lisp
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
(defun hailstone (n)
(cond ((= n 1) '(1))
((evenp n) (cons n (hailstone (/ n 2))))
(t (cons n (hailstone (+ (* 3 n) 1))))))
2026-04-30 12:34:36 -04:00
(defun longest-hailstone (n)
2023-07-01 11:58:00 -04:00
(let ((k 0) (l 0))
(loop for i from 1 below n do
(let ((len (length (hailstone i))))
(when (> len l) (setq l len k i)))
finally (format t "Longest hailstone sequence under ~A for ~A, having length ~A." n k l))))