From 17d5ad4f0b630f2e8363c85182ff3dfdeee6dc52 Mon Sep 17 00:00:00 2001 From: Nat Lasseter Date: Fri, 2 Dec 2022 11:02:28 +0000 Subject: Day 02 --- day02/input | 2500 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ day02/part1.rb | 34 + day02/part2.rb | 35 + day02/test | 3 + 4 files changed, 2572 insertions(+) create mode 100644 day02/input create mode 100644 day02/part1.rb create mode 100644 day02/part2.rb create mode 100644 day02/test diff --git a/day02/input b/day02/input new file mode 100644 index 0000000..69dff16 --- /dev/null +++ b/day02/input @@ -0,0 +1,2500 @@ +B Z +C Z +C Z +A Y +B Z +C Y +C Z +C Y +C X +A Z +B Z +C Z +A Y +C Z +B X +C Y +C Z +C X +C X +C Y +C Y +C X +A Y +C Y +C Y +C X +C Z +C X +A X +C Z +C Y +C Z +C Z +C Z +A Z +C Z +B Z +A Y +A X +A Y +C Z +A Y +C Z +A Z +C Y +C Y +C Y +A X +C X +C X +C Y +A X +A Y +C X +A X +C Z +A Y +C Z +C Y +A Y +C Z +A X +A Y +A X +C X +C Z +A X +B Z +C Z +C Y +C X +C X +C Z +C X +C Z +A X +C Y +A Y +C Y +C Z +C X +B X +B Z +C Z +C X +A X +B Z +A Y +A Y +B Z +A Y +C Y +B Z +B X +C X +C X +C X +A X +A Z +A Y +A Y +C Y +C Z +C Z +C Z +A Y +C X +A Y +A X +C X +C X +A X +A Y +A X +A X +A Y +C Y +A Y +A Y +A X +C X +B Z +A X +C Y +C X +C Z +C Z +C Z +C Z +C Y +C X +C X +A X +A Y +A X +C Z +C X +C Y +C Y +C Z +C Z +B Z +C Z +C Y +C X +C Y +A X +A Y +C X +B Z +B Y +C Z +C Y +C X +A Y +C Y +B Z +A Z +C X +C Z +C Y +C X +C Z +A X +A Y +C Y +C Y +A Y +A X +A X +C X +C X +C Z +A Y +A Y +C Y +C Z +A X +A Y +C X +C X +C Y +C X +C Z +C X +C Z +C Z +C Z +C Z +A Y +B Z +C Y +C Z +A Z +C X +C X +A X +A Z +C Z +C X +C Z +A X +B Z +B Z +A X +C X +C X +B Z +B Z +B Z +C Z +C X +A Y +C Z +A X +C Y +C Z +C Z +C X +C X +C Z +C Y +C Y +C X +C X +A X +C Y +A X +C Y +C X +B X +B Z +C X +C X +B X +C Z +C Y +A X +C Z +C Z +C Z +C Y +C X +A Y +A Z +C Z +B Z +C Z +C X +A Y +C X +C X +A X +C X +C Z +A X +C Z +C Y +C Y +C Y +C Z +A X +C Y +C X +C Z +A X +C Z +C X +C X +C X +A Y +C Z +A Y +C Z +C Y +C Z +A Y +C X +C X +C X +C Y +C Z +C X +C Y +C X +A X +C X +C Y +C X +C Z +C X +B Z +C X +B Z +B X +C X +C X +C X +B X +A Y +A Y +A X +B Z +C X +A Z +C Y +C X +C X +C Y +A Y +A Z +C X +A Y +C Z +C X +C X +C Y +C Y +A Z +A X +C Z +C X +C Z +B Y +A Y +C Z +A Y +C Z +A X +C Y +C Y +C X +A Y +C X +C X +B X +C Z +C X +C Y +C Z +C Z +C Y +C Y +C Y +C X +B Z +C X +C X +C Y +C Y +C Z +B Z +C X +C Y +B Z +C Z +A Y +C X +C X +A Y +C Y +C Z +C X +A Y +A Y +C Z +C Z +C Z +A X +C X +C Z +C Z +C Z +A Y +A X +C X +C Z +C X +C X +C Y +A Y +C X +C Y +C Z +C Y +A X +C X +C X +C Z +A X +B X +C Y +A X +C Y +C Y +C X +C Z +B X +C X +C Z +A Y +C Z +C X +A X +C Y +A X +C Z +A X +C X +C Y +C X +C Z +C X +C X +C Y +A X +C Y +A Y +C Z +C X +C X +A X +A Z +C X +C X +C Y +B Z +A X +A X +C X +B Z +C Z +A Y +C Y +C Z +C X +A Z +C Y +A X +C Y +C Z +C Z +C X +C Y +C X +C Y +C Y +C X +A Y +B X +C X +A X +A Y +C Y +C Z +C Y +C X +A Y +C Z +C X +C X +A Z +C Y +C Z +A X +C X +C Z +A Y +A X +B X +C Z +B Z +C X +A Z +C Z +A X +A Y +C X +A X +B Z +C X +C Y +C Z +C Y +C Y +C Z +C X +B X +C Y +B Y +C Z +A Y +A Y +C Y +C Z +A X +C Z +C Y +B Z +C X +A X +C X +C X +C Y +C Y +C Z +A Y +C Z +A X +A Y +C X +C Y +C Z +C X +A X +B Z +C Z +A X +C X +C X +C X +B Z +C Z +C Y +B Z +A X +C Z +C Y +A X +C X +B Z +C Y +C X +C Z +C Z +C Z +C X +C Y +B X +A X +B Z +C X +C Y +C Z +C X +C Z +C Z +C Z +C Y +A X +C X +C Z +A X +C X +C Z +B X +C Z +B Z +A Y +A X +C Z +C Z +C Y +C Z +C Y +C Z +A Y +B Z +A Y +C X +A X +A X +A X +B Z +C Z +B Y +C Y +A Y +A Y +C Z +A Y +C Z +C Z +A Y +C Z +C Z +C Z +A Y +C Z +C Z +C Z +C Z +A Y +C Y +A Y +C Y +C X +C X +C Z +C X +C Z +C Y +A X +C Z +B X +C Z +A X +C Z +C Z +C Y +C Z +C Y +C X +C Y +B X +C Z +C X +C Y +A Y +C X +C Z +C X +C Z +C X +A Z +C Z +C X +C X +B Z +C Z +C X +A X +C Y +A Y +C X +C Z +C Z +A Y +A X +B Y +C Y +C Y +C Y +C X +A X +C Z +C Y +C Z +C X +C Z +C Z +C Y +B X +C X +C Z +C X +C X +C Y +A X +B Z +A X +C X +C Z +B Z +A Y +C Y +B Z +C X +A Z +A X +C Z +C Z +C X +A Y +B Y +C X +C Z +B Y +A Y +A Y +C X +A X +C Y +C X +C X +C Z +A X +A X +A X +B Z +C Y +C Z +C X +A X +B Z +C Z +C Z +C X +C X +C X +C X +C Z +C Y +C Z +C Z +C Z +A Y +C Z +C X +C Y +C X +B Y +A Y +C Z +C X +C Z +A X +A X +C Y +C Y +C X +C Z +C Z +C Z +C X +C Z +C X +C Y +C X +C X +C Y +C Y +B Z +C Z +C Z +B Z +C Y +C Z +C Y +B Z +C X +C Z +C Y +C Z +A Y +C Z +B Z +C Z +C X +C X +A Z +C Z +C X +A Y +A Z +A X +C Y +C X +C Z +C X +C X +C Y +C X +C Z +C X +C Y +C Y +C Z +C Y +C Y +C Y +A Z +A Y +C Z +C Y +C Z +C X +A X +C Z +C Z +A Y +C Z +C X +C X +C X +C Z +C X +C Z +C Y +A Z +C Z +C Y +C Z +C X +C Y +C Y +C X +C X +C Z +A Y +C Y +B Z +A Y +C Y +C X +C Z +C X +C Y +C Z +A Y +A X +C Z +B Y +C Y +A X +C Y +C Z +B Z +C Y +C Z +C Z +B Z +C X +A Y +C Z +C X +B Y +B Z +C Z +B Z +C X +A X +A X +B Z +C Z +C Z +C Z +C Y +A Y +C Z +B X +C Y +A Z +C Y +C Y +A Y +C X +C Y +B Z +C X +C X +C X +B Z +C X +B Z +A X +C Y +C Y +A X +C X +A Y +C X +A X +C Z +A X +C X +C X +A Y +C Z +C Z +C X +C X +B Z +A Y +C Y +C X +A Y +C Z +A X +C X +B Z +C X +C X +B X +B X +B Z +C Z +C X +A Y +B Z +B Y +C X +C Z +A Y +C Z +C X +C X +B Z +C X +A Y +A X +A Z +C Z +C Y +B Z +C X +A X +C X +A X +C X +C X +C Z +A X +B Z +C Z +C X +C X +A X +C Z +C X +C X +C Z +C Y +C X +A X +C X +C X +C X +A X +C Z +C Z +C Y +B Z +C X +A Y +C Z +C X +C Y +B X +A X +C X +B Z +C Y +B X +A Y +B X +C Z +C Y +C X +C Z +A Y +A Y +C X +A X +C X +C X +A Y +A X +B X +C Y +A Y +C X +C Z +A Y +C Z +B Z +C Z +A X +C Y +C Y +C Y +A Y +A Z +A Y +C X +C X +A Y +C Y +A X +C Y +A Y +C X +C Y +B Z +C Z +C Z +B X +C Y +B X +A Y +A Y +A X +A Y +C Z +C Z +C Y +B Z +A Z +C X +C Z +A X +C X +C X +C Z +C Y +C X +A Y +C Z +B Z +A Y +A X +C Y +B X +C Z +A Y +C X +C Y +C X +A X +C Z +C Z +C X +C Z +A X +C X +C X +A Z +B Z +A X +C Y +C X +A X +C X +C Z +C Y +A Y +C X +A Y +A X +C Y +A Y +C X +A Y +C X +B Z +C X +C X +C X +C Z +C Z +C Z +B Z +C X +B Z +C X +A X +A Y +A Y +A X +C Y +A X +C Y +A Y +B Z +C X +C X +C Y +C X +C Z +A X +A Y +C Z +A X +C X +C X +B X +C X +A Y +C X +C Z +B Z +A X +B Z +C Y +C Z +C Y +C Y +C X +C Z +C Z +C Z +A X +C X +A X +A Y +A X +C Z +C Z +A Z +C Y +B Z +A X +C Z +C Z +C X +C X +A X +A Z +C Z +C X +C X +C Y +C Y +C Y +A Y +A Y +C Z +A X +C Z +C X +A X +C Y +C Z +C Y +A X +A Y +A X +C Z +B Z +C Z +A X +C X +C Y +C X +C X +C Y +C Z +C Z +C Y +C X +A Y +C Y +C Z +B Z +C Y +C Y +A X +C Z +B Z +C X +B Z +B Z +C Z +C X +C Z +A X +C Z +C X +A Y +A X +A Y +C Z +C Z +C Z +C Z +C X +B Z +C Y +C X +B Z +C X +A X +A Y +C X +A Z +A Y +A X +C Y +C Z +C Y +C Z +B Z +C Y +C X +A Y +B Z +C Z +C Z +C Y +C X +C Z +A Y +C Y +A Y +C Z +B Z +C Z +A X +C Z +C Z +C Y +C X +C Y +A X +C Y +C Z +C X +A X +B Z +C Y +C X +C Z +C Y +A X +C X +A Y +A Y +C X +C Z +C Y +B Z +B X +C Y +C X +C X +C Z +C Y +C X +C Z +C Y +A X +B Y +A X +A Y +C X +A X +A X +A X +C Y +B X +B Z +C Z +C X +C Z +A Y +C Y +C X +B Z +A X +C X +A Y +C X +C X +C X +B Z +C Z +C X +B X +C Z +C Y +C X +C Y +C Z +C Z +C Z +A X +C X +C X +C X +B Z +C Z +A Y +C X +B Z +B Z +A Y +A Y +B Z +C X +C Y +A X +C Y +C X +C Y +C Y +C X +B Z +C Z +C Z +C Z +C Y +A Y +C Z +C Y +A X +C X +C Z +C Y +A Y +C Z +C X +B Z +C X +C Z +C Z +C Y +A X +A Y +C Z +A Y +C Z +C X +C Z +C Z +A X +A X +C X +B Z +B Z +C Y +A Y +C X +C X +C Z +C Z +A Y +C Y +C Z +A X +C X +C Y +A Y +C X +C X +A Z +C X +C Y +C Z +C X +B Z +C X +A X +C Z +C Z +A X +C Z +C Y +C Z +C Z +A Y +C X +C X +C X +C Y +C Z +C X +C X +C Y +B Z +A X +C X +A Y +B Z +A Y +A X +A X +B X +C Y +A Y +C Y +C Z +A X +C X +A Y +A Y +C Z +C X +C Z +C Z +C Z +C Z +A Y +A Y +A X +C X +A Y +C Y +A X +C X +C X +C X +B Z +C Z +B Z +A X +C Z +C Z +C Y +C X +C X +C X +C Y +A Z +B X +B Z +C X +B Z +A X +A Y +C Z +B Y +C X +C X +A Y +C Y +C Y +C Z +C X +A X +B Z +C X +A X +A X +C X +A X +C Y +B X +C Z +C Z +C Z +C Z +C X +C Z +C X +C Z +C Z +A X +C Z +C X +B Z +A Y +C Z +B Z +C Y +C X +C X +C Z +C Y +C X +C Z +C X +B X +C Z +A Y +C X +B Z +A Y +A X +C X +C X +B Z +C Y +C Z +C X +C Z +C Z +C Z +B X +C X +C X +C Y +B Z +A Y +C Y +C Z +A Z +A Y +C Z +C Y +C Y +A X +B Z +B Z +C X +A X +C Z +B Z +C Z +C Y +C Z +C Y +A X +C X +C Y +C X +B X +C Y +A Y +C X +C Z +A Z +C Y +A X +C Z +C Y +B Z +C Y +C Z +A Y +C Z +C X +A Y +C X +C Z +C X +B Z +C X +A X +C Z +C Z +C X +C Z +C X +C Z +C Z +A Z +A X +B Z +B X +C Z +C X +B Z +C X +C Y +C Z +C Z +A X +A X +C Y +B Z +A X +C X +C Z +A Z +A Z +C Z +C Y +C X +C Y +C Z +A Z +A X +A Y +C X +C Z +A Y +C Y +A Y +A X +C Z +C X +C Z +C X +B Z +A Y +C X +A X +C X +B X +C X +A X +C X +A X +C Y +A Y +C X +A Y +C X +C Z +C X +B Z +A X +C Z +A X +C Z +C Z +C Y +C Z +C Y +C X +A Y +C X +A X +C Z +C X +A Y +C Y +C X +C X +C Z +C X +C Y +C X +C X +C X +C X +A Y +A Y +A Y +C Z +C X +B Y +B Y +A Y +C Z +C X +A Y +C Z +C Y +C X +C Z +A X +C Z +C Z +C Y +A X +A X +C Z +C X +C X +C X +C Z +C Z +A Y +C Y +A X +B Z +C Z +C Y +C Z +A X +C Z +C X +C X +A Y +C Z +C X +C Z +C Z +A Y +C Y +C Z +A X +C Y +C Z +A X +C X +A X +C X +C Z +C X +C Z +C Z +C Y +C Y +A Y +C Y +A X +C Y +C X +C Z +C X +A X +C X +A X +A Y +A X +C Z +A X +C Y +C X +A Y +C Z +C Z +C X +B X +C Z +C Y +A Y +B Z +C Y +C X +B Z +C X +A Y +A X +A X +A X +C X +A X +C X +C Z +C X +A X +C Y +A Y +C X +C Z +C X +C Z +C Y +C X +A X +C X +C Y +A Y +A X +B Z +C Y +B Z +C Y +C X +A Y +C X +C Z +C X +C Y +A X +C Y +C Y +C Z +C Y +C X +C Z +C X +C X +C X +C Z +C X +A Y +A Y +C X +C Z +B Z +C X +C Y +C X +C X +C Z +C Z +C X +C X +A Z +A X +C X +B Z +C Z +C Y +C Z +C X +C X +C X +C Z +C X +A X +A X +C Z +C X +A Z +C X +A X +A X +C Z +A X +A Y +C Z +A Z +A Y +C Y +C X +A Y +A X +C Z +C X +A Y +B Z +C Z +A X +C Z +C X +A X +A Y +C Z +C Y +C Z +C Z +B Z +C X +C Z +C Z +C Y +C X +C Z +C X +C X +B Z +B Z +A Y +B X +B Z +C Z +A Z +C Y +C X +C Z +C X +C X +A X +C X +A Y +B X +C Z +C Y +C X +C Z +C Y +C Y +C X +B Z +C X +B Z +C Y +C Y +C Y +C X +C X +A X +A X +A X +C Z +A X +C Z +C X +C Y +C Z +C Y +A Y +C Y +A X +A Y +C Y +C Z +C Z +A Y +C X +C X +A X +C Y +C X +C Y +A X +C X +C Y +C Z +C Z +B Z +A Y +C X +B Z +C Y +A X +C Z +C X +C Z +B X +C Z +C Z +C Z +C X +C Z +C Z +C X +C Z +C Z +B X +A X +C Y +C Z +A Y +C Y +C Z +C Z +C X +A Y +A X +C Y +C Y +A Y +C Z +C X +C X +C X +A Y +C X +B X +C Z +C Z +C X +C Z +C X +A Y +A Z +C Z +C Z +B X +C Y +A Z +A Y +C Z +C X +C Z +C X +A X +A Y +C Y +A X +C Z +C X +C Z +B X +C X +C Z +B Z +C Z +C Y +C Y +A X +C Z +C X +C Y +C Z +C Z +A Y +C Z +C Y +C Y +A X +B Z +C Z +A X +C Y +C Y +C Z +A X +C X +C Z +C X +C X +C Z +C Y +C X +C Z +B Z +C Y +A X +A X +C X +C Z +A X +C X +B Z +C Y +C Z +C Y +C X +C Z +B Y +C X +C Z +A X +C X +A X +C X +C Z +B Z +C Z +C Z +A Z +C Y +C X +A X +C Z +A X +A Y +C X +C Z +C Y +A Y +C Y +C X +A X +C X +C Y +C X +C X +C Z +C Z +C X +C Z +A X +A X +C X +C Z +B Z +A X +C X +C Z +C Y +C X +B Z +C X +C X +C X +B X +C Y +A Y +C Z +A Z +A Y +A Y +C Y +B Z +C Z +C Y +C X +C Z +C X +B Z +B X +A X +A Z +A Y +C Z +C Y +C Y +C X +B Y +C Y +C X +C X +B X +C Y +C Z +B Z +C X +C Y +A Y +C Z +C X +C Z +A X +C Z +A X +A Y +C Y +A Y +C Y +C Z +A X +C Y +C Y +C X +B X +C Z +C X +C Z +C Z +C Z +C X +C Z +C Y +C X +C Y +C X +C X +C X +C X +A Y +C X +A Y +C X +C Z +A X +A Z +C Z +C X +C X +C X +C X +B Z +C Z +C Z +C Y +C X +C Z +C X +B Z +B Z +C Z +C Z +C X +C X +C Z +B Z +C X +A Y +C X +C Z +C X +C Y +C Z +C Z +C X +C Z +A Y +A Y +C X +C Z +C Z +C X +C X +B Z +C X +C Z +C Z +C X +C Z +A X +C Z +B Z +C Z +A Y +C Z +C X +C X +B Z +A Y +C Z +A Y +C Y +A Z +C X +A X +C X +A Y +C Z +C X +C Z +C Z +C X +C Z +A X +B Z +C Y +C Z +C Z +C X +C Z +B Z +C Y +C Z +C Z +A X +B Z +A X +B Z +C X +C Z +A Z +A Z +C X +A X +A X +B Z +A Y +A Y +A Z +C X +C Z +C Z +C X +C X +C X +A X +C X +C Z +C Y +C Z +C X +C Z +C X +A X +A Y +C X +A X +C X +B Z +B Z +B X +C X +A X +B X +C X +A Y +C Z +C Y +C Z +C X +A X +A Y +C Z +B Z +C X +B Z +C Z +B Z +A X +A X +C Y +B Z +C X +B Z +A Y +C Z +A Y +C Z +C X +A Z +C Z +C Z +B Z +A Y +B Z +C Y +C X +A Y +A X +A X +C X +C Y +B Z +C X +C Z +C Z +A X +A Y +C X +C Y +B Z +C Z +C X +A X +C Z +C X +C X +B Z +C Y +A Y +A X +C Z +B Z +C X +C Z +A Y +C X +B Z +C Y +B X +C X +C X +C Y +A Y +A X +C Y +C Y +C Z +C Y +C Y +C X +B X +C X +A Y +C Z +C Z +A Y +C Z +C Z +C Z +C Z +C Z +C Y +A Y +C Z +A X +C Y +C Z +C X +C Z +C X +A Z +C X +A Y +B Y +B Z +A Y +A Y +C Z +C X +B Z +B X +B Y +C X +C Z +B Z +A X +C X +C X +C Y +A X +C Z +C Y +A Y +A X +A X +B X +A Y +C Y +C Z +C Z +C X +C X +A X +C Z +A Z +A Y +A X +C X +A Y +B Z +C X +C Z +C Y +C Z +C Z +C X +C Z +A X +A Y +C X +C X +C X +C Z +C Y +C Z +B Z +C Z +B Z +A Y +A X +C Z +C X +C Z +C X +A X +C Z +C Z +C X +C X +C Z +A Y +A Z +A Y +C Z +C Z +C X +C Y +C X +C Y +A X +C X +A Y +B Z +B Z +C X +C X +C Z +C X +A Y +A Z +A Y +C X +C Z +A Y +C Y +C Z +B Z +A X +C X +C Z +C Z +A Y +A Y +A Y +A Y +C X +B Z +A Z +B X +A X +B X +C Z +C Z +C Z +B Z +A Y +C Z +C Y +C X +C Y +A Y +C X +C Y +C Y +A X +C Y +C X +C X +C X +C X +A Y +A Y +C X +C Z +C Z +A Y +C Z +A Y +C Z +C Z +C X +C X +C Z +C Y +C Z +A X +A X +C Y +B Z +A X +B Z +B Z +C X +C Z +C Y +A X +C Z +C Y +C Z +C Y +A Y +B X +C Y +C Y +C X +C X +C Z +C Z +C X +A Y +C Z +B Z +C Y +C X +C Y +C Z +C X +A X +A Y +C Z +B Z +C X +C Z +C X +C Z +C X +A X +C Z +A X +B Z +C X diff --git a/day02/part1.rb b/day02/part1.rb new file mode 100644 index 0000000..150ee75 --- /dev/null +++ b/day02/part1.rb @@ -0,0 +1,34 @@ +def play(them, us) + us + case them + when 1 + case us + when 1; 3 + when 2; 6 + when 3; 0 + end + when 2 + case us + when 1; 0 + when 2; 3 + when 3; 6 + end + when 3 + case us + when 1; 6 + when 2; 0 + when 3; 3 + end + end +end + +rounds = $stdin.readlines.map(&:strip).map(&:split) + +score = 0 + +rounds.each do |them, us| + ti = {?A => 1, ?B => 2, ?C => 3}[them] + ui = {?X => 1, ?Y => 2, ?Z => 3}[us] + score += play(ti, ui) +end + +puts score diff --git a/day02/part2.rb b/day02/part2.rb new file mode 100644 index 0000000..871a332 --- /dev/null +++ b/day02/part2.rb @@ -0,0 +1,35 @@ +def whatplay(them, outcome) + case them + when 1 + case outcome + when 0; 3 + when 3; 1 + when 6; 2 + end + when 2 + case outcome + when 0; 1 + when 3; 2 + when 6; 3 + end + when 3 + case outcome + when 0; 2 + when 3; 3 + when 6; 1 + end + end +end + +rounds = $stdin.readlines.map(&:strip).map(&:split) + +score = 0 + +rounds.each do |them, outcome| + ti = {?A => 1, ?B => 2, ?C => 3}[them] + oi = {?X => 0, ?Y => 3, ?Z => 6}[outcome] + score += whatplay(ti, oi) + score += oi +end + +puts score diff --git a/day02/test b/day02/test new file mode 100644 index 0000000..db60e36 --- /dev/null +++ b/day02/test @@ -0,0 +1,3 @@ +A Y +B X +C Z -- cgit v1.2.1