do 2017 day 6
This commit is contained in:
@@ -0,0 +1,26 @@
|
|||||||
|
(ns day06
|
||||||
|
(:require [input-manager]
|
||||||
|
[core :refer [split-whitespace]]))
|
||||||
|
|
||||||
|
(def input
|
||||||
|
(->> (input-manager/get-input-raw 2017 6)
|
||||||
|
split-whitespace
|
||||||
|
(mapv parse-long)))
|
||||||
|
|
||||||
|
(loop [state input
|
||||||
|
i 0
|
||||||
|
seen {}]
|
||||||
|
(if (contains? seen state)
|
||||||
|
{:part-one i
|
||||||
|
:part-two (- i (seen state))}
|
||||||
|
(let [cnt (apply max state)
|
||||||
|
idx (->> state
|
||||||
|
(map-indexed vector)
|
||||||
|
(filter #(= (second %) cnt))
|
||||||
|
ffirst)]
|
||||||
|
(recur (->> (range cnt)
|
||||||
|
(map #(mod (+ idx 1 %) (count state)))
|
||||||
|
(reduce #(update %1 %2 inc) (assoc state idx 0)))
|
||||||
|
(inc i)
|
||||||
|
(assoc seen state i)))))
|
||||||
|
|
||||||
Reference in New Issue
Block a user