From 576d3eae2d75a05b8191d7168e19ff71a8c3b0e0 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Sun, 4 Dec 2022 11:38:51 +0200 Subject: Solve day04 --- src/aoc_2022/day04.clj | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/aoc_2022/day04.clj (limited to 'src/aoc_2022/day04.clj') diff --git a/src/aoc_2022/day04.clj b/src/aoc_2022/day04.clj new file mode 100644 index 0000000..a6ca91b --- /dev/null +++ b/src/aoc_2022/day04.clj @@ -0,0 +1,38 @@ +(ns aoc-2022.day04) +(require '[clojure.java.io :as io]) +(require '[aoc-2022.utils :as utils]) +(require '[clojure.string :as str]) + +(defn parse-rows [rows] + (->> rows + (map #(str/split % #",")) + (map (fn [[a, b]] + [(map #(Long/valueOf %) (str/split a #"-")), + (map #(Long/valueOf %) (str/split b #"-"))])) + (map flatten))) + +(defn assignment-contains [[a1 a2 b1 b2]] + (or + (and (>= a1 b1) (<= a2 b2)) + (and (>= b1 a1) (<= b2 a2)))) + +(defn task1 [rows] + (->> rows + parse-rows + (filter assignment-contains) + count)) + +(defn assignment-overlaps [[a1 a2 b1 b2]] + (not (or (> a1 b2) (> b1 a2)))) + +(defn task2 [rows] + (->> rows + parse-rows + (filter assignment-overlaps) + count)) + +(with-open [rdr (io/reader "resources/day04_actual.txt")] + (let [rows (line-seq rdr)] + (do + (println "task1:" (task1 rows)) + (println "task2:" (task2 rows))))) -- cgit v1.3