Получить 3 ближайших значения некоторого заданного числа в списке? - PullRequest
0 голосов
/ 13 февраля 2019

Учитывая список целых чисел, найдите 3 ближайших значения к данному числу.

=> (def mylist '(3 6 7 8 9 12 14))
=> (get_closest mylist 10)
(8 9 12)

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

После ответа @ akond, но в качестве общей функции:

(defn closest [x n coll]
  "Return a list of the n items of coll that are closest to x"
  (take n (sort-by #(Math/abs (- x %)) coll)))

(closest 4 3 (range 10))
; => (4 3 5)

Обратите внимание, что если coll является массивом Java, sort-by может изменить его.

0 голосов
/ 13 февраля 2019
(letfn [(closest [a b]
            (take 3 (sort-by #(Math/abs (- % b)) a)))]
    (let [a '(3 6 7 8 9 12 14)]
        (closest a 10)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...