From 04a861dfb96083745a27e80e77a413c1a4475766 Mon Sep 17 00:00:00 2001 From: Fernando Araoz Date: Mon, 11 Nov 2024 11:50:08 -0500 Subject: [PATCH] feat: add benchmark --- main.clj | 22 ++++++++++++++++------ src/day02.clj | 12 ++++++++++++ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/main.clj b/main.clj index 4bf0ce9..fbfcd6a 100644 --- a/main.clj +++ b/main.clj @@ -2,15 +2,25 @@ "Advent Of Code 2023 solved in Clojure" (:require [day01] - [day02])) + [day02]) + (:import + [java.time Instant Duration])) + +(defn benchmark + [f day part] + (let [then (Instant/now) + result (f) + now (Instant/now) + time (.toMillis (Duration/between then now))] + (println (str "Day " day " part " part ": " result " (" time " ms)")))) (defn aoc-23 [] (printf "Advent of Code 2023, solved in Clojure.\n\n") - (println (str "Day 01 part 1: " (day01/part1))) - (println (str "Day 01 part 2: " (day01/part2))) - (println (str "Day 02 part 1: " (day02/part1))) - (println (str "Day 02 part 2: " (day02/part2))) - (println "the end.")) + (benchmark day01/part1 "01" "1") + (benchmark day01/part2 "01" "2") + (benchmark day02/part1 "02" "1") + (benchmark day02/part2 "02" "2") + (println "\nthe end.")) (aoc-23) diff --git a/src/day02.clj b/src/day02.clj index 32b6111..fd28acd 100644 --- a/src/day02.clj +++ b/src/day02.clj @@ -7,6 +7,18 @@ (def contents ":: String" (utils/read-file "01" false)) (def lines ":: Vector of String" (clojure.string/split-lines contents)) +; cubes: red, green, blue +; the Elf will reach into the bag, grab a handful of random cubes, +; show them to you, and then put them back in the bag. He'll do this a few times per game +; +; Each game is listed with its ID number followed by a semicolon-separated list +; of subsets of cubes that were revealed from the bag +; +; Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green +; +; Determine which games would have been possible if the bag had been loaded +; with only 12 red cubes, 13 green cubes, and 14 blue cubes + (defn part1 ":: () -> String" []