aboutsummaryrefslogtreecommitdiffstats
path: root/day21/part2.clj
diff options
context:
space:
mode:
authorClyne Sullivan <clyne@bitgloo.com>2022-11-30 19:55:31 -0500
committerClyne Sullivan <clyne@bitgloo.com>2022-11-30 19:55:31 -0500
commit8d43e37df99f280377bed90284d6ac2428334804 (patch)
tree3a5042c9af29da52b4bac38fd78b3ccde77a1dbc /day21/part2.clj
parent66ed0b9d27850dc653abc8baa75884f3de311bfa (diff)
move 2021 days to folder; update README
Diffstat (limited to 'day21/part2.clj')
-rw-r--r--day21/part2.clj37
1 files changed, 0 insertions, 37 deletions
diff --git a/day21/part2.clj b/day21/part2.clj
deleted file mode 100644
index 0042aaa..0000000
--- a/day21/part2.clj
+++ /dev/null
@@ -1,37 +0,0 @@
-(defn dice-probability-spread [sides rolls]
- (let [sr (range 1 (inc sides))]
- (->> sr
- (iterate #(flatten (for [i sr] (map (partial + i) %))))
- (drop (dec rolls))
- ((comp frequencies first)))))
-
-(def rolls (dice-probability-spread 3 3))
-
-(defn advance-pos [pos roll] (let [n (+ pos roll)] (if (> n 10) (- n 10) n)))
-
-(defn add-roll [state roll p1-turn]
- (let [pos (if p1-turn :pos1 :pos2)
- score (if p1-turn :score1 :score2)
- new-pos (advance-pos (state pos) roll)]
- (-> state
- (assoc pos new-pos)
- (update score + new-pos))))
-
-(defonce wins (atom [0 0]))
-
-(loop [turn 0 states {{:pos1 4 :score1 0 :pos2 8 :score2 0} 1}]
- (if (empty? states)
- (println (apply max @wins))
- (recur
- (if (= 0 turn) 1 0)
- (reduce
- #(let [kvp (first %2)]
- (if (< ((key kvp) (if (= 0 turn) :score1 :score2)) 21)
- (if (contains? %1 (key kvp))
- (update %1 (key kvp) +' (val kvp))
- (conj %1 kvp))
- (do (swap! wins update turn +' (val kvp)) %1)))
- {}
- (for [s states r rolls]
- {(add-roll (first s) (key r) (= 0 turn)) (*' (second s) (val r))})))))
-