mirror of
https://github.com/Ajetski/advent-of-code.git
synced 2025-09-30 07:23:18 -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