Учитывая следующий список в Clojure:
(def pairs '[(2,1),(3,2),(2,4)])
Я хочу объединить эти основанные на перекрытии первый элемент в паре и выбрать один с большим вторым значением.
т.е. хотите, чтобы они слились в:
[(3,2),(2,4)]
, потому что (2,1)
и (2,4)
имеют совпадающие первые значения, а (2,4)
имеет большее второе значение, поэтому он отбрасывает (2,1)
.
Мой вопрос: Как объединить пары на основе вложенного значения?
Это то, что я пытался:
(reduce
(fn [first-pair second-pair]
(if (not (= (first first-pair) (first second-pair)))
(conj first-pair second-pair)
(if (> (second first-pair) (second second-pair))
first-pair
second-pair)))
pairs
)