mirror of
https://github.com/Ajetski/advent-of-code.git
synced 2025-09-30 13:03:19 -09:00
do day 8
This commit is contained in:
parent
a29e47b30f
commit
66478a04c0
51
2023/src/day08.clj
Normal file
51
2023/src/day08.clj
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
(ns day08
|
||||||
|
(:require [core :refer [get-puzzle-input]]))
|
||||||
|
|
||||||
|
(defn parse-map [lines]
|
||||||
|
(->> lines
|
||||||
|
(map #(re-find #"(.*) = \((.*), (.*)\)" %))
|
||||||
|
(map rest)
|
||||||
|
(map (fn [[a b c]] [a [b c]]))
|
||||||
|
(into {})))
|
||||||
|
|
||||||
|
(defn get-lcm [x]
|
||||||
|
(let
|
||||||
|
[gcd (fn gcd [a b] (if (= 0 b) a (gcd b (mod a b))))
|
||||||
|
lcm (fn lcm [a b] (/ (* a b) (gcd a b)))]
|
||||||
|
(reduce lcm x)))
|
||||||
|
|
||||||
|
(let [[dir _ & lines] (get-puzzle-input 8)
|
||||||
|
dir-idx (map #(condp = %
|
||||||
|
\L 0
|
||||||
|
\R 1)
|
||||||
|
dir)
|
||||||
|
data (parse-map lines)]
|
||||||
|
(loop [node "AAA"
|
||||||
|
[dir-idx & drest] (cycle dir-idx)
|
||||||
|
n 0]
|
||||||
|
(if (= node "ZZZ")
|
||||||
|
n
|
||||||
|
(recur (get (data node) dir-idx)
|
||||||
|
drest
|
||||||
|
(inc n)))))
|
||||||
|
|
||||||
|
(let [[dir _ & lines] (get-puzzle-input 8)
|
||||||
|
dir-idx (map #(condp = %
|
||||||
|
\L 0
|
||||||
|
\R 1)
|
||||||
|
dir)
|
||||||
|
data (parse-map lines)
|
||||||
|
starts (->> data
|
||||||
|
keys
|
||||||
|
(filter #(= (last %) \A)))]
|
||||||
|
(->> starts
|
||||||
|
(map #(loop [node %
|
||||||
|
[dir-idx & drest] (cycle dir-idx)
|
||||||
|
n 0]
|
||||||
|
(if (= (last node) \Z)
|
||||||
|
n
|
||||||
|
(recur (get (data node) dir-idx)
|
||||||
|
drest
|
||||||
|
(inc n)))))
|
||||||
|
(get-lcm)))
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user