mirror of
https://github.com/Ajetski/advent-of-code.git
synced 2025-09-30 07:03:19 -09:00
quick golf round 1
This commit is contained in:
parent
025e25f11f
commit
fabea05fdf
@ -1,64 +1,42 @@
|
||||
(ns day04
|
||||
(:require [core :as c]
|
||||
[input-manager :refer [get-input]]
|
||||
[clojure.string :as str]))
|
||||
(:require [input-manager :refer [get-input]]))
|
||||
|
||||
(do
|
||||
(def input
|
||||
(->>
|
||||
(get-input 4)
|
||||
; "MMMSXXMASM
|
||||
; MSAMXMSMSA
|
||||
; AMXSXMAAMM
|
||||
; MSAMASMSMX
|
||||
; XMASAMXAMM
|
||||
; XXAMMXXAMA
|
||||
; SMSMSASXSS
|
||||
; SAXAMASAAA
|
||||
; MAMMMXMMMM
|
||||
; MXMXAXMASX"
|
||||
; (str/split-lines)
|
||||
))
|
||||
input)
|
||||
(def input (get-input 4))
|
||||
|
||||
(defn get-char [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
|
||||
(->> input
|
||||
(map (partial map-indexed vector))
|
||||
(map-indexed vector)
|
||||
(reduce (fn [acc [row s]]
|
||||
(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
|
||||
s))
|
||||
0)
|
||||
;
|
||||
)
|
||||
0))
|
||||
|
||||
(defn get-count-2 [row col]
|
||||
(if (= (get-char row col) \A)
|
||||
;; part 2
|
||||
(->> 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)]
|
||||
[(inc row) (dec col)]
|
||||
[(dec row) (inc col)]
|
||||
@ -71,16 +49,7 @@
|
||||
(get chars 3)))
|
||||
1
|
||||
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)))
|
||||
0)))
|
||||
acc
|
||||
s))
|
||||
0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user