...
This commit is contained in:
parent
051504d65b
commit
0457928c3e
295 changed files with 3588 additions and 3 deletions
6
Task/Averages-Mode/Clojure/averages-mode-1.clj
Normal file
6
Task/Averages-Mode/Clojure/averages-mode-1.clj
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
(defn modes [coll]
|
||||
(let [distrib (frequencies coll)
|
||||
[value freq] [first second] ; name the key/value pairs in the distrib (map) entries
|
||||
sorted (sort-by (comp - freq) distrib)
|
||||
maxfq (freq (first sorted))]
|
||||
(map value (take-while #(= maxfq (freq %)) sorted))))
|
||||
13
Task/Averages-Mode/Clojure/averages-mode-2.clj
Normal file
13
Task/Averages-Mode/Clojure/averages-mode-2.clj
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
mode = (arr) ->
|
||||
# returns an array with the modes of arr, i.e. the
|
||||
# elements that appear most often in arr
|
||||
counts = {}
|
||||
for elem in arr
|
||||
counts[elem] ||= 0
|
||||
counts[elem] += 1
|
||||
max = 0
|
||||
for key, cnt of counts
|
||||
max = cnt if cnt > max
|
||||
(key for key, cnt of counts when cnt == max)
|
||||
|
||||
console.log mode [1, 2, 2, 2, 3, 3, 3, 4, 4]
|
||||
15
Task/Averages-Mode/Clojure/averages-mode-3.clj
Normal file
15
Task/Averages-Mode/Clojure/averages-mode-3.clj
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
(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))))
|
||||
Loading…
Add table
Add a link
Reference in a new issue