16 lines
607 B
Clojure
16 lines
607 B
Clojure
(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))))
|