RosettaCodeData/Task/Averages-Mean-angle/Common-Lisp/averages-mean-angle.lisp
Ingy döt Net 764da6cbbb CDE
2013-04-10 16:57:12 -07:00

17 lines
502 B
Common Lisp

(defun average (list)
(/ (reduce #'+ list) (length list)))
(defun radians (angle)
(* pi 1/180 angle))
(defun degrees (angle)
(* 180 (/ 1 pi) angle))
(defun mean-angle (angles)
(let* ((angles (map 'list #'radians angles))
(cosines (map 'list #'cos angles))
(sines (map 'list #'sin angles)))
(degrees (atan (average sines) (average cosines)))))
(loop for angles in '((350 10) (90 180 270 360) (10 20 30))
do (format t "~&The mean angle of ~a is ~$°." angles (mean-angle angles)))