mirror of
https://github.com/Ajetski/advent-of-code.git
synced 2025-09-30 09:23:17 -09:00
quick golf round 1
This commit is contained in:
parent
025e25f11f
commit
fabea05fdf
@ -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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user