~julienxx/AOC2022

5b32d3a5ae3edaa4e252dca0146beb048b6ce555 — Julien Blanchard 1 year, 10 months ago 0863080
day2 - part1
4 files changed, 2586 insertions(+), 0 deletions(-)

A day2/Cargo.lock
A day2/Cargo.toml
A day2/input.txt
A day2/src/main.rs
A day2/Cargo.lock => day2/Cargo.lock +7 -0
@@ 0,0 1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3

[[package]]
name = "day2"
version = "0.1.0"

A day2/Cargo.toml => day2/Cargo.toml +8 -0
@@ 0,0 1,8 @@
[package]
name = "day2"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]

A day2/input.txt => day2/input.txt +2500 -0
@@ 0,0 1,2500 @@
B Z
B X
C Y
B Y
B Y
A X
A X
B Z
A Z
B Z
B Y
B X
C X
B Y
A Z
B Y
A X
B X
C Y
B Y
B Y
C Y
B X
B X
C X
B Y
B Y
B Y
C Y
C X
B Y
C X
C X
B Y
B Z
C Y
B Y
B Z
B X
B Y
B Y
C Y
B Y
C Y
C Y
A Z
B X
C X
B Y
B X
C X
A X
B Y
C Y
B X
C X
C Y
B X
B Z
B Y
B X
C Y
B X
B Y
B Y
B Y
B Y
A X
A Z
B Z
B Y
C X
B Y
B Y
C Y
C Z
C Z
C X
B X
C Z
B Y
B Y
C X
C Z
C X
A Z
C Y
B Y
B Y
B Y
C Y
C Y
C X
C X
C Z
A X
B Y
C X
B Z
B Y
C X
B X
B Z
A Z
C Y
B Z
C X
C X
B Y
B Y
B Y
C Y
C X
B X
B Y
A Z
A Z
C Y
B Y
C Y
C Y
C Y
B X
A Z
C Y
C Y
A Z
A Z
B X
B Y
B Z
A Z
B X
B Y
C Z
C Z
B Z
B Y
B X
A Y
C Z
C X
A Z
A Z
B Y
B Y
C Y
C Y
B Y
B Y
B Y
A Z
C Y
C Z
C X
A Z
B X
B Y
A Y
A Y
B Y
B Y
C X
B Y
B Y
C Z
B Y
B Y
A Z
C Y
B X
C X
A X
C X
B Y
B X
A Z
C X
C Y
A Z
B Y
A Z
B X
B X
A Z
B Y
C X
C X
A Z
A X
C X
C X
C X
B Y
C Z
C Y
C X
B Y
B Y
B Y
A X
A Z
C Y
B Y
B Y
A X
C Y
C Z
C Y
C X
B Y
B Y
B Y
B Y
A Z
B Y
A Z
B X
B Y
B Y
B X
C Y
A X
A Z
B Y
C Y
C Y
B Y
B Y
C X
B Y
B X
A Z
B Y
B Y
C Y
B Y
B Y
B Y
A X
B X
B Z
C Y
B Z
C X
C X
B Z
B Y
A Z
A Z
B Y
C X
A X
C Y
B Y
B Y
A X
B Y
A Y
C Y
B Y
C X
B Y
A Z
B Z
C Y
B Y
B Y
C X
B Y
B Y
B Y
C Z
A X
B Y
B X
C X
C Z
C Z
C Y
C Y
A X
C Y
B Y
A X
C X
A Z
C X
B Y
C Z
C Z
A Z
A X
C Y
C X
B Y
C Z
B Y
C Y
C X
C Y
B Y
B Y
B Y
A X
A Z
B Y
B X
B X
B Y
B Y
B Y
A Z
B Y
B Y
A X
A X
A Z
A Z
B X
C Y
A Z
B Y
B Y
C Z
C X
C Y
A Z
C Y
C Y
C Y
C Y
C X
A Z
C Z
A Z
C Y
C X
B Y
B Y
C Z
B X
B Z
C X
A Y
C Y
B X
B X
B Y
C Y
A Z
A Z
B X
B Z
B X
C Y
A X
A X
C Z
B Y
C Y
C X
B Y
A Z
B Y
C Y
B Z
C Z
C X
B Z
C Z
B Z
A X
C Y
A Z
B Y
B Y
B Y
B Y
B Y
B Y
A Z
C Z
B X
C X
C Y
C Y
B Y
C X
C X
A Y
C Y
C Y
A Z
C Z
B Y
B X
C X
B Y
C X
B Y
B Y
C X
B Y
B Y
B Y
A Z
C Y
B Z
B Y
C X
B Y
C X
A Y
A Z
B Y
B Y
B Y
A Z
B Y
B Y
B Y
B Y
B Z
C Y
B Z
B Z
A Z
B Y
B Y
C X
A X
B Y
A Z
C X
C X
B Y
B Y
A X
B Y
B Y
C X
B Y
C X
B Y
B Y
B Y
B Y
A X
B Y
B Z
B Y
A Z
C X
C X
C Y
A Z
C Y
B Y
B X
A X
B Y
A Z
B Y
C Y
B Y
B Y
C Y
C X
A Z
A X
A Z
C Z
B Y
B Y
C Y
B X
C X
B Y
A Z
B Y
C X
A X
C X
C Y
C Y
B X
B Y
B Y
C Z
B Y
C X
A Z
C Z
C Y
A Z
C X
C Y
C Y
C X
B Y
B Y
C Z
A Z
B Y
A X
B Y
A X
A X
C Y
C X
A Z
B Y
C Y
C X
B Y
B Y
B Y
B X
B X
A X
C X
B Y
C Y
A Z
A Z
A Z
B Y
A Z
B Y
C X
B Y
C X
C Y
A Z
B Y
B Z
A Z
B Y
A Z
B Y
B Y
C Z
B Y
B Y
A Z
A X
C Z
C Z
B Z
B Y
A Z
B Y
B Y
B Y
B Y
C Z
A Z
C X
B X
B Y
A X
A X
B Y
A Z
A X
C Y
B Y
C X
A Z
B Y
C Z
C Y
B Y
A X
C Y
B Y
B Z
A Y
B Y
B Y
A Z
B Y
C Z
C X
B Y
A Y
C Z
B X
A X
B Y
B Y
B Z
B Z
C Y
B Y
B Y
A Z
A Z
B Y
B X
C Y
C Y
B Y
B Y
B Z
B Z
B Y
C Y
A Z
B Y
A Z
B Y
B Y
A Z
A Z
C X
C Z
B Y
C X
B X
A Z
B Y
B Y
C X
B Y
B Y
B Y
B Y
B X
B Y
A X
B Z
A Z
C Z
B X
A Z
C Y
C Y
A Z
B Y
C Z
C Z
C Y
B Y
B Y
B Y
A Z
B Y
B X
C X
B Y
B Y
B Y
B Y
C Y
B Y
C Y
B Y
C Y
C X
A Z
C Y
C Z
C Z
B X
C Y
B Y
B X
C Y
B Y
B Y
C Y
C X
C X
A Z
B Y
C X
A Z
C Z
B Y
B Y
C X
C X
B Y
B X
C Y
B Y
B Y
A Z
A Z
C Z
A Z
B Y
C X
C X
B X
B Y
B Y
B Z
B Y
B Y
B Y
B Y
B Z
B Y
C Y
C Z
B Y
C Y
C Y
C Y
C Y
A Z
A Z
C Y
C Y
A X
B Y
C Y
A X
C X
C Y
A Z
B Y
B Z
A X
B Y
B Z
B Y
B Y
B Z
C X
C Y
B Y
B Z
B X
A Z
B Y
C Y
B Y
B Y
A X
C X
B Y
C X
B Y
C Y
A X
A X
A Z
C Y
B Y
C Y
C X
B X
C X
C X
A X
A Z
B Y
B Y
B Y
A Z
B Y
B Y
B Y
B Y
B Y
B Y
B X
B Y
C Y
B Y
A Z
B Y
C X
C Y
B Z
C Z
B Y
A Y
C X
B Y
B Y
B Y
C X
A Y
C Z
B Y
C X
C Y
C Y
C Y
C X
C Y
B Z
B Y
C Y
C X
B Y
B Y
B X
C Y
B X
C Z
B Y
C X
B Z
C X
B Y
C X
B Y
C Y
C Y
A Z
C Y
C X
B Y
C X
B X
A Z
B Y
A Z
A Z
A Z
C Y
B X
A Y
C Y
B Y
B Y
C Y
C Y
C X
B X
A X
A Z
C X
A Y
B X
C Z
B Y
B Y
B X
C X
B Y
B Y
B Y
B X
B Y
C X
B Y
B Y
C Z
C Y
B Y
C Y
B Y
A Z
C Z
A Y
B Y
B Y
B Y
C Y
C Y
C Y
B Y
C Z
B Y
C Z
A Z
A Z
C Z
C Y
C Z
C Y
A Z
C X
B X
B Y
C Y
B Z
C Z
C X
B Y
A Z
B Y
C X
B Z
A X
B Y
A Z
C Z
C X
C X
C Y
B Y
B Y
A Z
A Z
B Y
B X
A Z
B Y
C Y
A X
C Z
B Y
B X
B Y
C Y
C Z
B Z
A Z
B Y
A X
C X
B Y
A Z
C X
B Z
C Y
C Y
C X
C X
C Y
B Y
B Y
B Z
B X
C X
B Z
C X
B X
C Z
C Z
C X
B Y
C Y
C X
B Y
A Z
C Y
C Z
C Z
C Y
B Y
A X
C Z
C X
B Y
C X
C Z
B Y
C Y
B Y
C Y
A Z
B Z
C Z
C X
B Z
B Z
B Y
A Y
C Y
C Y
B X
B X
B Y
B Y
B Y
C X
B Z
B Y
B Y
B Y
C X
A X
C Y
A X
B Y
B Y
B Y
B Y
B Y
C Y
C Y
B Y
B Y
B Y
B Y
C Y
B Y
C X
B Y
B Y
C X
A Z
A X
C Y
C Z
B Y
C X
B Y
B X
A Z
B X
B Y
B Y
A Z
B Y
B Y
B Y
B Z
A Z
A X
B Y
A Z
C Y
B Y
C X
B Y
C Y
B Y
B Y
C X
C Y
A Y
C X
C Y
B Y
A Y
A Z
C Z
A Y
A Z
B Y
C Y
C Y
B Y
B Y
B Y
B Y
A Z
B Y
B Y
B Y
C X
C X
B Y
C X
B Y
A Z
B Y
B X
C Z
C Y
A Y
B Y
C Y
B Y
C Y
C Y
C Y
C X
C Y
B Y
B Y
C Y
B Y
C Y
A Z
A X
B Y
A Z
B Y
C X
C X
B Y
C Z
B Y
B Y
C Y
B Y
C Z
A Y
B Y
C Y
B Y
A Z
C Y
B Z
C Y
C Y
C Z
B Y
C X
B Z
B Y
B Y
B Y
C Z
B Y
B Y
B Y
A Z
C X
B Z
B Y
B Y
C Y
B Y
C X
B Y
B Y
C Y
C X
C Y
B Y
B Y
C Y
B Y
A Y
B Y
A Z
B Y
B Y
B X
A Z
B Y
B Y
C Y
C X
C Z
A Z
A Z
C X
B Y
C Y
B Y
C X
B Y
B Y
C Y
C X
B Y
B Y
B Y
B Y
B Y
C X
B Z
B Z
A Z
B Z
B Y
B Z
B Y
C Y
A Z
A X
B Y
C Z
B X
A X
C Y
B Y
B Y
C Y
B Y
C Y
B Y
A Z
B Y
B Y
A Z
B Y
B Y
A Z
B Y
B Y
B Y
B Y
C Y
B Y
A X
A X
B Y
B Y
A Y
C Z
A Z
A Z
B Y
A Z
C Y
B Y
B Y
B Y
B Y
C Y
B Y
A X
B X
B Y
B Y
B Y
B Y
B X
C Y
B Y
B Y
B X
C Y
A Y
B Y
B Y
B Y
A X
B Z
C X
A X
C Z
B Y
B Y
B Y
C X
B Y
B Y
B Y
B Y
C Y
B Z
B Z
B Y
B Z
B Y
B Y
C Z
C Y
B Y
C Z
C Z
B Y
C X
A Y
B Y
B Z
A Z
B Y
C X
B Y
B Y
C Z
A Z
B Y
B X
B Y
C Y
B Y
B Z
B Y
B Y
C X
C X
C Z
B Y
B Y
B Y
A Z
A X
B Y
A Z
B Y
B Y
B Y
B Z
C X
C Z
B Y
B Y
B Y
C Z
B X
C Z
A X
B Y
C Y
B Y
A Z
A X
C X
B X
A Z
C X
B Y
C Y
B X
A Z
C Y
C Y
B Z
C X
B Y
C X
C Z
C Y
B Y
C Z
B Y
B Y
C X
B Y
B Y
B Y
B Y
B Y
B Y
C X
B Y
B Y
B Y
A Z
B Y
B Y
C Z
B Y
B Y
B Y
C X
A Z
B Z
C Y
C Y
B Y
A X
C Y
B Y
C Z
B Z
B Y
B Y
C Y
B Y
B Y
B Y
C Z
A X
B Y
C Y
A X
B Y
B Y
A X
B Y
A Y
C X
A Z
A Z
C Y
B Y
C Z
C Y
C Y
C Z
A Z
A X
C Z
B Y
C X
A Z
C X
B Y
B Y
B Y
C Z
C Y
C X
C Y
A Y
C X
A Z
A Z
B Z
C X
B Y
B Y
C X
A Z
C Z
C Z
B Y
B Y
A Y
C X
B Z
B Y
B Y
C X
C X
C Z
C Z
B Y
B Y
B X
B Y
B Y
C Z
C Y
C Z
B Y
B Y
B Y
C Y
B X
C X
A Z
C X
C X
C Y
B Y
B Y
C Y
B Z
B Z
C X
C Y
B Y
B Z
B Y
B X
A Z
C X
B Z
A Z
C X
B Y
C Y
C Y
B Y
B Y
B Y
B X
A X
B Y
A X
A Z
C Y
B Y
B Y
B Y
B Y
B Y
C Z
B X
B Y
C X
A Z
B Y
B Y
A Z
B Y
C Y
C Z
C X
C Y
B Y
B Y
B Z
B Y
A X
C Y
B Y
A X
B Y
C X
A Z
B Y
C X
A Z
B Y
C X
C Y
C X
B Z
C Z
B Y
C Y
C X
C Y
B Z
B X
A X
C Z
B Y
B Y
C Y
B Z
C X
C X
B Y
B Y
C Y
B X
B Y
C Y
B Y
B Y
A Z
B Y
B Y
B Y
A X
A Z
B Z
B Z
B Y
A Z
B Y
C Y
B Y
C X
B X
B Y
B Y
B X
C Z
B Y
C Z
C X
B Y
C Z
B Y
C Y
B Z
C Y
C Y
C Z
C Z
A X
B Y
A Z
B Y
B X
A X
B Y
B Y
B Y
C Y
B Y
B X
B Z
C Z
B X
B Z
B Y
C Y
B Y
B Z
C X
A Z
B X
B Z
C X
C Z
B Y
A Z
C X
C Y
B Z
B Y
C Y
B Y
C Y
B Y
B Y
B Y
C Y
B Y
C Y
C X
C Z
B Y
B Y
B X
C Z
B X
A Z
C Y
A Z
C X
C Y
B Y
C Z
B Z
C Z
C Y
C X
B Y
C Z
C X
B Y
B Y
B Y
B X
B Y
B Y
C X
A X
B Z
C X
C Z
B Y
C Y
B Z
C Z
B Y
C X
B Y
B Y
A Z
C Z
B Y
C Z
C X
B Y
B Y
C X
C X
C Y
B Y
A X
A Z
B Y
C X
B Y
B Y
C Y
B Y
A Z
A Z
C X
C Z
C X
C X
A X
B Y
B Y
C Y
C Z
C Y
B Z
C Y
B Y
B Y
B Y
C Y
B Z
B Y
B Y
B X
C Y
C Y
B Y
A X
C X
A X
C Z
C Y
A Y
B Y
B Y
B Z
C X
C X
B Y
A X
B Y
A Z
B Y
A Z
C X
C X
B Y
B Y
B Y
B Y
A X
B Y
B Z
C Y
C X
C Z
C Z
B Y
C Z
B Y
B Y
C X
B Y
A X
A Z
B Y
A Z
C X
B Y
C Y
B Z
C Z
B Y
B Y
B Y
B Y
C Y
C Z
B X
B Y
A Y
C Y
B Z
B Y
C Y
A Z
B Y
B Y
C Y
C Y
A Y
C Y
A Z
C Y
B X
B Y
B Y
C Y
A Z
C Y
A Z
B Y
B Y
B Y
B Y
A X
C Y
A Z
B Y
B Y
B Y
B Y
B Z
C Z
C Y
C X
B Y
C X
B Y
B Y
B Y
B Y
A Z
B Y
C Y
C Y
A Z
A X
B Y
C Y
C Y
B Y
C Y
C Y
C Y
C Z
A Z
C X
C Y
C X
B Y
B Y
C X
C Z
C X
C Z
B X
B Y
C Z
B Z
A Z
C Y
B Z
C Y
B Y
A X
B Y
A Z
B Y
A X
B Y
B X
B Z
B X
B Y
B Y
B Y
C X
B Y
B X
C X
B Y
B Z
B Y
C Y
B Y
B Y
C X
A Z
C X
B Y
C Y
C Z
B Y
C Z
B Y
B Y
B Y
B Y
C Z
C X
C Y
C Z
B X
A Z
A Z
B Y
B Z
C Y
A X
B Y
B Y
A Z
B Y
B Y
B Y
B Y
A Z
C Z
B Z
C Y
A Z
C Y
B Y
B Y
B Y
B Z
B Y
C X
C Z
B X
C X
B Y
C Z
C X
B Y
A Z
A Z
B Y
B Y
B Y
C X
A Y
B Y
B Y
A Z
A Z
C Z
C Y
B Y
B Y
A X
B Z
A X
B Y
A Z
B Y
C X
B Y
A Y
B Y
B Z
B Y
B Z
B Y
B Y
C Y
C Y
B Y
C X
C Z
B Y
B Y
B Y
C Z
A Z
C X
B Y
B Z
B Y
C Y
B Y
C X
B Y
B Y
C Y
B Y
B Y
B Y
B Y
B Y
B Y
B X
B Y
B Y
C X
B Y
B Z
A Z
A Z
C X
B X
B X
C Y
C Z
B Y
C X
A X
B Y
C X
C Z
C X
B Y
B Y
C Y
B Y
B Y
B Y
A Z
C Z
C X
B Y
B Y
A X
B Y
C Y
B Y
B Y
C Y
B X
B X
A X
C Y
C Z
C Y
B Y
B Y
C X
A X
A X
C X
B Y
C X
B Y
B Y
B Y
C Y
A Z
B Z
A Z
B Y
B X
C Y
B Z
B Y
A Z
B Y
C Y
B Y
C Y
A X
B Y
B Y
B Y
C X
A Z
C Y
B Y
B Y
B Y
C X
B Y
C Y
B Y
B X
C X
B Y
B Y
C Y
C X
C Z
C Z
B Y
B Y
B Y
B X
C X
B X
A Y
A Z
C Y
A X
B Y
B Y
B Y
A Z
C Y
C X
C Y
C Z
A Z
B Y
B Y
B Y
B Y
A Z
B Y
A Z
B Y
B Y
C Y
C Z
C Y
A Z
C Y
B Y
C Y
B X
B Y
A X
C Z
C Z
A X
C X
C Z
C X
C X
B Y
A X
A Z
C Y
B Y
C X
B Y
B Y
B X
C Y
C Z
B Y
B Z
A Z
C Y
B Y
A Z
B Y
C X
C X
B Z
C Y
B X
B Y
C Y
B Z
A Z
C X
C Y
C X
C Z
B Z
C Z
B Y
B X
B Y
B X
B Y
B Y
B Y
B Y
C X
C X
C Y
B Z
C X
B Y
B Y
B Z
C Z
C Y
B Y
B Y
B Y
C X
B Z
B Y
B X
B Y
C Y
C X
C Z
C X
C Y
B Y
B Y
B X
B Y
C X
B X
A X
B Y
C Y
B Y
A X
C Y
B Z
B Z
C X
C Z
C X
B Y
C Y
C Y
B Y
C Z
B Y
C Y
B Y
C Y
A Z
B Z
C X
C X
B Y
B Y
B Z
B Y
B Z
A X
C X
C X
B Y
C X
A Z
C Y
B Y
A Z
C Z
B X
C Y
C X
C X
A Z
B Y
B Y
C Z
B Y
A Y
C Y
B Y
B X
B Z
C X
B Y
B X
C Z
B Y
B X
B Y
B Y
B Y
A Z
A Z
B Z
A Z
C Y
C Z
B X
C X
A Z
C X
B Y
B Y
A X
B X
B Y
B X
B X
A Y
A Z
C X
B Z
B Z
C Y
C Y
B Y
B Y
B Y
A Z
A Z
B Y
B Y
C Y
C Y
C Y
C Z
C X
C Y
B Y
B X
B Y
A Y
A X
C Y
B Y
A Z
B Y
B Y
C X
C X
B Y
B Y
C Y
A Z
B Y
C Y
C Z
C Z
C Y
A Y
B Y
B Y
C Y
B X
C Z
C Z
C Z
B Y
B Y
B Y
C Y
A Z
B Y
A Z
B Y
A Z
C X
C Z
C Y
B Y
A Z
B Y
B Y
C Z
B Y
C X
B Y
C Y
C Y
B Y
B Y
A X
C Z
B Y
C Y
C X
B Y
B Y
B Y
B Z
A Z
B Y
B Y
B Y
A Z
B Y
A X
B Y
B Y
B Y
C Y
C X
C Y
A Z
B Y
C Y
B Y
C Y
C Y
C Y
A X
C Z
B Y
B Y
C Z
B Y
B Y
C Z
B Z
B Y
C Y
B Y
B Y
B Y
B Y
B X
C X
C Y
B Y
A Z
B Y
A X
B Y
B Y
B Y
B Y
C Z
C Z
B Y
A Z
B Y
C X
C X
C Y
B X
A X
B X
B Y
C X
C Z
C Y
C Y
B Y
C Z
B Y
B Y
C Z
A X
B Y
C Z
B Z
B Y
C X
C X
B Y
B Y
B X
C Z
A Z
A X
B Y
C X
B Y
B Y
C Z
B Z
C Y
B Y
B X
C X
C Z
B Z
B Z
C Y
B Y
A X
B Y
B Y
C X
B X
A Z
B Y
A Z
B Y
B Y
A Z
C X
C X
B Y
B X
B Y
A Z
C Y
C Z
B Y
B Y
A X
B Y
C Y
C Y
B Y
A X
B Y
B Y
A Z
C X
C X
C Y
B Y
A X
B Y
B Y
C Y
B Y
B Y
B Y
B Z
B Y
C Y
C Y
B Y
C X
C X
B Y
C Y
B Y
C X
B Y
B Z
B Y
A Z
A Z
C X
A Z
A Z
B Y
B X
C Z
B Y
B Y
B Y
B Y
B Y
C X
C Y
B Y
A X
C X
C X
C Y
B Y
C X
C X
C Z
B Z
C Y
C X
B Y
B Y
C X
B X
C Z
B Y
B Y
C Y
A Z
C Y
C X
C Y
B Y
B Y
C X
C Y
C Y
C X
B Z
B Z
B Y
B Y
C Y
B Y
C X
A Z
A X
C Z
B Y
C Y
C Y
B Y
B Y
C Y
B Y

A day2/src/main.rs => day2/src/main.rs +71 -0
@@ 0,0 1,71 @@
use std::fs::File;
use std::io::{self, BufRead};
use std::path::Path;
use std::str::FromStr;

pub enum Round {
    LosingRock,
    WinningRock,
    DrawRock,
    LosingPaper,
    WinningPaper,
    DrawPaper,
    LosingScissor,
    WinningScissor,
    DrawScissor,
}

impl Round {
    fn score(self) -> i32 {
        match self {
            Round::LosingRock => 1,
            Round::WinningRock => 7,
            Round::DrawRock => 4,
            Round::LosingPaper => 2,
            Round::WinningPaper => 8,
            Round::DrawPaper => 5,
            Round::LosingScissor => 3,
            Round::WinningScissor => 9,
            Round::DrawScissor => 6,
        }
    }
}

impl FromStr for Round {
    type Err = ();
    fn from_str(s: &str) -> Result<Round, ()> {
        match s {
            "A X" => Ok(Round::DrawRock),
            "A Y" => Ok(Round::WinningPaper),
            "A Z" => Ok(Round::LosingScissor),
            "B X" => Ok(Round::LosingRock),
            "B Y" => Ok(Round::DrawPaper),
            "B Z" => Ok(Round::WinningScissor),
            "C X" => Ok(Round::WinningRock),
            "C Y" => Ok(Round::LosingPaper),
            "C Z" => Ok(Round::DrawScissor),
            _ => Err(()),
        }
    }
}

fn main() {
    if let Ok(lines) = read_lines("./input.txt") {
        let part1_score: i32 = lines
            .into_iter()
            .flatten()
            .map(|l| l.parse::<Round>().expect("Error parsing round"))
            .map(|r| r.score())
            .sum();

        println!("Part1 score: {}", part1_score);
    }
}

fn read_lines<P>(filename: P) -> io::Result<io::Lines<io::BufReader<File>>>
where
    P: AsRef<Path>,
{
    let file = File::open(filename)?;
    Ok(io::BufReader::new(file).lines())
}