day21: add part 1
parent
15ab28b9ac
commit
384079cb4d
@ -0,0 +1,22 @@
|
|||||||
|
(require 'clojure.string)
|
||||||
|
|
||||||
|
(loop [player-positions (->> (slurp "./in")
|
||||||
|
clojure.string/split-lines
|
||||||
|
(map (comp read-string second #(clojure.string/split % #": ")))
|
||||||
|
(mapv #(drop (dec %) (cycle (range 1 11)))))
|
||||||
|
player-scores (into [] (repeat (count player-positions) 0))
|
||||||
|
player-turn (cycle (range 0 (count player-scores)))
|
||||||
|
deterministic-dice (cycle (range 1 101))
|
||||||
|
dice-roll-count 0]
|
||||||
|
(if-not (every? #(< % 1000) player-scores)
|
||||||
|
(println (* dice-roll-count (apply min player-scores)))
|
||||||
|
(let [roll (reduce + (take 3 deterministic-dice))
|
||||||
|
turn (first player-turn)
|
||||||
|
new-position (drop roll (get player-positions turn))]
|
||||||
|
(recur
|
||||||
|
(assoc player-positions turn new-position)
|
||||||
|
(update player-scores turn + (first new-position))
|
||||||
|
(next player-turn)
|
||||||
|
(drop 3 deterministic-dice)
|
||||||
|
(+ dice-roll-count 3)))))
|
||||||
|
|
Loading…
Reference in New Issue