From 3c65d19b8d6ce00e300034a8ef054317d392fd70 Mon Sep 17 00:00:00 2001 From: Adam Jeniski Date: Wed, 4 Dec 2024 23:13:30 -0500 Subject: [PATCH] golf --- 2024/src/core.clj | 3 ++- 2024/src/day04.clj | 56 ++++++++++++++++++++++------------------------ 2 files changed, 29 insertions(+), 30 deletions(-) diff --git a/2024/src/core.clj b/2024/src/core.clj index 98b1182..905fb2c 100644 --- a/2024/src/core.clj +++ b/2024/src/core.clj @@ -28,7 +28,8 @@ (->> list-of-lists count range (map #(->> % (get list-of-lists) count range)) (map-indexed (fn [row cols] - (map #(list row %) cols))))) + (map #(list row %) cols))) + (mapcat identity))) (defn bool->binary [condition] (if condition 1 0)) diff --git a/2024/src/day04.clj b/2024/src/day04.clj index 4590f48..884f5de 100644 --- a/2024/src/day04.clj +++ b/2024/src/day04.clj @@ -11,37 +11,35 @@ ;; part 1 (->> input c/get-coords - (map (partial reduce (fn [acc [row col]] - (+ acc - (->> (for [offset (range 4)] - (map #(apply get-char %) - [[row (+ col offset)] - [row (- col offset)] - [(+ row offset) col] - [(- row offset) col] - [(- row offset) (- col offset)] - [(- row offset) (+ col offset)] - [(+ row offset) (- col offset)] - [(+ row offset) (+ col offset)]])) - (apply map vector) - (filter #(= % (seq "XMAS"))) - count))) - 0)) - (reduce +)) + (reduce (fn [acc [row col]] + (+ acc + (->> (for [offset (range 4)] + (map #(apply get-char %) + [[row (+ col offset)] + [row (- col offset)] + [(+ row offset) col] + [(- row offset) col] + [(- row offset) (- col offset)] + [(- row offset) (+ col offset)] + [(+ row offset) (- col offset)] + [(+ row offset) (+ col offset)]])) + (apply map vector) + (filter #(= % (seq "XMAS"))) + count))) + 0)) ;; part 2 (->> input c/get-coords - (map (partial reduce (fn [acc [row col]] - (+ acc - (if (= (get-char row col) \A) - (->> [[[(dec row) (dec col)] [(inc row) (inc col)]] - [[(inc row) (dec col)] [(dec row) (inc col)]]] - (map (partial map #(apply get-char %))) - (map set) - (apply = #{\M \S}) - c/bool->binary) - 0))) - 0)) - (reduce +)) + (reduce (fn [acc [row col]] + (+ acc + (if (= (get-char row col) \A) + (->> [[[(dec row) (dec col)] [(inc row) (inc col)]] + [[(inc row) (dec col)] [(dec row) (inc col)]]] + (map (partial map #(apply get-char %))) + (map set) + (apply = #{\M \S}) + c/bool->binary) + 0))) + 0))