From 0dc6fea77d728fd582a895b905d5e4fa3872a3dd Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Sat, 3 Dec 2022 15:50:33 +0200 Subject: Solve day02 --- resources/day02_actual.txt | 2500 ++++++++++++++++++++++++++++++++++++++++++++ resources/day02_sample.txt | 3 + src/aoc_2022/day02.clj | 68 ++ src/aoc_2022/utils.clj | 3 + 4 files changed, 2574 insertions(+) create mode 100644 resources/day02_actual.txt create mode 100644 resources/day02_sample.txt create mode 100644 src/aoc_2022/day02.clj create mode 100644 src/aoc_2022/utils.clj diff --git a/resources/day02_actual.txt b/resources/day02_actual.txt new file mode 100644 index 0000000..b806ad0 --- /dev/null +++ b/resources/day02_actual.txt @@ -0,0 +1,2500 @@ +A X +B X +C X +C Y +B Y +C Z +C X +C Y +C Y +B Y +B Y +C Z +C Y +A Y +B Z +B Z +C Y +B Z +A Y +C Y +B Y +C Y +B Y +B X +A Y +A Y +C Y +B X +C X +B Y +A Y +C Z +C X +B Y +B Y +A Y +C X +B Y +B Y +B Z +B Y +A X +C Y +A Y +B X +C Y +A Y +C X +A Z +A X +C Y +A Y +A Y +B Z +B Y +A Y +C Y +B Z +C Y +A Y +A Y +C Y +B Y +B X +B X +C Y +B Y +B X +A X +B Z +A X +B Y +A Y +B Z +B X +B Y +A Y +C X +C Y +C Y +A Y +A Z +C Z +A Y +B Z +C Y +A Y +C X +C Z +B Z +B Y +B Y +A Y +C Z +C Y +B Y +A Z +A Y +A Z +A Y +A Y +A Y +A Y +C Y +B Y +B Y +A Z +A Y +A Y +A X +B Z +C Y +A Y +B Y +B Y +A Y +A Y +B Y +B Y +C X +C Y +B Z +C Y +C Y +B Y +B Z +C X +A X +A X +A Z +B Y +B Z +C Y +C Y +C Y +A Y +C X +B X +B Y +B Y +C Y +C Z +C Y +A Y +C Y +B Z +C X +B Y +A Y +C Y +C Y +C Z +B X +B Y +B Y +A Y +C Z +C Y +B Y +C Y +B Z +C Y +A Y +B Y +B Z +C X +A Y +B Y +B Y +C Z +A Y +C Y +A X +B Y +B Y +B Y +B Z +B X +C Y +B X +C Z +B Y +B Y +C Y +B Y +B Z +A X +C Z +B Y +C Y +C Y +C X +C X +A Y +C Y +B Z +C Y +B Y +C Z +B X +A X +A Y +B Y +C Z +C Z +C Y +B X +B X +B X +B Y +B X +C Y +C Y +B X +B Y +B Z +B Z +C Y +C Y +A Y +B Y +B Y +B Y +B Y +B X +A Y +B Y +C Z +B Z +C Y +B Y +B Y +B X +A Y +C Z +C Y +C Y +C Y +C Z +C Y +B X +C X +C Z +B X +B Y +A Y +C Y +A Y +B Y +B X +C X +C X +C Y +C Y +C Y +B Y +C Y +A Y +B Y +A Y +C Z +B Y +C Y +A Y +B Y +A Y +A Y +B X +B Y +B Y +A X +C X +B X +C Y +A Y +B Y +A Y +C Z +B Y +C Z +B Z +B Y +A Y +C Y +C X +B X +C Y +A Z +A X +B Z +A Y +B X +C Y +C Y +C Y +A Y +C Z +A X +B Z +C Y +B Y +B Y +B Y +C Y +A Y +C X +B X +B X +C Y +B Z +C Y +B X +C Y +B Y +A Y +C Y +B Z +A Y +A Y +C Y +B Y +B X +A Y +C Z +B Y +C Z +B X +B Y +A Y +C Z +C Y +C Y +B Y +C Y +B X +C Y +B Y +B X +C Y +B X +A X +B Y +A Z +C Y +A Y +B Y +B X +C Y +B X +C Y +C Y +B Y +C Y +C Y +B X +B X +C Y +A Y +B X +C Y +B Y +A Y +B X +B Y +A Y +A Z +A Y +C Y +A X +B Y +C Z +B Y +A Y +B Y +A X +C X +B Y +A Y +A Y +B Y +B Y +B Y +A Y +B Z +C X +A Y +B X +B Y +A Z +B Z +A X +B Y +C X +C X +A Y +B Y +C Y +B Z +B Y +A Z +C Z +A Y +A Y +A X +B Y +B Y +C X +A Y +C Z +A Y +A Y +B Y +A Y +B Z +B Y +B X +C X +C Y +A Y +B Z +A Y +B Y +A Y +A Y +C Y +A X +C Y +B X +B X +B Y +B X +B Z +B Y +C Y +C Y +C Z +B Z +A Z +B Y +C Y +C Y +C Y +B Y +A Y +B Z +C Y +C Z +B Y +B Y +B Y +B Y +C X +B Z +A Y +A Y +B Y +B X +B Y +B X +A Y +C Y +B X +B Y +C Y +B Y +C Y +C Y +C X +B Y +B X +C Z +B Y +A Y +B X +C Y +A Z +C Y +C X +B Y +C Z +C Y +B X +C Y +A Y +A X +B X +C X +A Y +C Z +C Y +B Y +B X +C Y +B X +B Z +B Z +B Y +B Z +B X +C Y +C Y +B Y +B Y +C Y +B Y +B Y +B Z +B Y +A X +B Y +C X +B Y +A X +C Y +B Y +A Y +B Z +B Z +A Y +A X +C Y +B Y +B Y +C X +A Y +C Y +B Y +C Z +B X +A Y +A Y +B Z +A Y +B X +B X +C Y +A X +B X +B X +B Y +B Y +B Y +B Z +A Y +C Y +A Y +C Y +A Z +C X +B Y +C Y +B Y +C Y +B X +B Z +A X +A Y +C Y +C Y +B Y +A Y +A Y +A Y +A Y +A Y +C Y +C X +B Y +B Z +B Z +B Y +B Z +B Z +B X +A Y +B Z +B Y +C Z +B Y +C Z +A Z +C Y +C X +B Y +B Y +B Y +A Z +C Y +A Y +B Y +A Y +A Y +A X +B Y +B Z +B X +A X +C Z +B X +C Y +B X +B Y +B X +A Y +B X +B Y +C Z +C Y +C X +B Y +B Y +A X +C Y +B Y +A Y +C Y +C X +B Z +C Y +A Y +C X +B Y +C Y +C X +C X +C Z +C Y +C X +A Y +C Y +C Y +B X +B X +B Y +C Z +B Y +B Z +B Y +C Y +B X +A Y +B Y +B Y +B X +B Y +B Y +C Y +B Z +B Y +C X +A Y +A Y +C Y +C Z +B Y +B X +C Y +C Y +C Y +A Y +C X +A Y +B Y +B X +A Y +B Y +C Y +B X +C Y +B Y +A Y +A Z +C Y +B Y +C Y +A Y +B X +B X +B Y +C Y +B X +B Y +C Z +C Y +C Y +A Y +C Y +B Z +B Z +B Y +C Y +C Z +A X +B Y +B Z +C Z +B X +A Y +A X +B X +B X +A Z +B X +C Y +C Y +B Y +C Y +B Y +A Y +B Y +C X +B Z +C X +B X +C X +B Y +C Y +C Y +B Y +B Y +C Y +C X +B X +A Y +C Y +A X +B Y +B Y +B Y +C Y +B Z +C Y +C Z +B X +C Y +A Y +B Y +A Y +C Y +A Z +B Z +B Y +A Y +B Z +B Y +C X +B Y +C Y +C Y +A Y +C Y +A Y +B Y +C Z +C X +C Y +C X +B X +B Y +C Z +A Y +C Y +C Z +C Y +C Y +C Y +B Y +B Z +B Y +C Y +C Z +B Z +C Y +C X +A Z +B Y +A Y +B Y +B Y +A X +C Z +C Y +B Y +B Y +C Y +C Y +B Y +C Y +C Y +B X +B Y +C X +B X +B Y +C X +C Y +B Z +C X +C X +B Y +A Y +B Y +C Y +B X +A Y +C Y +C X +C X +A Z +B Z +A Y +C Y +C Y +A X +A Y +B Y +B Y +C Y +C Y +C Y +C Z +B Y +C Y +A Y +B X +C Z +A Y +C X +B Y +B Y +B Y +C Z +B Y +C Y +B Y +B X +C Y +C Y +A Y +B Y +B Y +B X +B Y +B Z +B Y +A X +C Y +B X +B Y +B X +B Y +B Y +C Y +C Y +C Y +B Y +B Y +B X +A Y +C Z +B X +B X +C X +C Y +A Y +B Y +B Y +C Y +C Y +C Z +A X +B X +A X +A Z +A X +C Y +C Y +A X +B Y +C Z +B X +C Y +B X +B Y +B Y +B X +C Y +B X +A Y +B Y +B Y +B X +B Y +C Y +B Y +B Y +C Y +C Y +B X +C Y +B X +C Y +C Y +C Z +C Y +B X +B Y +A Y +C Y +A Y +B Y +C Y +C Y +B X +B Y +B Y +A Y +B Y +A Y +B X +A X +C X +B Y +A Z +A Y +B X +B X +A Y +B X +B X +C X +C X +B X +B Z +C Z +A Y +B X +B Y +B Z +C Y +C Y +C Y +A Z +B X +B Z +B X +B Y +B Z +B Y +B Z +C Y +B Y +C X +C Y +B X +C Z +A Z +A X +B Y +C Y +A Y +C Y +A Y +A X +C Y +B Y +B Y +A Y +C Y +C X +B Z +B Y +B Z +C Y +A Y +C X +A Y +C Y +C Y +B X +C Y +A Y +C Y +C X +B Y +B Z +A Y +B X +A X +A Y +C Y +B Y +A Y +B Y +C Y +C Z +B X +A Y +A Y +A Y +A Z +A Y +B Y +C Y +C Y +B Z +B X +C Y +A Y +B X +B Y +B X +C Y +B Y +A X +C X +C Y +B X +B Y +B Z +B X +B Y +A Y +B X +B Z +C Y +A Y +C X +C Z +C X +A Z +B Z +B Y +C X +B X +C Y +B Y +A Y +C X +A Y +B X +B Y +C Y +B Y +C Y +B Z +B X +A Y +A X +C Y +C Y +B Y +B Y +B Y +B Y +C Z +A X +C Y +C Y +B Y +B Z +C Z +A Y +B X +C Y +C Y +B Z +B Y +B Y +B X +B Z +B Y +C Y +C Y +C Y +B Y +A X +A Y +C Y +A Y +A X +A Y +C Y +B X +C Y +C X +B Y +B Y +C Z +C Z +B Y +B Y +C X +C Y +B Z +A Y +C X +B X +C Y +B Y +B Z +A Y +B Z +B X +B Y +A Y +B Y +C Z +A Y +B X +A Y +B Y +B X +A Y +C Y +A Y +B Z +B Z +B Y +A X +A Y +C Z +B Y +B Z +C Y +B Y +B X +B Z +B Y +A X +A Y +C Z +C Y +A Z +B Z +B X +B X +B Y +C Y +B Y +C Y +B Y +B Z +C Z +B X +A Y +C Y +C Y +C Y +C X +C Y +A Y +B X +A Y +B X +A Y +C Y +A Y +B Y +B Y +C Z +B Y +C Y +C Y +B Z +A Y +C Y +B Y +B Y +C Y +C Z +B X +A Y +C X +C Y +B Y +B X +A Y +B Y +A Y +A X +C X +C Y +C Y +A Y +B Y +A Y +A Y +A Y +B X +B Z +C Z +C Z +B X +C Y +B X +C Y +B X +C Y +C Y +C Y +B X +B Y +A Z +C Y +B X +C Y +B Y +B Y +C Y +A Y +C Y +B X +B Y +A X +C Y +C Y +B Y +B X +B Z +C Z +A Y +A Y +B Y +A X +A Y +B X +C Y +B Z +B Y +B Z +B Y +A Y +B Y +B Y +B X +A X +B Z +B Y +A Y +B X +B Z +B Y +B X +C Z +C Z +B X +A Y +C Y +C Y +B Y +C Y +B Y +B Y +B Y +B X +B Z +B Z +B Y +B X +B Y +B X +B Y +C Z +C Y +B Z +C Z +C Y +B Y +C X +C Z +B X +C Y +C Y +B Y +C Y +B Z +B Y +B Y +A Y +C Y +C X +A Y +C Y +B X +B Y +C Y +B X +C Y +C Y +C X +C Z +B X +C X +A Y +B X +A Y +B Z +A Z +C Y +A Y +A X +B Y +B Z +A Y +B Y +C Y +A Y +B Y +C X +C Y +C Y +C X +C X +C Y +B X +B Z +C X +B Y +C Y +C Y +C Y +C Z +B Z +C Z +B Z +C X +B Y +A Z +C Z +B Y +B Y +B Y +C Y +B X +B X +B Y +C Y +C X +A Y +C Z +B Z +A Y +B Y +B Z +C Y +B X +C X +A Y +B Y +B Y +C Z +B X +A Z +C Z +B X +C Y +B X +C Y +C X +C Y +C Y +C Y +B Y +B Z +B Z +C Y +B Z +C Y +C Z +B Y +C Y +C Y +C Z +B X +A Y +B Y +B Y +B Y +A Z +B X +C Y +C Y +A Y +C Y +C Y +B X +C X +A Y +B Y +A Y +C Z +A Y +C Z +B Z +A Z +A Y +B X +C Y +B X +C Y +C X +A Y +B Y +B Y +C Z +C Z +B Z +C Y +B Y +B Z +B X +A Z +C Y +C X +B Y +C Z +A Y +B X +C X +C X +B Z +C X +B Z +B Z +A Y +B Y +B X +B Z +C X +B Y +A Y +C Y +C Y +B Y +B Z +C X +B Y +B Y +C Y +A Y +C Z +C Z +B Y +B Y +B X +C Y +B X +B Y +C Y +C Y +B X +B Z +B Y +C Z +A Y +A X +C Y +A Y +B Z +B X +B Z +B Z +B Y +B Y +B Y +A Y +A X +A Y +B Y +A Y +C Y +C Y +C Y +B Y +C Y +C Y +B X +C Y +B Y +A Y +A Y +C Z +B Y +B X +C X +B X +B Y +A Y +B X +B Y +B Z +C Y +A Y +A Z +B X +C Y +C X +B Y +B X +C Y +C Z +C Y +A Y +A X +C Z +C X +A Y +A X +B Y +C X +C X +C Y +C Z +C X +B Z +B Y +A Y +B Y +C Y +C Y +C Y +C Y +C X +B Y +A Y +A Y +C Y +A Y +A Y +C Y +A Y +C X +B X +A Y +A Y +A Y +A Y +B X +C Y +A Y +C Y +B Y +B Y +C Y +B X +C Y +A Y +C Z +A X +B X +C Y +C Y +B Y +A Y +A Y +C Y +C X +B X +B Z +B X +C X +A Y +B Y +B X +B Y +B Z +A Y +B Y +B Z +A Y +C Z +B Y +C X +C Y +A Y +C Z +C Y +B X +B Y +C Y +C Z +A Y +B X +B X +A Y +B Z +B Y +C Z +B X +B X +C Z +A Y +C Z +A Y +C X +B X +C Y +A Y +B Z +B Y +B X +C Z +A Y +B X +C X +C Y +B Y +C Z +C Y +C Y +A Y +C Z +C Y +A Y +B Y +B Y +C Y +A Y +B Y +B Y +B Z +A Y +C Z +A Z +C Z +B X +B Y +C X +A Y +A Y +C Y +A Y +B Y +C X +A X +A Y +B Y +C Y +C X +A Y +A Y +B X +C Y +B Y +C Z +C X +B X +C Y +A X +A Y +A Y +B Y +C Y +C Z +A Y +B Y +C Y +C Y +B X +A Y +B Y +B X +C Y +B Z +C Y +B X +A Y +B Y +C Y +C Z +B Y +C Y +A Z +C Z +B X +B Y +C Y +B Y +A Y +B Y +B X +C Z +C Z +C X +B Y +C Y +C Y +B Y +B Y +A Y +B Z +B X +C Y +B Y +C Y +B Z +C Z +C Z +C Y +B Y +A Y +C X +B X +B X +B Y +C Y +C Y +B Y +B Z +C Y +B X +C Y +C Z +B X +A Y +B X +C Y +C X +A Y +B X +A Y +A Y +C Y +B Y +C Y +B X +C Y +B Y +C Y +B X +C Y +B Y +A Y +A Y +C Z +B X +C Y +C Z +B Y +A X +C X +B X +B X +C Y +B X +C X +B Y +A Y +B Y +C Y +B Y +C Y +C Y +A X +C X +C Y +B Y +B Y +C Y +C Y +A Y +A Y +C Z +C Y +C Y +B X +A Y +C Z +B Y +B Y +B Y +C Z +B Z +B Z +C X +C Y +B Y +B Y +A Y +C Y +C Y +B Y +C Y +A Y +C Y +B Y +C Y +B Z +B Y +A Y +B Y +B X +C Z +C X +C X +A Y +C Z +B Y +B X +A Y +B Y +A X +B Y +B Y +B Y +B X +C Y +C Y +A Y +A Y +B Y +B Z +B Y +B X +B Z +C X +B Y +A Y +B Z +B X +A Y +B Y +A Y +B X +B X +B X +B Y +C X +B X +C X +C Y +B Y +A X +B Y +C Y +B Y +C Y +B Y +B Y +A Y +B Z +B X +B Y +B Y +B Y +A Z +A Y +C Y +C Z +C X +B Z +C Y +B Y +A Y +B X +B Y +C X +B X +B Y +C Y +B Z +C Y +B Z +B Z +B Y +B X +B Y +B Y +B Y +C Y +A Y +A X +C Y +B Y +C Z +B Z +C Y +C X +B X +C X +B X +C Z +A Y +C Y +B Z +C Y +A X +B Z +B Y +B X +B Y +B X +C X +C X +B Z +B Z +C Y +B Y +B X +B X +B Z +A Y +A Y +A Y +B Z +B X +C Z +B Y +B Y +C Y +C Y +B X +B Y +C Y +B Y +B Y +A X +B Z +A Z +B Z +C X +B Z +A Y +B Z +B Y +B Z +A Y +B Y +C Y +C Z +B Y +C X +B X +B Y +A Y +B Z +C Y +C X +C Z +A Y +B Y +C Y +A X +C Z +B X +C Y +A Y +B Y +B Z +A Y +B X +C Y +B Y +C Z +C Y +B Y +B Y +C Y +C Y +C Y +A Y +B Z +C Y +B X +A Y +C Y +A Y +A X +B Z +A Y +B X +B Y +B X +A Y +C Z +B Y +B Z +C X +C Y +C Y +B Z +B Y +C Y +C X +C Y +C Y +B Y +B Y +A Y +B X +C Y +C Y +C Y +C Y +B Y +B Y +C Z +C X +B Y +C Z +A Y +B X +A Y +B Y +C X +B X +B X +B Y +A X +C X +C Y +B Y +C Y +C X +B Y +C Z +B Y +A Y +C Y +C Y +A X +A Y +C Y +A Y +A Y +C Y +A Y +B Y +A Y +B Z +B X +A X +A X +A Z +B Y +B Y +C X +C Y +C X +C X +A Y +B X +B Y +B Y +A X +B X +B Y +B Y +C Y +B Y +C Y +C X +A X +C Y +B Y +C Y +B Y +C Z +B X +B Y +B X +B X +C Y +B Y +A X +C Y +B Y +B X +A Y +B X +A Y +C Y +B Z +B Y +A Y +A Y +B Y +B X +B Y +C Y +B Y +B Y +A Y +A Y +C Y +B Y +C Z +C X +C Z +C X +C Z +A Y +B Y +A Y +C Y +C Y +B Y +C Y +B X +B X +A Y +B Y +B Y +A Y +B X +B Y +B Y +C X +C Y +C X +C Y +C Y +C Y +C X +C Z +B X +B Y +C Y +B Y +B Y +C Y +B X +C Y +B Y +B Y +B Z +B X +A Z +C Y +C Y +A Y +B Y +B Y +A Y +B X +C Y +B Y +B Y +B Z +B X +C Y +B Y +A Y +B Z +C Y +C X +C Y +C Y +B Y +A Y +C Y +C X +A Y +B Y +B Z +B X +C Z +A X +C Y +B Y +B Z +C Y +B Y +B Y +B Y +B Y +C Y +B Y +C Y +B Y +A Y +A Y +A X +B Y +C Y +C Y +C Y +C X +C Z +C X +B X +A Y +C Y +A Y +B Y +C Y +C Z +A Y +B X +B X +A Y +B X +C Y +B Y +B Y +B Y +B Y +C Z +C Y +B Y +B X +A Y +B Z +A Y +C Y +B Z +A Y +B Y +C Y +C Y +B Y +B Y +C Y +A Z +C Y +C X +C Y +C Y +C Y +B X +C Y +A Y +C Y +B X +B Y +C Y +C X +B Y +B Y +A Y +B X +A Y +A Y +B Y +A Y +C Y +B Y +B Z +A Y +C Z +B Y +B Y +B X +A Y +B X +C Y +A Y +A Y +A Y +B Y +B Z +C Y +C Y +B X +A Y +C Y +A Y +B Y +B X +B Y +B Y +C X +B Y +B Y +B Y +B Y +A Y +A Y +C Y +A X +B X +A Y +B X +B Z +B Z +B Z +B Y +B Y +C Y +C Y +C Z +B Z +B Z +C Y +B Y +B Y +C X +C Y +C Y +B Y +A Y +B X +A Y +B Y +A Y +C Y +B Z +A Y +B Y +B Y +B Y +C Z +A Y +A Y +C Y +B Y +C Y +B Y +C Y +B Z +C Y +C X +C Y +C Y +B Y +A X +C Y +A Y +C X +A X +A Y +B Z +C Y +C Y +B Y +C Y +C Y +B Y +C Y +C Z +B Y +A X +C Y +B X +A Y +C Y +B Z +B Y +B Z +A Y +B Y +B Z +C X +B Y +C Y +A X +C X +A X +B Y +B X +C Y +C Y +B Y +B Y +C Y +B Z +C X +A Y +A Y +B Y +B X +B Y +A Y +B Y +B Z +C X +A Y +B X +C Y +C Y +A X +B Y +C Z +B X +B Y +B Y +C Y +B Z +B Y +B Z +A Y +C Y +C Y +B Y +C Z +C Y +A X +A Y +C Y +B Z +A Y +A X +C Y +B X +B X +A Y +B Y +B Z +A Y +C Y +B Y +C Z +C Y +C Y +B Y +C Y +B Z +C Y +B Y +C Z +A X +A Y +A Z +C Y +B Y +B Z +B X +B X +C Y +A X +C Y +B X +B X +C Y +A Z +B X +A Z +B Y +B Y +A Y +B Z +C Y +B Y +C Y +C Y +A Y +C Y +B Y +C Z +C Z +B Y +B X +C Y +C Y +C Y +B Y +C Y +B Z +B Z +A X +C X +B X +C Z +C Y +B X +B Y +A Z +C Y +B Z +B Y +C Y +B X +B Z +B Y +A Y +B Y +B X +C Y +B Y +B Z +C Y +C Z +C Z +C Y +A Y +C X +B Y +A Y +B Z +C Y +A X +C X +C Z +C Z +A Y +B Y +C X +C Y +C Y +B X +C X +C Y +B X +B X +C Y +B Y +B Y +B Y +B Y diff --git a/resources/day02_sample.txt b/resources/day02_sample.txt new file mode 100644 index 0000000..db60e36 --- /dev/null +++ b/resources/day02_sample.txt @@ -0,0 +1,3 @@ +A Y +B X +C Z diff --git a/src/aoc_2022/day02.clj b/src/aoc_2022/day02.clj new file mode 100644 index 0000000..45bba95 --- /dev/null +++ b/src/aoc_2022/day02.clj @@ -0,0 +1,68 @@ +(ns aoc-2022.day02) +(require '[clojure.java.io :as io]) +(require '[aoc-2022.utils :as utils]) + +(defn score-round-result [own opp] + (cond + (= own opp) 3 + (and (= own :rock) (= opp :scissors)) 6 + (and (= own :rock) (= opp :paper)) 0 + (and (= own :paper) (= opp :scissors)) 0 + (and (= own :paper) (= opp :rock)) 6 + (and (= own :scissors) (= opp :paper)) 6 + (and (= own :scissors) (= opp :rock)) 0)) + +(def score-own-play + {:rock 1 + :paper 2 + :scissors 3}) + +(defn score-round [own opp] + (+ (score-round-result own opp) (get score-own-play own))) + +(def plays + {\A :rock + \B :paper + \C :scissors + \X :rock + \Y :paper + \Z :scissors}) + +(defn score-round [own opp] + (+ (score-round-result own opp) (score-own-play own))) + +(defn task1 [rows] + (->> rows + (map (fn [[opp _ own]] `(~(get plays own) ~(get plays opp)))) + (map (fn [[own opp]] (score-round own opp))) + (reduce +) + )) + +(def results + {\X :lose + \Y :draw + \Z :win}) + +(def own-play + {'(:lose :rock) :scissors + '(:lose :paper) :rock + '(:lose :scissors) :paper + '(:draw :rock) :rock + '(:draw :paper) :paper + '(:draw :scissors) :scissors + '(:win :rock) :paper + '(:win :paper) :scissors + '(:win :scissors) :rock}) + +(defn task2 [rows] + (->> rows + (map (fn [[opp _ res]] `(~(get results res) ~(get plays opp)))) + (map (fn [[res opp]] [(get own-play `(~res ~opp)) opp])) + (map (fn [[own opp]] (score-round own opp))) + (reduce +))) + +(with-open [rdr (io/reader "resources/day02_actual.txt")] + (let [rows (line-seq rdr)] + (do + (println "task1:" (task1 rows)) + (println "task2:" (task2 rows))))) diff --git a/src/aoc_2022/utils.clj b/src/aoc_2022/utils.clj new file mode 100644 index 0000000..57bfa88 --- /dev/null +++ b/src/aoc_2022/utils.clj @@ -0,0 +1,3 @@ +(ns aoc-2022.utils) + +(def spy #(do (println "DEBUG:" %) %)) -- cgit v1.3