From 140fc0f3615003510fb8b9b99fdd4dda1270f041 Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Tue, 14 Dec 2021 20:57:50 -0500 Subject: [PATCH 1/2] day14: part2 final form --- day14/part2.clj | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/day14/part2.clj b/day14/part2.clj index ede1b32..f5de5fe 100644 --- a/day14/part2.clj +++ b/day14/part2.clj @@ -10,8 +10,8 @@ (->> lines (drop 2) (map #(str/split % #" -> ")) - (map (fn [[pair ltr]] - {pair (map str/join [[(first pair) ltr] [ltr (second pair)]])})) + (map (fn [[[a b] c]] + {(str/join [a b]) (map str/join [[a c] [c b]])})) (reduce into) )))))) @@ -28,13 +28,11 @@ (iterate #(grow-polymer % (second input)) (reduce #(update %1 %2 inc) blank-map (first input)))) -(let [polymer (nth growth-seq 40) - results (filter pos? - (map #(Math/ceil (/ % 2)) - (vals - (reduce - #(let [k (key %2) v (val %2)] (-> %1 (update (first k) + v) (update (second k) + v))) - (zipmap (flatten (map (partial split-at 1) (keys polymer))) (repeat 0)) - polymer))))] - (println (- (apply max results) (apply min results)))) +(let [final-polymer (nth growth-seq 40) + letter-counts (reduce + (fn [r [k v]] (-> r (update (first k) + v) (update (second k) + v))) + (zipmap (str/join (keys final-polymer)) (repeat 0)) + final-polymer) + unique-counts (filter pos? (map #(Math/ceil (/ (val %) 2)) letter-counts))] + (println (- (apply max unique-counts) (apply min unique-counts)))) From d1bb4af495094eec997cbe7e99a382877c7c7b5a Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Tue, 14 Dec 2021 22:04:10 -0500 Subject: [PATCH 2/2] checking out 2020 --- year2020/day1/part1.clj | 9 +++++++++ year2020/day1/part2.clj | 20 ++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 year2020/day1/part1.clj create mode 100644 year2020/day1/part2.clj diff --git a/year2020/day1/part1.clj b/year2020/day1/part1.clj new file mode 100644 index 0000000..100c6d3 --- /dev/null +++ b/year2020/day1/part1.clj @@ -0,0 +1,9 @@ +(require 'clojure.set) + +(->> (slurp "./in") + clojure.string/split-lines + (map read-string) + ((juxt set (comp set #(map (partial - 2020) %)))) + (apply clojure.set/intersection) + (apply *) + (println)) diff --git a/year2020/day1/part2.clj b/year2020/day1/part2.clj new file mode 100644 index 0000000..0b6ef9d --- /dev/null +++ b/year2020/day1/part2.clj @@ -0,0 +1,20 @@ +(require 'clojure.set) + +(defn find-sum [sum lst] + (->> lst + ((juxt set (comp set #(map (partial - sum) %)))) + (apply clojure.set/intersection) + (vec))) + +(->> (slurp "./in") + clojure.string/split-lines + ((comp set (partial map read-string))) + ((fn [lst] + (reduce + #(let [fnd (find-sum (- 2020 %2) (clojure.set/difference lst #{%2}))] + (if (empty? fnd) %1 [%2 fnd])) + [] + lst))) + flatten + (apply *) + (println))