quick golf round 1

This commit is contained in:
Adam Jeniski 2024-12-04 00:56:06 -05:00
parent 025e25f11f
commit fabea05fdf

View File

@ -1,64 +1,42 @@
(ns day04 (ns day04
(:require [core :as c] (:require [input-manager :refer [get-input]]))
[input-manager :refer [get-input]]
[clojure.string :as str]))
(do (def input (get-input 4))
(def input
(->>
(get-input 4)
; "MMMSXXMASM
; MSAMXMSMSA
; AMXSXMAAMM
; MSAMASMSMX
; XMASAMXAMM
; XXAMMXXAMA
; SMSMSASXSS
; SAXAMASAAA
; MAMMMXMMMM
; MXMXAXMASX"
; (str/split-lines)
))
input)
(defn get-char [row col] (defn get-char [row col]
(get (get input row) col)) (get (get input row) col))
(defn get-count [row col]
(->> [(for [offset (range 4)]
(get-char row (+ col offset))) ;right
(for [offset (range 4)]
(get-char row (- col offset))) ;left
(for [offset (range 4)]
(get-char (+ row offset) col)) ;down
(for [offset (range 4)]
(get-char (- row offset) col)) ;up
(for [offset (range 4)]
(get-char (- row offset) (- col offset)))
(for [offset (range 4)]
(get-char (- row offset) (+ col offset)))
(for [offset (range 4)]
(get-char (+ row offset) (- col offset)))
(for [offset (range 4)]
(get-char (+ row offset) (+ col offset)))]
(filter #(= % (seq "XMAS")))
count))
;; part 1 ;; part 1
(->> input (->> input
(map (partial map-indexed vector)) (map (partial map-indexed vector))
(map-indexed vector) (map-indexed vector)
(reduce (fn [acc [row s]] (reduce (fn [acc [row s]]
(reduce (fn [acc2 [col _c]] (reduce (fn [acc2 [col _c]]
(+ acc2 (get-count row col))) (+ acc2 (->> (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)))
acc acc
s)) s))
0) 0))
;
)
(defn get-count-2 [row col] ;; part 2
(if (= (get-char row col) \A) (->> input
(map reverse)
(map (partial map-indexed vector))
(map-indexed vector)
(reduce (fn [acc [row s]]
(reduce (fn [acc2 [col _c]]
(+ acc2 (if (= (get-char row col) \A)
(let [corners [[(dec row) (dec col)] (let [corners [[(dec row) (dec col)]
[(inc row) (dec col)] [(inc row) (dec col)]
[(dec row) (inc col)] [(dec row) (inc col)]
@ -71,16 +49,7 @@
(get chars 3))) (get chars 3)))
1 1
0)) 0))
0)) 0)))
;; part 2
(->> input
(map reverse)
(map (partial map-indexed vector))
(map-indexed vector)
(reduce (fn [acc [row s]]
(reduce (fn [acc2 [col _c]]
(+ acc2 (get-count-2 row col)))
acc acc
s)) s))
0) 0)