From 89213d9e62427d889be68e64f51e8274c12c5bcf Mon Sep 17 00:00:00 2001 From: Orfeas Chatzipanagiotis Date: Wed, 7 Dec 2022 17:37:03 +0200 Subject: Day 2 --- .gitignore | 1 + day1/solution.nim | 4 +- day2/example.txt | 3 + day2/input.txt | 2500 +++++++++++++++++++++++++++++++++++++++++++++++++++++ day2/solution.nim | 53 ++ 5 files changed, 2559 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100644 day2/example.txt create mode 100644 day2/input.txt create mode 100644 day2/solution.nim diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a4bd26d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +solution diff --git a/day1/solution.nim b/day1/solution.nim index 09002e0..189fc22 100644 --- a/day1/solution.nim +++ b/day1/solution.nim @@ -2,13 +2,13 @@ import std/strutils import std/algorithm import std/strformat -let input = readFile("./input.txt").split({'\n'}) +let content = readFile("./input.txt").split({'\n'}) var sum : int sums: seq[int] -for line in input: +for line in content: if line.isEmptyOrWhitespace(): sums.add(sum) sum = 0 diff --git a/day2/example.txt b/day2/example.txt new file mode 100644 index 0000000..db60e36 --- /dev/null +++ b/day2/example.txt @@ -0,0 +1,3 @@ +A Y +B X +C Z diff --git a/day2/input.txt b/day2/input.txt new file mode 100644 index 0000000..b94766c --- /dev/null +++ b/day2/input.txt @@ -0,0 +1,2500 @@ +C Y +A Z +B Y +A Z +A X +A Z +B Y +A Z +B Y +C Z +B Y +C Z +A Z +C Y +B Y +B Y +B Y +C Y +B Y +B Y +A X +B Y +A Y +B Y +B Y +B X +A Y +C Z +C X +A Z +B Y +A X +C Y +C X +C Z +C X +B Y +B Y +B X +A Z +A X +C Y +A Z +C Z +B X +C X +B Y +C X +C Z +C Y +C Z +A Y +A Z +C Z +A Z +A Z +A Z +A Z +B Y +A Z +B Y +B Y +B Y +B X +A Z +B X +C Z +C Z +A Z +A Z +B Y +C Y +A X +C Y +C Y +B Z +B Y +C X +A X +A Z +C Z +C X +B Y +A X +C X +B Y +C X +B Y +C X +B Y +C Y +A Z +C Z +B X +C Y +B Y +A Z +B X +C Z +C Z +B Y +C Z +C X +A X +A Z +A Z +A Y +C Z +C Y +A X +C Z +C Y +A Z +C X +B X +A Z +B Y +A Z +B X +C X +A Z +C Y +C Z +B Y +C Y +C X +A Z +C X +C X +B Y +B Z +A X +B X +C Y +A Z +B Y +C Z +B Y +C Z +B X +B Y +B X +B Y +B Y +B Y +C Y +A Z +A Y +A Z +C Z +B Y +C Z +B Y +C Y +A Z +B X +B Y +C Z +A X +A Y +C X +B X +A Z +C X +A Y +A X +A Z +A Z +A Z +B Y +B Y +B Z +B Y +C Y +B Y +A Z +C X +A Z +A X +B Y +A X +C X +C X +A X +B X +C X +C Z +B Y +B Y +C Y +B X +C X +A Z +B Y +B Y +C Z +A Z +B Y +B X +C Z +A Y +B Y +A Y +C Y +C X +A X +B Y +C X +B Z +B Y +B Y +A Z +C Y +B Y +B Y +A Y +B Z +B Z +A Y +B Y +C Y +A Z +B Y +C Z +A Z +B Y +A Z +C Y +A X +B Z +C X +C Y +B Y +C Y +A Z +A Z +B Y +B Y +C Y +A Y +A Y +C Y +A Z +C Y +B X +C X +A X +A Y +A Z +A Y +A Z +B Y +B Y +B Y +A Z +C Y +C Z +A Y +C Y +A Z +A Z +C Z +B Y +A Z +C Z +B Y +C Y +C Z +C X +B Y +A Z +B Y +B Y +A Z +C X +B Y +A Z +B Y +C Y +A Y +A Z +C X +A Z +A Y +C Y +A Z +C Y +C Y +B X +A Z +B Y +A Z +C Y +B Y +B Y +B Y +A Z +C Z +C Y +B Y +C Z +C Y +C Y +C Y +A X +B X +C X +B Y +B Y +B X +B Y +B Y +C Z +B Y +B Z +C X +B Y +C Y +C Y +B X +A Z +B Y +B Y +A Z +B Y +C Z +B Y +B Y +A Z +C Z +C Z +A Z +C Y +B Y +B Y +C Y +B Z +A Y +C X +A Z +B X +C Y +A Z +C Z +B Y +B X +B Y +B Y +B Y +C Z +A Z +B Y +B X +B Y +B X +B X +C Z +A Z +B Y +C Z +A Z +C Y +C Y +A Z +A Z +A Y +B Y +C X +A Z +B Y +A Z +A Z +A Z +A Y +A Z +A Z +A Y +A X +A Z +C Z +C Y +C Y +C X +A Z +A Y +B Y +A Z +A Z +B Y +B X +B Y +A Z +A X +B Y +C Y +C Y +A Z +C Y +C X +B Y +A X +A X +C Y +A X +C Z +C X +C Y +B Y +A Z +C Y +A Z +A Z +C Z +B Y +A Z +A Y +A X +C X +C X +B Y +C X +B Y +C Z +A Y +B Y +C Y +C X +B Y +C Y +A Z +B Y +A X +C Y +A Y +A Z +A Z +B Y +A Z +A Z +C X +B Y +B Y +A Z +B Y +C Y +C Z +A Z +C Z +C Z +B Y +A Z +B Y +A Z +B Z +C Z +A Y +B Y +B Y +B Y +C Y +A X +A X +B X +B Y +C Z +C Y +C Y +C Y +A X +B Y +B Y +C Z +C X +B Y +A X +A Z +C Y +C Y +A Z +A Z +C Z +A Z +C Y +B Y +A X +B Y +C Z +A Z +A Y +B Y +B Z +C Y +C Y +C X +B Y +C Y +C Y +C Y +C Z +B Y +A Y +A Y +A Z +B Y +C X +B X +B X +B X +A Z +B Y +C Z +C Z +C X +B Y +B Y +B Y +A X +A Z +A Z +B Y +C Y +B Y +C Y +B X +A Z +B Y +B Y +B Y +B Y +B Y +B Y +C X +A Y +B Y +B Y +C Y +A Z +B Y +C X +B X +C Z +C X +A X +C X +B Y +B Y +C X +B Y +C Y +A Z +B Y +A X +C Y +A X +C Y +C Y +B Y +A Y +A Z +B Y +C Z +C Z +B Y +C Z +A Z +A Y +A Z +C Y +C Z +B Y +C Z +A Z +C X +A Y +C Z +A Z +B Y +C Z +C Y +B Y +A Z +B X +A Z +B X +C Z +B Y +A X +C Y +A Z +C Y +B Y +B Y +B Y +C Y +B Y +B Y +C X +A Z +A Z +B Y +C Y +C Z +C X +A Z +C Y +B X +B Y +A X +B Y +A Z +A Z +B Y +B X +C Z +C X +B Z +A Y +B Y +B Z +C Y +A Z +B X +C Y +B Y +C Z +B Z +A Y +A X +C X +B Y +C Y +A X +A Z +B Y +A Y +B Z +C X +B Y +C Y +C X +A Z +A Y +A Z +B Y +C Z +B X +A X +B Y +B Z +A Z +C Y +C X +A Z +C Y +C Z +B X +A Z +B X +A Z +A Z +C Y +B Z +C Y +C Y +B Y +C X +B X +A X +A Z +C Z +B X +B X +B X +B Z +B Y +B Z +C Y +B Y +C Y +C Z +A Z +A X +B Y +B Y +B Y +B Y +C X +B Y +B Y +A X +C X +B Y +C Z +C Y +A Z +A Y +B Y +C Y +B Y +C X +C X +B Y +B Y +B Y +C Y +A Z +A Y +C X +A Z +A Z +B Y +C X +C Y +B Y +B Y +C Y +C X +B X +C Y +B X +A Z +B Y +C X +B X +C Y +C Y +A Z +B Y +A Z +C Y +A Z +A Z +C Z +C X +C Y +A Z +C Z +A Z +B Y +A X +B Y +B Y +A Z +C X +B Z +B Y +C X +A Y +B Y +A Z +C Z +A Z +A Z +A Z +B Y +B Y +B X +B Y +B Y +B Y +C Z +B Y +A Z +C X +C Z +A Z +C Z +C Y +B Y +C Y +B X +C Y +B Y +A Z +B Y +C X +B Y +A Z +C Y +B Y +C Y +C Z +A X +B X +C X +B X +A X +B Y +A X +C Z +B Y +C Z +B Y +B Y +C Z +B Y +A Y +C Z +B Z +A Z +C X +A Z +A Z +B Y +B Y +C Y +C Z +C X +A Y +B Y +B Y +A X +A Y +B X +C Z +C Z +B Y +C Y +B Y +C X +B Z +A Z +A Z +B Y +A Y +A Y +A X +A Z +B Y +A X +B Z +C Z +B X +C Z +B X +B Y +A Y +B X +A Z +A Z +C Z +A X +C Z +B Y +A Y +C Z +C X +B Y +B Y +A X +C Y +C X +C Y +C X +A X +B Y +B X +B Y +C Y +C Y +C X +A Y +A Z +C Y +C Y +B Y +B X +B Y +B X +A Z +A Z +C Z +B Y +B Y +B Y +B X +C Z +A Y +A Z +B Y +B Y +B Y +B X +A X +B Y +C Z +A Z +A Z +C Y +C Y +B Y +B Y +A Z +B Y +A X +A Z +C Z +A Z +B Y +C X +B Y +A X +B Y +B X +B Y +B X +C X +A Z +C Z +C Z +B X +A Z +B Y +A Z +B X +B Y +A Z +C Y +B Y +A Z +A X +B Y +A Z +B Y +B Y +C Y +A Z +B Y +B Y +C Y +A Z +C Z +A Z +C Z +B Y +A Z +B Y +A Z +C Y +B Y +A X +A Z +B Y +B Y +C Z +C Z +C Z +B Y +C Y +A X +C X +A X +C Y +A Y +B X +B Y +C Z +B Y +B Y +B X +C Z +B Y +C X +A Z +C X +B Y +A X +C X +C Y +A Z +A X +C Z +C Z +B Y +C Y +A Y +A Z +A Y +C X +C X +B Y +C Y +B Y +A Z +C X +B Y +C Y +A X +A Z +C Y +B Y +B Y +A Y +C X +B Y +C Y +B Y +B X +A Z +C Y +C Y +A X +C X +A Z +C X +B Y +A X +C Z +B Y +C X +B Y +A Z +A Y +B Y +B X +B Y +C Y +C Z +B Y +A Z +A X +B X +C X +C Z +B Y +B Y +C X +C Z +A Z +C Y +C Z +B Y +A Z +B Y +B Y +C Z +C Z +B Y +C Y +B Y +A Z +B X +B Y +B Y +C X +A Z +A Z +B Y +C Y +B Y +A Z +A Y +A X +C Z +C Y +C Z +C Z +C Z +A Z +B Y +C Z +A Z +C Y +A Z +B Y +B Y +B Y +A Z +B Y +B X +B Y +B Y +B Y +B Y +B Y +B Y +A X +C Z +B X +B Y +C X +A Z +B Y +B X +C Y +B Y +C Y +B Y +A Z +B Y +C Y +A X +B Y +C X +B X +B Y +C Z +B X +C X +C Y +C X +C Y +C X +A Z +C X +B Y +A Z +B X +A Z +B X +B X +A Z +C Z +A Z +B X +B Z +C X +C Y +A X +A Z +B X +C Y +A Z +C Z +B Y +B Y +C Y +B Z +B Y +B Y +C Y +C Z +B Y +A Z +A X +B X +B X +C X +A Z +C Y +B Y +B Y +A Z +B Y +A Z +A Z +B Y +B Y +B Y +B Y +C X +B Y +B X +C Z +B X +C X +B X +B Y +B Y +B Y +A Z +B Y +A X +A Y +C X +B X +B Y +B Y +C Z +A Y +C Z +C Y +A Z +C Z +C Z +B X +B Y +A Z +B Y +C X +C Y +C Y +B X +B Y +B Z +A Y +A Z +C X +A X +B X +C X +B Y +B Y +B Y +B X +C X +B Y +A Z +A Z +A Y +B X +C Y +C Z +A Z +A Z +B X +A Z +C Y +B Y +A X +B X +A Z +B Y +B Y +B Y +B Y +C Z +C Z +A Y +B Y +C Z +C Z +B Y +B X +A Z +C Y +C X +A Z +A Z +C Y +C X +C Y +A Y +B Y +C X +B Y +B X +C Z +C X +C Y +B Y +B Y +A Z +B Y +C Z +C Y +B X +B Y +A Z +A Z +B X +B Y +A X +A Z +B Y +B Y +B Y +B Y +B Y +C Y +B Y +B Y +C Y +B Y +B Y +C Z +B Y +A X +C Y +B Y +A Z +B Y +C Z +C Z +C Y +A Y +B Y +A Z +A X +C Y +C Z +C Y +C Z +C Z +C Y +B X +B Y +B Y +C Z +C X +A Y +C Y +B Y +B Y +A Y +A Y +C X +C Y +A Z +A Z +A X +B Z +B X +A X +A Y +A Z +B Y +C Y +B X +B Y +B Y +C Z +C X +B Y +B Y +B Y +B Y +C Y +B Y +B X +C X +C Y +B Y +A Z +A Y +A Z +C Z +C Y +A Z +A Z +B Y +B Y +C Y +A X +B Y +A Z +B Y +A Z +B Y +B X +C X +C Y +A Z +A Y +B Y +C X +A Z +B Y +A Z +C Y +B X +B Y +B X +C Z +C X +B Y +A Z +B Y +B X +A X +C Z +C X +A Z +A Y +A X +A Z +A Z +A Z +C Y +A Z +B Y +A Z +A Z +C Z +B X +B Y +B Y +B Y +B Y +A Z +B Y +C Y +A Z +A Y +B Y +B Y +C Y +C Y +A Z +C Z +A Z +B Y +B Y +A Z +A X +A Z +A Z +C Y +C Z +A Z +C X +A X +B Y +C Y +C X +C Z +B Y +C Y +A Z +A Z +C Z +A Z +A Z +A X +B Y +C Y +A Z +C X +C Y +B Y +C X +B X +B Y +C Y +A Z +A Z +A X +B Y +A Z +B Y +B Y +C Z +C Z +A X +A Y +B Y +C Z +B Y +B Y +C X +A Z +C Z +A X +B Y +A Y +B Y +C Z +B Y +C X +B Y +B X +B Y +B Y +C Y +B X +B Y +A Z +A Z +B Z +A Z +B Y +B Y +A Y +A Z +C Z +C Y +B X +B Y +C Y +B X +C X +B Y +C X +A Z +B Y +B Y +B Y +C Y +B Y +B Z +A Z +B Y +A Z +C Y +B Y +B Y +B Y +B Y +C Z +B Y +B Y +B Y +A Z +C Z +B Y +B X +A Z +C X +C Y +C Z +B Y +A Z +C Y +A Y +A X +C Y +A X +A Z +A Z +B X +B Y +B Y +C Y +B X +B Y +A Z +B X +B Y +C Y +B Y +C X +A Z +A Z +A Z +A Z +C Z +A Y +C Z +C Z +C Z +B X +B Y +B X +A Z +A Y +B Y +A X +C X +C X +B Y +B Y +B Y +A X +A X +B Y +C Z +B Y +A Z +C Y +B Y +B Y +A Z +C Y +C Z +A Y +A Z +B Y +C X +C X +A Z +B Y +C Y +A Z +A Z +C Z +C X +B Y +C Z +C Z +B Y +A Z +A Z +B X +C X +B Y +C Y +B Y +C Y +B Y +B Y +A Z +A Y +B X +C Y +B Y +C X +C X +C Y +A Z +B Y +C Y +B Y +C Y +B Y +A Y +B Y +A Z +C X +C Z +C Z +C Y +B Y +C Y +B X +B X +A X +B Y +A X +B Y +A Z +C X +B Y +A Z +B X +B Z +B Y +B Y +C Y +B Y +A Z +B Y +C Y +C Z +A Z +C Z +B Y +B Y +B Z +A Z +B Y +C Z +B X +A Z +A X +B X +B Y +A X +B Y +C Y +A Z +A Y +B Y +A Z +B Y +A Y +B Y +C Z +C Z +C Y +C Z +B Y +A Z +B X +B Y +C Y +B Y +C Y +C Y +A Z +A Z +C X +A Y +C Z +B Y +B Y +B Y +C Y +B X +C Y +B Y +A Z +A Y +B Y +B Y +B Y +C X +B Y +C Z +A Y +B X +A Z +A Z +C X +B Y +B Y +A Z +A Y +A Y +C Z +A Z +A Y +B Y +C X +A X +A Y +B Y +A X +B Y +B X +C Y +C Z +C X +B Y +C Y +A Z +B X +A Z +B Y +B Y +B Y +C Y +B Z +C Z +C Y +B Y +C Y +B X +A X +B Y +B Y +A X +C Y +C Y +C Z +B X +A Z +C X +A Z +A Z +C Z +C Y +B Y +C Y +C X +A Z +C Z +B Y +A Z +A Z +C Z +A X +B Y +B Y +C Y +A Z +B X +B X +B X +B Y +B Y +B Y +B Y +A X +B Y +B Y +B X +C X +A Z +A Z +A Z +A Z +B Y +A Z +A Z +B X +A Z +C Y +B Y +B Y +B Y +B X +C Z +A Z +B Y +C X +A X +C Z +B Y +C Y +C Z +A Y +C Z +C X +C Y +B Z +B Y +B Y +B Y +A Z +C Z +A Z +A Z +C Z +B X +C Z +C Y +B X +B Y +C Y +B Y +B X +A Y +B Y +A Z +A Z +B Y +B Y +B X +B X +B X +B Y +A Y +C X +C Y +B Y +C X +B X +A Z +B Y +C X +B Y +B Y +B Y +B Y +A Z +B Y +C Z +B Y +C Z +A X +A Z +C Y +B Y +C Z +B Y +A Y +C X +C X +C Y +A Z +B Y +C X +B Y +B Y +A X +C X +A Z +C X +A Z +B Y +C Y +B Y +B Y +C Y +A Z +A X +C X +B X +B Y +B Y +A Y +B Y +B Y +C X +A Z +B Y +A Y +B Y +B Y +B Y +C Y +B Y +C X +B X +B X +C X +A Z +C X +C X +C Z +B Y +B Y +B Y +B Y +C Z +B X +B Y +B Y +A Z +A X +A Y +A Z +C Y +B Y +B Y +C X +B Y +B Y +B X +A Y +C Y +B Y +B Y +B Y +A Z +A Z +B X +C Y +B Y +A X +B Y +B Y +B X +B Y +A Y +C X +B Y +C Y +C Z +A Z +A Z +C Z +C Y +A Z +B Y +B X +B Y +B Y +C Z +B Y +A Z +C X +B Y +A Z +B Y +B Y +B Y +C X +A Z +A X +C Z +B Y +A Z +C Y +A Y +B Y +A Y +B Y +C Y +C Z +B Y +A Z +A Z +B Y +A X +C X +C Z +C X +B X +C Z +B Z +B Y +B X +C Z +B Y +C Y +C Y +A Z +B Y +B Y +B Y +B Y +C Y +A Z +B Y +A Z +C Z +A X +A Z +B Z +A Z +C Y +B Y +C Z +B Y +C Z +A Z +C Z +B Y +B Y +B Y +A Z +B Y +B X +B X +B X +A Z +C Z +C Y +B X +C Z +A X +B Y +C Y +B Y +B X +B Y +A Z +A X +A X +B Y +C Y +C Y +B Y +B Y +A Z +C Y +A X +A Z +C Y +A Z +C Z +C Y +A Z +C Y +C X +A Z +B X +B Y +A X +C Z +C Z +B X +C X +B Y +A Z +C Z +C Y +C Z +C X +C Z +A X +C Z +B X +C Y +C Z +B Y +C X +A Z +A Y +B Y +A Z +B Y +B Y +B X +C Z +B Y +B Y +B X +B Y +C Y +C Z +B X +B Y +C Z +B Y +B Y +B Y +B Y +A Z +C Z +C Y +B X +B X +B Y +B X +C Y +C Y +A Z +A Z +B X +B Y +B Y +C Z +C Z +B Y +A Z +C X +C Y +C X +B Y +B Y +C Z +C X +B Y +C Y +C Z +C Y +C X +C Y +B X +B X +B Y +B Y +B Y +C Z +B X +B Y +C X +C Y +C Y +C X +A Z +B Y +C Y +C Z +B Y +C Y +B Y +A Y +A Z +C Z +C Z +C Y +A X +C X +C Z +C Y +C Z +B X +C Z +B Y +C X +C Y +C Y +A Z +B Y +A Z +B Y +A X +C Z +A Z +C Z +B Y +B Y +B Y +A Z +A X +B Y +B Z +B Y +B Y +A Z +B Y +B Y +C Z +B Z +A Z +C X +B Y +A Y +B Y +C Y +C Y +C X +B Y +B Z +C Y +B Y +A Y +C X +A Z +A Z +B X +C Y +B Y +B Z +A Z +A Z +B Y +A Z +A Z +A Z +C Y +A Z +A Y +A Z +C Z +C Y +B Y +A Z +B X +B Y +A Z +A Y +B X +B Y +C Y +C Z +C Y +B X +C Y +B Y +B Y +A Z +A Z +B Y +C X +A X +A Z +A X +A X +C Y +B Y +C Z +A Z +B Z +B Y +B Y +B Y +C X +B Y +C Z +B Y +B Y +C Z +C Z +A Z +A Z +A Z +A Z +C Y +A Z +A Z +B Y +B Y +A Z +A Z +C X +C Y +A Z +B Z +B Y +C X +C X +B Y +C X +B Y +C Y +C X +B Y +C Z +A X +B Y +B X +B Y +C Y +B Y +A X +C X +B Y +B Y +B X +B Y +A Z +A Z +A Z +A Z +B Z +B Y +B Y +C X +A Z +C Y +B Z +A X +B Y +B X +B Y +A X +C X +B Y +B Y +A Z +B Y +C Z +A Y +B X +C X +B Y +B Y +A Z +C X +C Y +B Y +C Y +C Z +A Y +A Z +B Y +B Y +A Z +C Y +B Y +C Y +C X +C X +C Y +C Z +A Z +C X +B Y +A Z +B Y +C X +B Y +B Y +A Z +A Z +C X +B Y +A Z +B Y +A Y +B X +B Y +B X +A Y +B Y +B X +B Y +A Z +B Y +C Z +B Y +B Y +B Y +A Y +B Y +C Z +B X +B Y +A X +A Z +B Y +A Z +B X +C Y +B Y +B Z +C Y +B Y +C Y +C X +C X +C Z +B Y +B Y +B Y +A Z +B X +A Z +C Z +B Y +A Y +B Y +C Y +A Z +B Y +A Y +B X +B Y +C Y +C Y +A Z +A Z +B Y +C Y +C Z +A Z +A X +B Y +B Y +B Y +B Y +A Z +C Y +A Z +B Y +B Y +C Z +A Z +A X +C Y +B Y +B Y +A Z +B X +C Z +C Y +C Z +C Y +B Y +A Z +A Z +B Y +A Z +A Z +B Z +C X +C X +B Y +C Z +A Z +B X +A X +A Y +C Y +C Y +A Z +C Y +B Y +A Z +A Z +C Y +B Y +A Y +B X +C Z +B Y +B Y +A Z +B Z +C Z +B Y +B Y +B Y +A Y +C Y +A Z +A X +B Y +B Y +B Y +C Z +A X +B Y +B Y +C Y +B X +B Y +A Z +B Y +A Z +A Y +C Y +B Y +B Y +A Z +B X +A Z +A Z +A Z +B Y +A Y +C Z +B Y +B X +B Y +B Y +B Y +B Y +B Y +A X +C Z +B Y +B Y +B Y +C Z +B X +A Y +B X +C Z +B Y +C X +C X +A Z +B Y +B Y +A Z +C X +C X +A Z +B X +B Y +C X +C Z +A X +B X +B Y diff --git a/day2/solution.nim b/day2/solution.nim new file mode 100644 index 0000000..8bbd95b --- /dev/null +++ b/day2/solution.nim @@ -0,0 +1,53 @@ +import std/strutils +import std/sequtils +import std/tables + +let content = readFile("./input.txt").split("\n") +let rounds = map( + # Filter out empty lines + filter(content, proc(line: string): bool = not line.isEmptyOrWhitespace()), + # Split line into pair of strings + proc(round: string): tuple[other: char, self: char] = + var splitted = round.split(" ") + (splitted[0][0], splitted[1][0])) + +# example: rounds = [('A', 'Z'), ('C', 'Y')] +# echo rounds + +proc solve(dScore: array[3, array[3, int]]): int = + var score = 0 + for round in rounds: + let + i = ord(round.other) - ord('A') + j = ord(round.self) - ord('X') + score += dScore[i][j] + + return score + +let pt1 = [ + # A = Rock + # X Y Z + [1 + 3, 2 + 6, 3 + 0], + # B = Paper + # X Y Z + [1 + 0, 2 + 3, 3 + 6], + # C = Scissors + # X Y Z + [1 + 6, 2 + 0, 3 + 3], +] + +echo solve(pt1) + +let pt2 = [ + # A = Rock + # X Y Z + [3 + 0, 1 + 3, 2 + 6], + # B = Paper + # X Y Z + [1 + 0, 2 + 3, 3 + 6], + # C = Scissors + # X Y Z + [2 + 0, 3 + 3, 1 + 6], +] + +echo solve(pt2) -- cgit v1.2.3