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