feat: day 2 part 1

This commit is contained in:
Fernando Araoz 2024-11-11 13:13:26 -05:00
parent 9280405f8f
commit 90fe696ca4

View File

@ -4,7 +4,7 @@
[utils]
[clojure.string :as str]))
(def contents ":: String" (utils/read-file "02" true))
(def contents ":: String" (utils/read-file "02" false))
(def lines ":: Vector of String" (str/split-lines contents))
; cubes: red, green, blue
@ -55,11 +55,27 @@
game-sections-vec (map parse-single-game game-sections)]
{:id game-id :games game-sections-vec}))
(defn game-possible?
":: Game -> Boolean
Checks if `game` is possible with the given color counts."
[game red-count green-count blue-count]
; next-game :: {:red Int :green Int :blue Int}
(nil? (utils/find-first (fn [next-game]
; find the first game that couldnt be possible
(or
(< red-count (next-game :red 0))
(< green-count (next-game :green 0))
(< blue-count (next-game :blue 0))))
(game :games))))
(defn part1
":: () -> String"
[]
(let [count (map parse-game lines)]
(str "count: " count)))
(let [games (map parse-game lines)
possible-games (filter (fn [game] (game-possible? game 12 13 14)) games)
possible-games-sum (reduce #(+ %1 (%2 :id)) 0 possible-games)]
(str possible-games-sum)))
(defn part2
":: () -> String"