golf
This commit is contained in:
parent
e0fba7c72f
commit
da7b893c37
@ -11,17 +11,17 @@
|
|||||||
(+ (square (- ax bx))
|
(+ (square (- ax bx))
|
||||||
(square (- ay by))
|
(square (- ay by))
|
||||||
(square (- az bz))))
|
(square (- az bz))))
|
||||||
(def closest-points
|
(def closest-points (->> (for [a input
|
||||||
(->> (for [a input
|
b input
|
||||||
b input
|
:when (not= a b)]
|
||||||
:when (not= a b)]
|
#{a b})
|
||||||
#{a b})
|
distinct
|
||||||
distinct
|
(map vec)
|
||||||
(map vec)
|
(sort-by (partial apply dist-squared))))
|
||||||
(sort-by (partial apply dist-squared))))
|
|
||||||
|
|
||||||
|
;; part 1
|
||||||
(->> closest-points
|
(->> closest-points
|
||||||
(take (count input))
|
(take 1000)
|
||||||
(reduce (fn [circuits [a b]]
|
(reduce (fn [circuits [a b]]
|
||||||
(let [circuit-a (first (filter #(% a) circuits))
|
(let [circuit-a (first (filter #(% a) circuits))
|
||||||
circuit-b (first (filter #(% b) circuits))]
|
circuit-b (first (filter #(% b) circuits))]
|
||||||
@ -38,20 +38,19 @@
|
|||||||
(map count)
|
(map count)
|
||||||
(apply *))
|
(apply *))
|
||||||
|
|
||||||
(->> (loop [circuits circuits
|
;; part 2
|
||||||
[[a b] & rst] (take 10000 closest-points)]
|
(->> (take 6498 closest-points)
|
||||||
(let [circuit-a (first (filter #(% a) circuits))
|
(reduce (fn [circuits [a b]]
|
||||||
circuit-b (first (filter #(% b) circuits))]
|
(let [circuit-a (first (filter #(% a) circuits))
|
||||||
(if (= circuit-a circuit-b)
|
circuit-b (first (filter #(% b) circuits))]
|
||||||
(recur circuits rst)
|
(if (= circuit-a circuit-b)
|
||||||
(let [combined (clojure.set/union circuit-a circuit-b)
|
circuits
|
||||||
circuits' (-> circuits
|
(let [combined (clojure.set/union circuit-a circuit-b)
|
||||||
(disj circuit-a)
|
circuits' (-> circuits (disj circuit-a) (disj circuit-b) (conj combined))]
|
||||||
(disj circuit-b)
|
(if (= 1 (count circuits'))
|
||||||
(conj combined))]
|
(reduced [a b])
|
||||||
(if (= 1 (count circuits'))
|
circuits')))))
|
||||||
[a b]
|
circuits)
|
||||||
(recur circuits' rst))))))
|
|
||||||
(map first)
|
(map first)
|
||||||
(apply *))
|
(apply *))
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user