RosettaCodeData/Task/Averages-Mode/Common-Lisp/averages-mode.lisp

16 lines
607 B
Common Lisp
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
(defun mode (sequence &rest hash-table-options)
(let ((frequencies (apply #'make-hash-table hash-table-options)))
(map nil (lambda (element)
(incf (gethash element frequencies 0)))
sequence)
(let ((modes '())
(hifreq 0 ))
(maphash (lambda (element frequency)
(cond ((> frequency hifreq)
(setf hifreq frequency
modes (list element)))
((= frequency hifreq)
(push element modes))))
frequencies)
(values modes hifreq))))