summaryrefslogtreecommitdiff
path: root/aoc_2022/day-02
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth.hunt@simponic.xyz>2023-11-30 22:46:45 -0700
committerElizabeth Hunt <elizabeth.hunt@simponic.xyz>2023-11-30 22:46:45 -0700
commit3d57434c04a669610d5f15bd2a7713e6928cdef7 (patch)
treea0f1f04a335bbc808369d6492f4fee2ff06a0bdb /aoc_2022/day-02
parent59966ade163a39fc03f07a9d905e0bd87a98d60c (diff)
downloadaoc-3d57434c04a669610d5f15bd2a7713e6928cdef7.tar.gz
aoc-3d57434c04a669610d5f15bd2a7713e6928cdef7.zip
add aoc2023
Diffstat (limited to 'aoc_2022/day-02')
-rw-r--r--aoc_2022/day-02/.gitkeep0
-rw-r--r--aoc_2022/day-02/sol.clj34
2 files changed, 34 insertions, 0 deletions
diff --git a/aoc_2022/day-02/.gitkeep b/aoc_2022/day-02/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/aoc_2022/day-02/.gitkeep
diff --git a/aoc_2022/day-02/sol.clj b/aoc_2022/day-02/sol.clj
new file mode 100644
index 0000000..99783cc
--- /dev/null
+++ b/aoc_2022/day-02/sol.clj
@@ -0,0 +1,34 @@
+(require '[clojure.java.io])
+
+(defn find-recurring-characters [strs]
+ (reduce (fn [a x]
+ (into #{} (filter #(contains? a %) x)))
+ (into #{} (first strs))
+ strs))
+
+(defn get-priority [c]
+ (if (>= c 97)
+ (- c 96)
+ (- c 38)))
+
+(defn obtain-total-priorities [rucksacks]
+ (reduce + (map (fn [line]
+ (let [half (/ (count line) 2)]
+ (get-priority (int
+ (first (find-recurring-characters
+ (list (subs line 0 half)
+ (subs line half))))))))
+ rucksacks)))
+
+(defn obtain-total-priorities-2 [rucksacks]
+ (reduce + (map (fn [lines]
+ (get-priority (int (first (find-recurring-characters lines)))))
+ (partition 3 rucksacks))))
+
+(defn main []
+ (with-open [rdr (clojure.java.io/reader "input")]
+ (println (obtain-total-priorities (line-seq rdr))))
+ (with-open [rdr (clojure.java.io/reader "input")]
+ (println (obtain-total-priorities-2 (line-seq rdr))))
+ (System/exit 0))
+(main) \ No newline at end of file