From 62d4515b314e1c3d83181720e4acc64c587b0cf8 Mon Sep 17 00:00:00 2001 From: Joey Yakimowich-Payne Date: Fri, 2 Dec 2022 11:11:21 -0700 Subject: [PATCH] Day 2 --- day2/input1.txt | 2500 +++++++++++++++++++++++++++++++++++++++++++++++ day2/p1.nim | 84 ++ day2/p2.nim | 87 ++ 3 files changed, 2671 insertions(+) create mode 100644 day2/input1.txt create mode 100644 day2/p1.nim create mode 100644 day2/p2.nim diff --git a/day2/input1.txt b/day2/input1.txt new file mode 100644 index 0000000..4e8e187 --- /dev/null +++ b/day2/input1.txt @@ -0,0 +1,2500 @@ +A Z +B X +A Y +B X +C Y +C X +B Z +C Z +A Y +C Z +B Z +B X +B X +C X +C X +B X +B Z +C X +B Y +B Z +B X +C Z +A Z +B X +A Y +B Y +C Y +B X +B Y +B Z +B Y +B Z +A Y +C Y +B X +A Z +B X +C Y +C Y +C Y +A Y +B X +B Y +C Y +B Z +C Y +A Z +B Y +A X +B X +C X +B Y +B Y +B Y +B Y +C X +A Y +A Y +C Z +C Y +B Y +B Y +B X +A Y +C Z +B Y +B Z +B Y +A Y +C X +B Y +B X +C Z +C Z +B X +A Y +C X +B Z +C Z +C Y +C X +B Z +B X +A Z +B X +C Z +C Y +C Y +B Y +B Z +B Y +A Y +A Y +C Y +C Y +C Z +C X +B X +B Z +B X +C Z +A Y +A X +B Y +A Z +B Y +B X +C Z +C Z +B Y +B Z +B Y +B Z +C X +C X +A Y +C Y +C Z +B Z +C Y +B Z +C X +B Y +B X +C X +A Z +B Y +C Y +C X +C Y +C Z +B Z +B X +C X +A Y +B X +B Z +C X +C Z +B Y +B Y +C X +B Z +A Y +B Y +C Y +C X +C Z +C Y +A Z +C Y +C X +C Y +B X +C X +B Y +C X +B X +B X +B Y +B X +A Z +B Y +B Y +C X +C Y +B X +B X +C Y +A Y +A Z +C X +B X +A Z +A Z +A Y +C X +C Z +C X +B X +C X +C X +B Y +B X +B X +B X +B Y +A Y +C X +C Y +B X +C X +A Y +B Z +C Z +B X +C Y +B Y +C Y +B Z +C X +C Y +C Y +B Y +C X +C X +B Z +B Y +B X +C Z +B Y +B X +B Z +B Z +C Y +B Z +A X +C X +B Z +B Z +B Z +B Y +C Z +C X +C X +C Y +B Z +B Y +B X +A Y +B Y +A Y +C X +C Z +C X +B Z +B Z +C X +C Y +A Y +B Y +C X +C Z +C X +C X +C Z +C Z +C X +B Y +C X +A Y +C Y +C Z +B X +B Y +B Z +A Y +B X +B Z +B Z +B Y +B X +C Y +A Y +B Z +C X +B Z +B Z +B Y +B Z +B X +C Y +C X +C X +B Z +B Y +C Z +B Y +B X +C Z +C Z +B X +A Z +B Z +A Z +C Y +C X +B Y +C Y +C X +C Y +C X +A Z +C Y +B Z +B X +C X +C Z +C X +C Z +B Z +B Y +B Z +B Y +C X +B Z +B Z +B Y +B Z +C Z +B Y +B Z +C Z +C Z +C X +B X +C Y +B X +C Y +B X +B X +C Y +A Z +B X +B X +C Z +C X +C X +C X +C Z +C Z +C Y +C X +A Y +B Z +C Z +C Y +C X +B Y +B Y +A Z +B X +B Y +B Y +C Z +C Z +B X +C X +A Z +B X +C Z +B Z +C X +A Z +B X +C X +C X +A Y +B Z +B Z +B X +C Y +C Z +C X +A Z +B Y +C Y +C Y +C Y +C X +B Y +B X +B X +C X +B Z +C X +B Z +B Z +B X +C X +A Y +B Y +C Z +C X +B Y +B Y +C Z +B X +C X +C Z +B Z +A Y +B X +B Z +B Y +C X +C Z +A Y +A Y +B X +B X +B Z +B Z +C Y +C X +B Y +B X +B X +B Y +B Y +C X +B X +B X +A Y +B Y +B Z +B Z +C Y +B Z +C Z +C X +C X +C Y +C X +C Z +C Z +B X +C X +B X +C Y +C Y +B Z +B Y +C X +B Z +C X +B Z +A Y +C X +B X +B Y +C X +C Y +B X +B Z +B X +C Y +B Z +B Y +B Z +C X +C X +C X +C Y +B X +B X +B X +C X +B X +B X +B Y +B Z +B Y +C X +B Y +B X +B X +A Y +C Y +B Z +A X +C Z +C Z +B Z +A Y +C Y +B Y +B Y +C Z +C Y +C X +A Y +C Y +B Y +C X +A Z +C Z +A Y +C Z +C Z +A Z +B Y +C Z +C Z +B Z +A Y +C X +C Y +B X +B Z +B X +C X +B X +C Z +B X +B X +B Y +C X +B Z +C X +A Z +C X +B Z +C X +C Z +B X +C X +B Y +B X +B Y +B Y +C X +B Y +C Z +C X +B Y +A Y +C Y +B Z +A Z +A Z +C X +C Y +C Y +B Y +B Y +C Z +C X +A X +B X +C Y +B Z +B X +B Y +A Z +A Z +A Z +C Z +C X +B Y +B Z +C X +B X +B X +B Z +A X +C X +A Y +C X +B X +C Y +C X +B Y +B Y +B Y +C X +C Y +C Y +B Z +B X +C Z +A Y +B Y +C Y +C X +C X +C Y +A Z +C Z +C Y +C Y +C Y +C Y +B Z +B Z +C X +B Y +C Y +B X +C X +C X +C Y +C Y +C Y +C X +B X +B Y +A Y +A Y +B X +B X +C Y +B Z +C X +A Y +A Y +C Z +B Z +C Z +C Z +A Z +B Z +A Y +B Z +B X +C X +A Y +B X +B Z +B X +C X +C Z +B Z +A X +B Z +B Y +B Z +B X +C Z +B X +B Y +B Y +B X +B Z +C X +A Y +B Z +B Y +C Y +A Y +C Z +B Z +C X +B Y +C Y +A Y +C Y +A Y +C X +B X +B Y +A Y +B X +B X +A Y +B X +B Y +B X +B X +C X +B Z +B Z +B Y +A X +C X +B X +C X +B Y +C X +C Y +C Y +C X +A Y +A Y +B Y +C X +B Y +C Y +B Y +C Z +C X +C X +C X +B Y +C Y +C Z +B Y +C X +B X +B Y +A Y +C X +B Y +B Z +A X +B Z +B Y +C Y +C X +B X +C X +C Y +B X +C Y +B Y +C X +B X +A Y +C Y +C X +A Y +B Y +C Y +C X +B Y +B Z +B X +B X +C Y +C Y +C X +B X +C Y +B Z +C Z +B Z +B Z +B Y +A Z +A Z +C Z +C Z +A X +A Y +B Z +C Y +A Y +B Y +C Z +B Z +C X +C Z +B Z +B Z +B Y +A Y +B Y +C X +C X +A Z +B X +C X +C Z +C Y +B X +B X +C Z +C X +C Y +C X +B Y +B Y +C X +C Y +C Z +B Z +C Z +B X +B Z +C Y +A X +A X +B Y +B X +B Z +C X +C X +A Y +C X +C X +C Z +C Y +C X +B X +C X +B X +B X +A Y +A Y +C X +B X +B Y +C X +C X +C Z +C Y +A X +C X +B Z +B X +C Y +B Y +A Z +C Y +C Z +B X +B Y +C Z +C Y +C Z +C Y +C X +C Z +B Z +A Z +B X +C X +B Z +B Z +A Y +C X +B X +C X +B X +C X +B Z +A Y +C X +B X +C Y +C Y +C X +C Y +B Z +C Z +C X +B Z +C Z +C Z +C Z +B Z +C Z +B Y +B Y +C Z +A Z +A X +B Z +C X +B X +C Y +A Y +C X +C X +A Y +C X +C Y +B Y +C Z +B X +A Y +C X +C X +B X +B X +A Z +B Y +B Z +B X +B X +B Z +B X +B X +B Z +A Z +C Z +B X +B X +C Y +B Z +B Z +B X +B Y +B Z +C Y +B Z +C Z +C X +C Y +A Y +C Y +C X +B Y +C Y +C Z +B Y +C X +B Z +B Z +A Y +B Y +B Y +B X +C Y +C X +B X +C X +A Y +C X +C Y +B X +C X +C Y +C Y +B Z +C Z +B Y +B Z +A X +C Y +A Y +C X +B X +B X +B Y +C Y +C Y +C X +A Y +A Z +B X +A X +C Z +C X +B Z +C Y +B X +A Y +C Y +C Y +B X +A Z +A Y +B Z +B Y +B Z +B Y +C X +A X +A Y +B X +B Z +B X +C X +B Y +B X +B Y +B X +C Z +C X +A Y +C Y +B X +B Y +A Z +B Z +C X +C X +C X +A Y +C X +C Y +B Y +B Z +B Y +B X +A Y +C Y +C Y +C Y +C X +A Y +B Z +C Z +C Y +B X +C X +C X +B X +B Z +B Z +B Y +A Z +B X +A Y +B Y +C X +B Y +A Y +B X +C Y +C X +A Y +C Z +C X +B Z +C Y +B X +C X +A X +C Y +B X +B Y +B Y +C X +B Y +C Y +C X +B Y +A Y +C Z +C Y +B Z +C Z +B Y +C X +B Z +A Y +C Z +B X +B Z +C Y +B Z +C X +C X +A Z +B Z +A Y +B X +C X +C X +B Y +A Z +C Z +C X +B Z +C X +B Z +C Y +C X +C Z +C Z +C Y +C Y +C X +C X +C Y +B X +C X +B Z +C Z +C Y +C X +C Y +B Y +B Y +B Z +B X +C Y +C Y +C X +C Z +C Y +C Y +C X +A Y +B X +B Z +C Z +C Y +B X +C X +A Y +C Z +B Y +C Y +C X +C Y +C Y +B X +C Y +C Y +B Y +C X +A Z +B X +B X +B X +B X +B Z +C Y +B X +A Z +B Z +A Y +C X +B X +B Z +C Z +C X +B Z +B X +A Z +A Y +B Y +A Z +B X +C Y +B Y +C Y +C X +B Y +B Y +C Y +A Z +B X +B Z +B Y +B Y +B X +B Y +B Z +C Z +B Y +C X +A Y +C X +B Y +B X +A Y +C Y +C Y +B X +B Y +B Z +C Y +C Y +C Z +C Z +A Y +C X +B Z +C X +B Y +C Y +B Z +C X +C X +A Y +C Y +A Y +C X +C X +C Z +A Y +A X +B X +C Y +B Z +C X +B Y +C X +C Y +C X +B X +B Y +B Z +C Y +B Y +A Z +C Y +B X +C X +A Z +C Y +B X +B X +C Y +C Y +B X +C Y +C Z +C X +B X +C Y +B Z +B Z +A Y +C X +C X +C Y +B X +A X +A Y +A Y +C X +B Y +C X +C Z +B Y +C Y +B X +C Y +B Z +B Y +A Z +B X +B Z +B Y +B X +C X +B Y +C X +C Y +B Y +A Y +C X +C Z +B Y +C Y +C X +C X +C X +B X +C X +C Y +B Y +C X +C Y +C X +A Y +B Z +B X +C X +A Y +B Z +A Y +B Z +B Z +B Z +A Y +B X +C Y +C X +B Y +A Y +C X +C X +A Y +C X +C Z +B X +C Y +C X +B Z +B Y +A Y +C X +C X +B Y +B Z +B X +B Y +C X +B X +C Y +B X +A X +B Z +B Y +B Y +C X +B X +C X +C X +C X +C X +B X +B Z +B X +B Z +B X +C X +B X +C Z +B Y +B Z +B Y +C X +B X +B Z +A Y +B Z +C Y +B X +B Y +C Z +C X +B X +A Y +A Y +B X +A Y +C Y +C X +A X +C Y +C Y +C X +C X +C Z +C Y +B X +A Y +C X +B Y +B Z +B Z +C Y +B Y +B Y +B Y +C Y +B Y +B Z +B Z +B Z +A X +B X +C Y +C Y +C Y +C Z +B Z +B X +C Z +C Y +A Y +A Y +C Y +B Z +C Y +C Z +A Z +C Y +A Y +C Z +C X +B Z +B Y +B Y +A X +C X +B Z +B X +B Z +C Z +B X +A Y +B Z +C X +C Y +B Y +C X +B Z +B Z +B Z +C X +B Z +B Y +B Y +B Y +C Y +A Y +B X +A Y +C Z +C X +C X +C X +C X +C Y +B Y +B X +C X +C X +B Z +A Z +C X +C Z +B X +B Z +C Y +B X +B X +B Y +C Y +B Z +A Z +B X +C Y +B Z +B X +C Y +B Z +B X +C Z +C X +C Z +B Z +A Y +B Y +A Z +C Z +B Z +B Z +B Z +C Z +C X +A Y +C Z +B Z +B X +B X +B Y +A Y +B Y +C X +B Y +C Z +C Y +B Z +C X +A Z +B Z +C Y +C Z +B X +C Z +A Y +A Y +A Y +C Z +C Z +B Y +C X +C Z +C X +C Y +B Z +C Z +B Y +C Y +A Y +B X +B X +B X +B X +C Y +C Y +C X +B Z +B X +A Y +B X +B X +C Y +C Y +C Y +C Y +B Z +B Y +C X +B Y +B X +C X +C X +B X +C X +C X +B X +B Y +B X +B X +B Y +B X +C Y +B Y +C Y +C Z +C X +B Z +B Z +B Y +C Z +C Z +C Y +B X +B Y +B Z +B Z +A Z +C X +C Y +B X +B X +C X +B Z +C X +B Y +C X +C Y +B Y +B Y +A Z +B Y +B X +C Y +B Z +A Z +B Y +C Y +C X +B X +B X +B Z +C Z +C Z +C X +B Z +B X +A Y +C X +A Y +A Y +B Y +C Y +B X +C Z +B Z +B X +C X +A X +C Z +B Z +B X +C Y +C X +B X +C Z +C Y +B Z +C Y +B Y +C X +B Z +A Y +C X +C Y +A Y +B Y +B Y +C X +B X +B Y +B Y +B Y +A Y +A Y +C Z +C Y +B X +A Y +C X +C X +C Y +C X +A Y +B Y +C Y +B X +C Y +C X +C X +C X +A Y +A Y +B Y +B X +B Y +B X +C X +C Y +B Z +B Y +C Y +C Z +A Z +B X +B Z +C Z +A Y +C Y +B X +C X +B X +B Z +C Y +B X +B Y +B X +B Z +C Y +C Z +A Y +C Y +A Z +B Y +A Y +A Y +C X +A X +A X +C Y +C Z +C Y +B X +C X +B Z +B Y +C X +C X +A Y +C X +C Y +C X +C X +C X +C X +C Z +B X +A Y +C Y +B Z +B Z +C Z +B Y +B X +B Y +C X +C Y +B Y +B X +B Y +C X +B Z +B X +C Z +C Z +B Z +C Y +A X +C Z +C X +C X +A Y +B X +C X +B Z +C X +B Y +C Z +B X +B Y +C Y +B Z +B Z +C X +C X +B Z +C Z +B Y +B Y +B Z +B X +C Y +C Y +B X +B X +B X +B Y +B Z +B Y +C X +C Y +C Z +B X +B Y +C X +B X +A Z +A Z +C Z +C Z +C X +C Y +C X +B Y +C X +C X +B Z +B Z +B Y +C Y +B Y +B Y +B X +B X +C Y +A Z +C Y +B X +B Z +B Y +A Y +C Z +B Z +C Y +C Z +C Y +C Z +B Z +B Z +C X +C X +B X +B Y +B X +A Z +B X +B Z +B X +B Y +C Y +B Y +C Z +C X +A Y +A Y +C Y +B Y +C Y +B X +B Y +C Z +A Z +B X +B Y +B Y +B Y +B X +C X +C Y +C X +B X +B X +B X +B Y +B X +B Z +B Y +C Y +A Z +C Z +B Y +C Y +B Z +B Y +B Y +C X +B X +C Z +C X +B X +A Y +B Z +C Y +C Y +B Y +B Y +A Y +A Z +B X +B Z +B Z +B Z +B Z +A Y +B Z +B X +C X +C Y +B Y +C Y +B X +C X +A Y +C Z +B X +B X +B Y +A X +B X +C Y +B Z +A X +C Y +C Z +C Z +B X +C X +A X +C X +A Z +B X +B Y +C Z +B Z +B X +C X +B X +C Z +C X +B Z +A Z +A Y +C X +C Y +B X +C X +A Y +C X +B X +B Z +C Y +B X +C Y +C X +B X +C X +C Z +A Z +C Y +C Y +C X +C Z +A Y +C X +C X +C X +C X +B Y +B Z +C X +C Y +C X +B X +A Y +C Y +A Y +A Z +B X +C Y +C X +C Y +C X +B X +B Y +B X +C X +B Z +B Z +B Y +B X +B X +B Y +B Y +A Y +C Y +B Z +B X +C Y +C Y +C X +A X +B Z +C Y +B X +C Y +B Y +C X +C Y +C Z +A Y +C X +A Z +C X +B Y +C X +B X +B Z +B Z +B Y +B Z +B Z +B X +C X +B X +B Y +B X +B Z +C Y +B X +C X +C Y +C X +B Y +B X +C X +B X +C X +B Y +C Z +C X +B Z +A Y +B X +A Y +B Y +B X +C Y +B X +B Z +C Z +B Y +C X +A Y +B Y +C X +C X +B Y +C Y +B Z +C X +B Z +B X +C Y +C X +C Z +B X +C Z +B X +B X +C Y +B Y +C Y +B Y +C X +A Y +B X +C X +C Z +C X +A Y +B Z +A Y +B Z +B X +B Z +B Y +A Y +C X +B Y +C Z +A Y +B X +C X +C Z +C X +C X +B X +C X +C Z +B Z +C Z +B X +C Z +B Z +B Y +B X +B X +B X +C Z +C Y +A Y +B Z +B X +B X +C Z +A Y +B X +C Y +B Z +C X +B Y +C Y +B X +B X +B X +B Y +B Y +C X +C Z +B Z +C X +B Y +B Z +B Z +B Y +B Y +C X +B Y +B Y +B Z +A Y +C Y +C X +B X +C Y +C X +C X +B X +B Z +C X +A Y +B Y +C Z +C Y +B X +B X +B Z +C Z +C X +A Y +C Z +C X +C X +B Z +B X +C Y +B Y +B Y +C Z +B Z +A Z +C X +A Y +C Y +B X +C X +B X +A Y +C X +C Z +C Y +A Z +C X +B Z +B Y +A Y +C X +B X +C Z +C Y +C Y +B Z +C X +C Y +B Z +B Y +C X +C Z +B Z +A Z +C Z +B X +C X +C X +C Y +C X +B Z +C X +C Y +C X +B Z +B Z +A Z +B Z +B X +B X +C Y +C Z +B Z +C Y +C Z +B X +A Y +B X +C X +B Y +C X +B Y +B X +C X +B Z +C Y +C X +B X +B X +B X +B Y +B Y +B Y +A X +B X +C Y +C Z +B Z +C X +A Y +C X +C Y +B Y +C Y +C X +B Z +B Y +B Y +B Z +C Y +C Y +A X +C Z +B X +B Z +B Y +C X +C Y +B Y +C Z +B Z +C X +B Z +C X +B Y +B Z +C X +C X +B Y +B Y +B Y +C X +B Y +B Z +B Y +A Z +B Z +A X +C Y +A Y +C Y +B Z +B X +A Y +C X +B X +A Y +B Y +C X +B Y +C X +B X +B Z +A Y +B Z +B X +C Z +C X +B Z +C X +A Y +C Y +C Y +A Y +B Y +C X +C Y +C X +B X +C Y +B Z +B X +B Y +B X +C X +B X +C Y +C Y +B Y +B Z +C Z +B X +C Y +C X +A X +A Y +B Z +B Y +A Y +C X +C X +C Y +B X +C Z +C Z +B Y +B X +C X +A Y +B X +B X +C Z +C X +C Z +B X +B X +B Y +B Y +C Y +C X +A Z +C Z +B Y +C X +B Z +C X +B X +C X +B Z +C Z +B Y +B X +B Y +C Y +B Y +C Z +A Z +B X +C Z +B Y +C Z +C X +A X +B Z +B Z +C Y +C X +B Y +C Y +C Z +B X +B Z +C X +C Z +B Z +C Z +B X +C X +B Y +B Z +C Y +B Y +B X +B Y +B Z +B Z +A Z +B Y +C Y +A X +B X +C Y +A Y +C Y +B X +C X +B Z +C Y +C X +C Z +B Y +B X +C Z +A Y +C Y +C X +B X +B Z +B Z +B X +C Y +C Z +C Z +B Z +B X +C X +A Y +B X +B Z +C Y +C X +B X +C X +C X +B Y +A Y +A X +C Z +C Y +C Z +C Z +C Z +C X +A Z +C Y +B X +A X +B X +B X +A Y +B X +C X +B X +B X +B X +C Y +C X +A Y +B X +C X +C Y +A Y +C X +C Y +C Z +C X +C Z +C Z +B Y +B Y +C Y +A Y +C Y +B X +B Z +B Z +C Z +C X +B X +B Z +C X +B Z +B Z +C X +B Z +B Z +B X +B Y +C Z +B Y +B Z +A Y +C X +C X +B Z +C Y +C X +A X +B Z +C Y +C Z +B Z +B Z +C Y +A Y +C Z +C X +C X +C X +B Z +C X +B Y +C X +C X +B Z +C X +A Y +C Z +C X +A Z +B Y +A Y +B X +B X +C Y +B Y +B X +A Z +B Z +C Y +C X +B Y +B Y +B Y +B Z +C Y +C Y +A Y +C Y +C Z +B X +C X +B Y +C Y +A Z +C Y +C X +B Z +C Z +B Z +C X +C X +C X +B X +C Y +C Z +B X +C X +A Y +C Y +B Y +B Z +C Y +C X +C X +B X +C X +C Z +C Y +A Y +C X +B Y +B Z +C X +C Z +B Z +C Z +B Z +B X +B X +C X +C Z +B Y +B X +C Z +A Y +B X +B Y +C X +B X diff --git a/day2/p1.nim b/day2/p1.nim new file mode 100644 index 0000000..f749ab9 --- /dev/null +++ b/day2/p1.nim @@ -0,0 +1,84 @@ +import os +import std/strutils + +# A, X - rock +# B, Y - paper +# C, Z - scissors + +const + ROCK_POINTS = 1 + PAPER_POINTS = 2 + SCISSORS_POINTS = 3 + + ROCK = "A" + PAPER = "B" + SCISSORS = "C" + + LOSE_POINTS = 0 + DRAW_POINTS = 3 + WIN_POINTS = 6 + + YOU_ROCK = "X" + YOU_PAPER = "Y" + YOU_SCISSORS = "Z" + +proc rock(symStr: string): int = + case symStr: + of YOU_ROCK: + ROCK_POINTS + DRAW_POINTS + of YOU_PAPER: + PAPER_POINTS + WIN_POINTS + of YOU_SCISSORS: + SCISSORS_POINTS + LOSE_POINTS + else: + 0 + +proc paper(symStr: string): int = + case symStr: + of YOU_ROCK: + ROCK_POINTS + LOSE_POINTS + of YOU_PAPER: + PAPER_POINTS + DRAW_POINTS + of YOU_SCISSORS: + SCISSORS_POINTS + WIN_POINTS + else: + 0 + +proc scissors(symStr: string): int = + case symStr: + of YOU_ROCK: + ROCK_POINTS + WIN_POINTS + of YOU_PAPER: + PAPER_POINTS + LOSE_POINTS + of YOU_SCISSORS: + SCISSORS_POINTS + DRAW_POINTS + else: + 0 + +proc calcScore(left, right: string): int = + case left: + of ROCK: + rock(right) + of PAPER: + paper(right) + of SCISSORS: + scissors(right) + else: + 0 + + +proc main() = + let fileName = paramStr(1) + + var sum = 0 + var count = 0 + + for line in fileName.lines: + let sp = line.split(" ") + sum += calcScore(sp[0], sp[1]) + count += 1 + + echo sum + + +main() diff --git a/day2/p2.nim b/day2/p2.nim new file mode 100644 index 0000000..37dd764 --- /dev/null +++ b/day2/p2.nim @@ -0,0 +1,87 @@ +import os +import std/strutils + +# A - rock +# B - paper +# C - scissors +# X = lose +# Y = draw +# Z = win + +const + ROCK_POINTS = 1 + PAPER_POINTS = 2 + SCISSORS_POINTS = 3 + + ROCK = "A" + PAPER = "B" + SCISSORS = "C" + + LOSE_POINTS = 0 + DRAW_POINTS = 3 + WIN_POINTS = 6 + + LOSE = "X" + DRAW = "Y" + WIN = "Z" + +proc rock(symStr: string): int = + case symStr: + of LOSE: + SCISSORS_POINTS + LOSE_POINTS + of DRAW: + ROCK_POINTS + DRAW_POINTS + of WIN: + PAPER_POINTS + WIN_POINTS + else: + 0 + +proc paper(symStr: string): int = + case symStr: + of LOSE: + ROCK_POINTS + LOSE_POINTS + of DRAW: + PAPER_POINTS + DRAW_POINTS + of WIN: + SCISSORS_POINTS + WIN_POINTS + else: + 0 + +proc scissors(symStr: string): int = + case symStr: + of LOSE: + PAPER_POINTS + LOSE_POINTS + of DRAW: + SCISSORS_POINTS + DRAW_POINTS + of WIN: + ROCK_POINTS + WIN_POINTS + else: + 0 + +proc calcScore(left, right: string): int = + case left: + of ROCK: + rock(right) + of PAPER: + paper(right) + of SCISSORS: + scissors(right) + else: + 0 + + +proc main() = + let fileName = paramStr(1) + + var sum = 0 + var count = 0 + + for line in fileName.lines: + let sp = line.split(" ") + sum += calcScore(sp[0], sp[1]) + count += 1 + + echo sum + + +main()