6SPS2A4M4RBIJX4V4VPSBXQW4SMDU7G4TAYVGASNLGR7BCONZYOQC B ZB ZC Y
pub enum Errors {}// Round resultpub enum RoundResult {Win,Draw,Lose}impl RoundResult {pub fn get_points(&self) -> u16 {match self {RoundResult::Win => 6,RoundResult::Draw => 3,RoundResult::Lose => 0}}}// Move enum#[derive(PartialEq)]pub enum Move {Rock,Paper,Scissors}impl Move {pub fn from(input: &String) -> Move {match input.as_str() {"A" | "X" => Move::Rock,"B" | "Y" => Move::Paper,"C" | "Z" => Move::Scissors,&_ => panic!()}}pub fn fix_result(input: Vec<String>) -> Move {match (Move::from(&input[0]), input[1].as_str()) {(some_move, "X") => some_move.beats(),(some_move, "Y") => some_move,(some_move, "Z") => some_move.beaten_by(),(_, _) => panic!()}}pub fn vs(&self, rival_move: &Move) -> RoundResult {match self {some_move if some_move == rival_move => RoundResult::Draw,own_move if *own_move == rival_move.beats() => RoundResult::Lose,_ => RoundResult::Win}}pub fn get_points(&self) -> u16 {match self {Move::Rock => 1,Move::Paper => 2,Move::Scissors => 3,}}fn beats(&self) -> Move {match self {Move::Rock => Move::Scissors,Move::Paper => Move::Rock,Move::Scissors => Move::Paper}}fn beaten_by(&self) -> Move {match self {Move::Rock => Move::Paper,Move::Paper => Move::Scissors,Move::Scissors => Move::Rock}}}
extern crate clap;use clap::{Arg, Command};mod types;use types::{Errors, Move};use std::fs::File;use std::io::{self, BufRead, BufReader, Lines, Error};use std::path::Path;fn read_testcase<P>(filename: P) -> io::Result<Vec<[Move; 2]>>where P: AsRef<Path> {let file = File::open(filename)?;parse_testcase(BufReader::new(file).lines())}fn parse_testcase(content: Lines<BufReader<File>>) -> Result<Vec<[Move; 2]>, Error> {Ok(content.flat_map(|line| line).map(|line| line.split(" ").map(str::to_owned).collect::<Vec<String>>()).map(|values| [Move::from(&values[0]), Move::fix_result(values)]).collect())}fn solve(test_cases: Vec<[Move;2]>) -> Result<u16, Errors> {Ok(test_cases.iter().map(grade).fold(0, |acc, score| acc + score))}fn grade(round: &[Move; 2]) -> u16 {let my_move = &round[1];let rival_move = &round[0];let result = my_move.vs(rival_move);result.get_points() + my_move.get_points()}fn print_solution(result: Result<u16, Errors>) {match result {Ok(solution) => print!("{}\n", solution),Err(_) => print!("Error solving for provided test case")};}fn main() {let matches = Command::new("Advent of Code").version("1.0").author("Salvador P. <sisekeom@protonmail.com>").about("Solution for advent of code 2022 2.1").arg(Arg::new("filepath").help("path to the test case file").required(true).index(1)).get_matches();let filepath = matches.get_one::<String>("filepath").unwrap();read_testcase(filepath).map(solve).map(print_solution).unwrap();}
B ZB ZB YC YB YC YC YA ZB YA YC XA YA YC YA YB YB YC YA YA YA YC YA YB YA YB YC YB XA XA YC XB YC YB YB XC XB YB YA YA XA XA YB YC YC XA XB YC ZB YC XA YA XC XA YA YA YA YB XC YC ZB YC YA YA YB YA YC XB YC YC YA YC XB YA YB YC YC YA YB YC YC YC YA XA XB YB YC ZC YB YB YB YC YA YC YA YA YA XC YA XA YA YB YB YC YC YA YA YA XB ZC YA YA XC YB YC YA YA XA XA XA YA XB YA YC YA XB YC YB YA XB YB YC ZC YC XA YC XB YB YC YA XA XC ZB ZC YC YA XA XB YB ZC YB YB YB YA XA XB YC YA YC YC YA XB YA YA XC YC XA YA YC YC XC YB YA YA YC YB YC XA YC XA XB YC XA YA YA YC YC YA YA XC YC ZB XC ZB ZA ZA YB YA YB YB YA YA YC XC YA YA YB YA YB YB ZA YB YC YA YC YB XA YA XA YA XA YC YA XC YC YA XB YA YB YA YA ZC YB ZC XC YC XB YC XB YA YC YA YA XC YA XA XC XC XC YC XC YA XB ZA YB XB YC ZB YB YB YC XB YA YB YA YC YC YB ZB YA XA YC YB YC YB YB YA XB YB ZC YA YA YA YA YA YA YC XB YB YC YB YB YA ZC YA YA YC YC XA YB YA YC XB YA YC YB YB ZA YB YA YC YA YB YC YB YA XC ZC YA YC YB YC ZA YA YC YC XB YC YC XB YC XA YC XC YB YB YA YB YA XC XC YB YA YA XC YC YC YC XB ZB YC YA XC YA XC YB YB YB YB YC XC YC YA ZB YB YA YA YB XA YB YB YB ZC YA XA XA YB ZB YC YB YB YB YB YA XB YC YA YB YA XC YC YB YB YC YB YA YA YA XA YB XB YC YC YA YA YB YB YA XB YA XC YC YC YB YA YB YA YA YA XC YA YA YB ZC YA XC XB YC XC YC XC XC ZA YA XA YB ZB YA XA YA XB YA YC XB YB YA YA YC YA YA ZC YC YC ZA YC YC YC YC YA YB YB YC YA YC YC YA XB XB YA YB YA YC YA YC YB YB YB YA YC YC XC XC XC XC YC YC XB YA YA XB YC XB XC YB YC YC XC YB YA YA YA YC YC YA XA XC XA YA YB YB XB ZC ZB YB YB YB YB YA YA YB YA YC ZA YC XA YA YC YC XB YA YB YB YC ZA YA YA XC YC ZB YA XC YC XB YC ZA XA XA YC YA ZB YB YB YB YC YB YC XA YC YB YB YA YA XA YC YC YA XC YB YB YC YC YA YB YA YB YA YB YC XA XC XB YB YB YC YB YC YB XA YA YC YC XC XC YC XA XA YA ZA YA YB YB YC XC YA YB ZA YA XA YC YA YA XC YB YB YC XA XA ZC YB YA XA YC YC YA XC YB YA YA XC YB YA YA YC XB YB YB YC ZC YC XC XB YA XA YB XA YC YB YB YB YC YC ZA YC XC YA YA YB YB XB XB YA YA YA YC YC ZB XC YA ZA XB YC YB YB XA YA YC YB YA XC XB YC YB YB YA XA YA XC YA YC YB YA YC YA XA YC YC XC YA XB YB YB ZA YC YB YB YC YA XC XC YC YB YC YB YA YB YA YB YA YC YB YC XB YC XA YC YA XC XB YA YB YC XB YC YC ZA YC ZC XC XA YA XA YB ZC YC YB YA XA YB YC YA YA XB YC YA ZC YB YB YB YC YA YB YA YC XA XA YB YC YB XC YA XA YA YC YA YC YA YA XB YC YB YC YB YB YA YA XA YC YA XC YB YB XC YB ZC YB XB YC XC YA XC YC YA XC ZC XB YA XA XC YB YA YA YB YB YA XC YB YA XA YB YC YA XA XA YA XA XA YA YA YA XC YA XA YA YA YB YC YC YB YA YB YB ZB YB YC YB YC XA YC YA YC YB YC XB YB YC ZC YB ZB XB YA ZA YB YA YC YA XB YC YA ZA YC YC YB YC YC XB YC YC XB XC XA XA XA YC YB YC XB XA XB YC YA YC XC YB YC YB YA YB YA YA YA YA YB XC XA YB YA XB YC YB YA XA YC YA XC ZC YA XB YA YB XA YA YA YA YA YB YB XA YB YC XC YB YB YB YB YB XA YA XB YA XA XA YB YA YA YC YB XB YB YA YA XC YA YC YA XB YB YA XA XA XA YA XC YC ZB YB YA XC YB XA YB YA YB ZB YB YA ZB YA YB YB YC XB YA XB YB YC YB YA XC YC YC XC YB YB ZA YB YC XA YB YB YA XB YA ZB YA YC XB YA YB XA XC XC YB YA XB YB YC YB YC YA YC XC YA YC YA YC ZA YB YA YC ZA YC YA YC XC YC YA YB YB YB YA YA YB YB YB YB YB YC ZA XA YB YB YA YB YB ZB XA YA YA YC XB YA YC YA YA ZB YB YA XB YB YA YC XA XA YA YC YB XA YC YC XA ZB YB YA XA YC XB YC YA YC YB YA YA YB YB YB XC YA XA YC XA YC YA YC XC YB YA YA YA YB YA YA XB YB YB YA YB YB YB YC XB YA YC XB YB YA YC YB YA YB YC YB YB YC YC XC XC YB YB YA YA YA ZB YC XB YB YC YC YC YA YA XA YA YC XC XB YC ZC XA ZB YA YB YC XA YB ZC YA YB YC YC YC YA YB YC YA XB YA YC YA YC XB ZB XC YC YC YB YC XA YA YB YC YA YA YB YB YA XA YA YB ZA XA XC YC YC XB XA ZB YA XA YB YA YB XA YA ZB YA XB YA YA XA YA YB YA YA XA YC YB YB YA YA YA XC YA YB ZC YB YA YC ZA YB YA YC YB ZB YB YC YB YC YC ZB YB YA XB YC YA YB YA XB YC YC YA YC XC XB YC YB YA YA XB ZB YC YA YC XB YC ZB YA YB YA XA XA YB YA YA XC YC YC XA XA XA ZC YA YA XA YA YB YB YC XB YC YA YA YA YA XC XA YC XA YB YA YB YA XC YA XB YA XB XA XB XC YB XB YB YA XA ZC ZB YC XA YC YA YB YC XB YC YC YB YA XB XC ZC XA XC YB YA XC YC YA YB YC YC YB YB ZA YA XC XB YB YC XA YA YB YA XB YB YC XA YB YB ZC YA XB YA YA YB YC YA YA YA YB YA YB YB YB XA ZB ZA ZA YB YC YB YB YB YB YA YA YB YB YA YC YA YC XA YC XB YB XC YC XB YB YB YB YC YA ZA YB ZC YA YA YB YC XA XA YC YA YC YA XA XC YB ZA XA YB YB YA YA YA YB YB XA YC XB YC XC YC ZC YA XC YA YC YC XA YA ZA XA XA XB YA YC YC YC XA YB YA YA XC XA YB YA YC YC YC YC YC XB YC XB XA XC YB XC ZB ZB YA YB YB XC XC XB YC YC YA XA XC YA XA YA YA YC YA ZC XC XB YB YA ZB YA YA YA YC YB YC YB YB YA YB YA YB YC YC XA YA YC YA XC YB YA YC XC XB YA YA YC YC ZA XC ZB YB YB YC XA YB YC YB YC YB YB YA YB YA ZA YA XA YA XA YA XA YA YC YA YA YB ZA YA YC YB XC YA YC XC YA YC YB YA XA YA XA YB YC XC YC XC XA YC YA YB YC XC XA YC YB XC XB YC XA YC YA XB XC YC YC YB YA YA XA YA YB YB YA YC YC YB YB YB YB YB YB ZA YA XC YB YC YC XB YA YB YC YB ZA XB XB YA XB ZA XA XB YB XC XA YA YB YB ZA YB XC YC YB YA YA YB YA YB ZC YB YA XC XA YB YB YA YC XC YC ZB YB YA YC YA XC XA XC XC YB YA ZA YA XC YA XC XA YB YC ZB YC ZB YB YA YA ZB ZA YA YB YA YA ZB YB ZB YB ZB YA YA YB YB ZB YA YB YC XB YC XA YB YC YA YA YB YB ZA YA YB YC XC YC YA YB YA YA XB ZA YA XA XA ZA ZA YC YA ZA YC YA YB ZC XC YC YB YC XC XA YC YB XC YB YB YB YB XC YC YA XA YB ZA YB YA YB YB YA YB YB ZA XC YA YA XA YB YA YB YB YC YB YB YC YB YC XC YA XB XC YB YC XA YA YB YA YB YA YB ZC YB YB YC YA YA XB XA YB YB YC YA YC YA YA YB XC XA YB YB YB YB YA YC YA XB YA YC YA XA YA YC YA YB YA XA YB YA XC XC YA YA YB YC YC YA XC YC YB YA YC XB YA YA YA YA YB YA YB ZA YB ZA XA YA YA XC YA XA XC YA XA XA YC YA YB YA XC ZA YB XA YB YC YA YB YA YC YB XC YB YA YB YC YC YA YA YC XA XA YB YC YC YB ZC YC YB YB ZA YA YB YB YB YA XB YC YB YA YC YC YC XB YA YB YC YB YC YA YA YC ZC XB YA YA XB YC YA YC YB YC YC XA XC YA YA XA XA XC YC YA XC YC YC ZA XC YC XB ZC YA YA XC XA YC ZA YC XB YA YC XA XB YB YA XC YB YC XC XB YA YC XC ZC XC XA YC YC YC YA XB YC YA XC XC YB XB YC YA YA YB YB YB YB YB YB YA YA XB YB YB YB ZB XC YA XA YA YC YA YA XC XA YA YC XA YB YA YB YC YC XA XC YC YB ZA YC ZA XA XB YA XA YB YC YB YC YA YA XC YC YC YA XC YA YA ZA XC ZC YC XB YC YB YC YA YC XB YC YC XA YB YC XC YC YA YA YB YA XB YA YC YB XC YB YB YB YB YA XC YA XA YA YB ZC XB YB YA XC YA YA YB YA XB ZB YB YA YA XA XA YA YC XC XA XB YC XC ZC YB YC ZA YA YB YB YC XA ZA XA YB YB YA YA XA XA YA YC YB YB YA XA XC YC XC ZA YA YA YC YC XB YC YA XB YC YA YA XB YC YA YB YC XA YA YB YB YC YA YA YA XB ZA XA YC YC YA YA YC YC YB YA YA XA YC XC XB YB YA YA XC XA YB YB YA YC YB YC XC YA YA YC YB YB XC YC YB YB XA YB XA XB YC XA XB YA YA YA YC YB XA YB YA YA XC ZB YA YB YB YA YA YB YC YA YC YB YC YA XA YC YA YC YB YB YC YA YA YB YA YC YA YA YB YB YB YB YA XA XC YC YB XC ZC YA XA YB YA YC YC XB YB ZC YA XA YA XB YB XB YB XC YA ZB YC YA YA XC YC XB YA YA YA XC XA YC XA YC YC XA XC ZB YA XB YA YA XA XA YA YA YC XC XA YA YB YC YC YB YC YA YC YA YB YB YA YB YC XB XA XA XB YB YB YC ZC YB XA XB YA XB YA YB YC YA YA YC YB YA YA YC YC YC YB YA YC YC YB XB YB YA YB XA YB YC ZB ZB YC YB ZC YC YB ZA YA YA YC ZB YA YA YC ZA YA YA YB YC XA YA YA YA YA ZC YA XA YA YA YB YB YA XB YA YA ZA YA YA YA YA YC YB YC XB YC YC XB YA YB YA YB YB YA YA XA YB YB YB YA XC YA YB YB XA YC XB YA XA YA YC ZC YB YC YB ZA XB YC YB YA YA YC YA YC YA YC YA XA XA YB YB YB XA XA YA YA XA YC YC YB YA XC YA YC XB YA YC YC XA YC YB YB YA XA YC YA XA XB YB YA YA XA YB YA XB YA XA XC ZC ZB YA XB YA YB YB ZA YA XC YC YC ZC YC ZA XA YC YC YC YA YB YA YA YB YC YB ZA YC Y
[package]name = "advent"version = "0.1.0"edition = "2021"# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html[dependencies]clap = "4.0"
# This file is automatically @generated by Cargo.# It is not intended for manual editing.version = 3[[package]]name = "advent"version = "0.1.0"dependencies = ["clap",][[package]]name = "bitflags"version = "1.3.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"[[package]]name = "cc"version = "1.0.77"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "e9f73505338f7d905b19d18738976aae232eb46b8efc15554ffc56deb5d9ebe4"[[package]]name = "clap"version = "4.0.29"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "4d63b9e9c07271b9957ad22c173bae2a4d9a81127680962039296abcd2f8251d"dependencies = ["bitflags","clap_lex","is-terminal","strsim","termcolor",][[package]]name = "clap_lex"version = "0.3.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8"dependencies = ["os_str_bytes",][[package]]name = "errno"version = "0.2.8"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1"dependencies = ["errno-dragonfly","libc","winapi",][[package]]name = "errno-dragonfly"version = "0.1.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"dependencies = ["cc","libc",][[package]]name = "hermit-abi"version = "0.2.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"dependencies = ["libc",][[package]]name = "io-lifetimes"version = "1.0.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c"dependencies = ["libc","windows-sys",][[package]]name = "is-terminal"version = "0.4.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "927609f78c2913a6f6ac3c27a4fe87f43e2a35367c0c4b0f8265e8f49a104330"dependencies = ["hermit-abi","io-lifetimes","rustix","windows-sys",][[package]]name = "libc"version = "0.2.137"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89"[[package]]name = "linux-raw-sys"version = "0.1.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "8f9f08d8963a6c613f4b1a78f4f4a4dbfadf8e6545b2d72861731e4858b8b47f"[[package]]name = "os_str_bytes"version = "6.4.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee"[[package]]name = "rustix"version = "0.36.4"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "cb93e85278e08bb5788653183213d3a60fc242b10cb9be96586f5a73dcb67c23"dependencies = ["bitflags","errno","io-lifetimes","libc","linux-raw-sys","windows-sys",][[package]]name = "strsim"version = "0.10.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"[[package]]name = "termcolor"version = "1.1.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"dependencies = ["winapi-util",][[package]]name = "winapi"version = "0.3.9"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"dependencies = ["winapi-i686-pc-windows-gnu","winapi-x86_64-pc-windows-gnu",][[package]]name = "winapi-i686-pc-windows-gnu"version = "0.4.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"[[package]]name = "winapi-util"version = "0.1.5"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"dependencies = ["winapi",][[package]]name = "winapi-x86_64-pc-windows-gnu"version = "0.4.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"[[package]]name = "windows-sys"version = "0.42.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"dependencies = ["windows_aarch64_gnullvm","windows_aarch64_msvc","windows_i686_gnu","windows_i686_msvc","windows_x86_64_gnu","windows_x86_64_gnullvm","windows_x86_64_msvc",][[package]]name = "windows_aarch64_gnullvm"version = "0.42.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e"[[package]]name = "windows_aarch64_msvc"version = "0.42.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4"[[package]]name = "windows_i686_gnu"version = "0.42.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7"[[package]]name = "windows_i686_msvc"version = "0.42.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246"[[package]]name = "windows_x86_64_gnu"version = "0.42.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed"[[package]]name = "windows_x86_64_gnullvm"version = "0.42.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028"[[package]]name = "windows_x86_64_msvc"version = "0.42.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5"
/target
B ZB ZC Y
pub enum Errors {}// Round resultpub enum RoundResult {Win,Draw,Lose}impl RoundResult {pub fn get_points(&self) -> u16 {match self {RoundResult::Win => 6,RoundResult::Draw => 3,RoundResult::Lose => 0}}}// Move enum#[derive(PartialEq)]pub enum Move {Rock,Paper,Scissors}impl Move {pub fn from(input: &String) -> Move {match input.as_str() {"A" | "X" => Move::Rock,"B" | "Y" => Move::Paper,"C" | "Z" => Move::Scissors,&_ => panic!()}}pub fn vs(&self, rival_move: &Move) -> RoundResult {match self {some_move if some_move == rival_move => RoundResult::Draw,own_move if *own_move == rival_move.beats() => RoundResult::Lose,_ => RoundResult::Win}}pub fn get_points(&self) -> u16 {match self {Move::Rock => 1,Move::Paper => 2,Move::Scissors => 3,}}fn beats(&self) -> Move {match self {Move::Rock => Move::Scissors,Move::Paper => Move::Rock,Move::Scissors => Move::Paper}}}
extern crate clap;use clap::{Arg, Command};mod types;use types::{Errors, Move};use std::fs::File;use std::io::{self, BufRead, BufReader, Lines, Error};use std::path::Path;fn read_testcase<P>(filename: P) -> io::Result<Vec<[Move; 2]>>where P: AsRef<Path> {let file = File::open(filename)?;parse_testcase(BufReader::new(file).lines())}fn parse_testcase(content: Lines<BufReader<File>>) -> Result<Vec<[Move; 2]>, Error> {Ok(content.flat_map(|line| line).map(|line| line.split(" ").map(str::to_owned).collect::<Vec<String>>()).map(|values| [Move::from(&values[0]), Move::from(&values[1])]).collect())}fn solve(test_cases: Vec<[Move;2]>) -> Result<u16, Errors> {Ok(test_cases.iter().map(grade).fold(0, |acc, score| acc + score))}fn grade(round: &[Move; 2]) -> u16 {let my_move = &round[1];let rival_move = &round[0];let result = my_move.vs(rival_move);result.get_points() + my_move.get_points()}fn print_solution(result: Result<u16, Errors>) {match result {Ok(solution) => print!("{}\n", solution),Err(_) => print!("Error solving for provided test case")};}fn main() {let matches = Command::new("Advent of Code").version("1.0").author("Salvador P. <sisekeom@protonmail.com>").about("Solution for advent of code 2022 2.1").arg(Arg::new("filepath").help("path to the test case file").required(true).index(1)).get_matches();let filepath = matches.get_one::<String>("filepath").unwrap();read_testcase(filepath).map(solve).map(print_solution).unwrap();}
B ZB ZB YC YB YC YC YA ZB YA YC XA YA YC YA YB YB YC YA YA YA YC YA YB YA YB YC YB XA XA YC XB YC YB YB XC XB YB YA YA XA XA YB YC YC XA XB YC ZB YC XA YA XC XA YA YA YA YB XC YC ZB YC YA YA YB YA YC XB YC YC YA YC XB YA YB YC YC YA YB YC YC YC YA XA XB YB YC ZC YB YB YB YC YA YC YA YA YA XC YA XA YA YB YB YC YC YA YA YA XB ZC YA YA XC YB YC YA YA XA XA XA YA XB YA YC YA XB YC YB YA XB YB YC ZC YC XA YC XB YB YC YA XA XC ZB ZC YC YA XA XB YB ZC YB YB YB YA XA XB YC YA YC YC YA XB YA YA XC YC XA YA YC YC XC YB YA YA YC YB YC XA YC XA XB YC XA YA YA YC YC YA YA XC YC ZB XC ZB ZA ZA YB YA YB YB YA YA YC XC YA YA YB YA YB YB ZA YB YC YA YC YB XA YA XA YA XA YC YA XC YC YA XB YA YB YA YA ZC YB ZC XC YC XB YC XB YA YC YA YA XC YA XA XC XC XC YC XC YA XB ZA YB XB YC ZB YB YB YC XB YA YB YA YC YC YB ZB YA XA YC YB YC YB YB YA XB YB ZC YA YA YA YA YA YA YC XB YB YC YB YB YA ZC YA YA YC YC XA YB YA YC XB YA YC YB YB ZA YB YA YC YA YB YC YB YA XC ZC YA YC YB YC ZA YA YC YC XB YC YC XB YC XA YC XC YB YB YA YB YA XC XC YB YA YA XC YC YC YC XB ZB YC YA XC YA XC YB YB YB YB YC XC YC YA ZB YB YA YA YB XA YB YB YB ZC YA XA XA YB ZB YC YB YB YB YB YA XB YC YA YB YA XC YC YB YB YC YB YA YA YA XA YB XB YC YC YA YA YB YB YA XB YA XC YC YC YB YA YB YA YA YA XC YA YA YB ZC YA XC XB YC XC YC XC XC ZA YA XA YB ZB YA XA YA XB YA YC XB YB YA YA YC YA YA ZC YC YC ZA YC YC YC YC YA YB YB YC YA YC YC YA XB XB YA YB YA YC YA YC YB YB YB YA YC YC XC XC XC XC YC YC XB YA YA XB YC XB XC YB YC YC XC YB YA YA YA YC YC YA XA XC XA YA YB YB XB ZC ZB YB YB YB YB YA YA YB YA YC ZA YC XA YA YC YC XB YA YB YB YC ZA YA YA XC YC ZB YA XC YC XB YC ZA XA XA YC YA ZB YB YB YB YC YB YC XA YC YB YB YA YA XA YC YC YA XC YB YB YC YC YA YB YA YB YA YB YC XA XC XB YB YB YC YB YC YB XA YA YC YC XC XC YC XA XA YA ZA YA YB YB YC XC YA YB ZA YA XA YC YA YA XC YB YB YC XA XA ZC YB YA XA YC YC YA XC YB YA YA XC YB YA YA YC XB YB YB YC ZC YC XC XB YA XA YB XA YC YB YB YB YC YC ZA YC XC YA YA YB YB XB XB YA YA YA YC YC ZB XC YA ZA XB YC YB YB XA YA YC YB YA XC XB YC YB YB YA XA YA XC YA YC YB YA YC YA XA YC YC XC YA XB YB YB ZA YC YB YB YC YA XC XC YC YB YC YB YA YB YA YB YA YC YB YC XB YC XA YC YA XC XB YA YB YC XB YC YC ZA YC ZC XC XA YA XA YB ZC YC YB YA XA YB YC YA YA XB YC YA ZC YB YB YB YC YA YB YA YC XA XA YB YC YB XC YA XA YA YC YA YC YA YA XB YC YB YC YB YB YA YA XA YC YA XC YB YB XC YB ZC YB XB YC XC YA XC YC YA XC ZC XB YA XA XC YB YA YA YB YB YA XC YB YA XA YB YC YA XA XA YA XA XA YA YA YA XC YA XA YA YA YB YC YC YB YA YB YB ZB YB YC YB YC XA YC YA YC YB YC XB YB YC ZC YB ZB XB YA ZA YB YA YC YA XB YC YA ZA YC YC YB YC YC XB YC YC XB XC XA XA XA YC YB YC XB XA XB YC YA YC XC YB YC YB YA YB YA YA YA YA YB XC XA YB YA XB YC YB YA XA YC YA XC ZC YA XB YA YB XA YA YA YA YA YB YB XA YB YC XC YB YB YB YB YB XA YA XB YA XA XA YB YA YA YC YB XB YB YA YA XC YA YC YA XB YB YA XA XA XA YA XC YC ZB YB YA XC YB XA YB YA YB ZB YB YA ZB YA YB YB YC XB YA XB YB YC YB YA XC YC YC XC YB YB ZA YB YC XA YB YB YA XB YA ZB YA YC XB YA YB XA XC XC YB YA XB YB YC YB YC YA YC XC YA YC YA YC ZA YB YA YC ZA YC YA YC XC YC YA YB YB YB YA YA YB YB YB YB YB YC ZA XA YB YB YA YB YB ZB XA YA YA YC XB YA YC YA YA ZB YB YA XB YB YA YC XA XA YA YC YB XA YC YC XA ZB YB YA XA YC XB YC YA YC YB YA YA YB YB YB XC YA XA YC XA YC YA YC XC YB YA YA YA YB YA YA XB YB YB YA YB YB YB YC XB YA YC XB YB YA YC YB YA YB YC YB YB YC YC XC XC YB YB YA YA YA ZB YC XB YB YC YC YC YA YA XA YA YC XC XB YC ZC XA ZB YA YB YC XA YB ZC YA YB YC YC YC YA YB YC YA XB YA YC YA YC XB ZB XC YC YC YB YC XA YA YB YC YA YA YB YB YA XA YA YB ZA XA XC YC YC XB XA ZB YA XA YB YA YB XA YA ZB YA XB YA YA XA YA YB YA YA XA YC YB YB YA YA YA XC YA YB ZC YB YA YC ZA YB YA YC YB ZB YB YC YB YC YC ZB YB YA XB YC YA YB YA XB YC YC YA YC XC XB YC YB YA YA XB ZB YC YA YC XB YC ZB YA YB YA XA XA YB YA YA XC YC YC XA XA XA ZC YA YA XA YA YB YB YC XB YC YA YA YA YA XC XA YC XA YB YA YB YA XC YA XB YA XB XA XB XC YB XB YB YA XA ZC ZB YC XA YC YA YB YC XB YC YC YB YA XB XC ZC XA XC YB YA XC YC YA YB YC YC YB YB ZA YA XC XB YB YC XA YA YB YA XB YB YC XA YB YB ZC YA XB YA YA YB YC YA YA YA YB YA YB YB YB XA ZB ZA ZA YB YC YB YB YB YB YA YA YB YB YA YC YA YC XA YC XB YB XC YC XB YB YB YB YC YA ZA YB ZC YA YA YB YC XA XA YC YA YC YA XA XC YB ZA XA YB YB YA YA YA YB YB XA YC XB YC XC YC ZC YA XC YA YC YC XA YA ZA XA XA XB YA YC YC YC XA YB YA YA XC XA YB YA YC YC YC YC YC XB YC XB XA XC YB XC ZB ZB YA YB YB XC XC XB YC YC YA XA XC YA XA YA YA YC YA ZC XC XB YB YA ZB YA YA YA YC YB YC YB YB YA YB YA YB YC YC XA YA YC YA XC YB YA YC XC XB YA YA YC YC ZA XC ZB YB YB YC XA YB YC YB YC YB YB YA YB YA ZA YA XA YA XA YA XA YA YC YA YA YB ZA YA YC YB XC YA YC XC YA YC YB YA XA YA XA YB YC XC YC XC XA YC YA YB YC XC XA YC YB XC XB YC XA YC YA XB XC YC YC YB YA YA XA YA YB YB YA YC YC YB YB YB YB YB YB ZA YA XC YB YC YC XB YA YB YC YB ZA XB XB YA XB ZA XA XB YB XC XA YA YB YB ZA YB XC YC YB YA YA YB YA YB ZC YB YA XC XA YB YB YA YC XC YC ZB YB YA YC YA XC XA XC XC YB YA ZA YA XC YA XC XA YB YC ZB YC ZB YB YA YA ZB ZA YA YB YA YA ZB YB ZB YB ZB YA YA YB YB ZB YA YB YC XB YC XA YB YC YA YA YB YB ZA YA YB YC XC YC YA YB YA YA XB ZA YA XA XA ZA ZA YC YA ZA YC YA YB ZC XC YC YB YC XC XA YC YB XC YB YB YB YB XC YC YA XA YB ZA YB YA YB YB YA YB YB ZA XC YA YA XA YB YA YB YB YC YB YB YC YB YC XC YA XB XC YB YC XA YA YB YA YB YA YB ZC YB YB YC YA YA XB XA YB YB YC YA YC YA YA YB XC XA YB YB YB YB YA YC YA XB YA YC YA XA YA YC YA YB YA XA YB YA XC XC YA YA YB YC YC YA XC YC YB YA YC XB YA YA YA YA YB YA YB ZA YB ZA XA YA YA XC YA XA XC YA XA XA YC YA YB YA XC ZA YB XA YB YC YA YB YA YC YB XC YB YA YB YC YC YA YA YC XA XA YB YC YC YB ZC YC YB YB ZA YA YB YB YB YA XB YC YB YA YC YC YC XB YA YB YC YB YC YA YA YC ZC XB YA YA XB YC YA YC YB YC YC XA XC YA YA XA XA XC YC YA XC YC YC ZA XC YC XB ZC YA YA XC XA YC ZA YC XB YA YC XA XB YB YA XC YB YC XC XB YA YC XC ZC XC XA YC YC YC YA XB YC YA XC XC YB XB YC YA YA YB YB YB YB YB YB YA YA XB YB YB YB ZB XC YA XA YA YC YA YA XC XA YA YC XA YB YA YB YC YC XA XC YC YB ZA YC ZA XA XB YA XA YB YC YB YC YA YA XC YC YC YA XC YA YA ZA XC ZC YC XB YC YB YC YA YC XB YC YC XA YB YC XC YC YA YA YB YA XB YA YC YB XC YB YB YB YB YA XC YA XA YA YB ZC XB YB YA XC YA YA YB YA XB ZB YB YA YA XA XA YA YC XC XA XB YC XC ZC YB YC ZA YA YB YB YC XA ZA XA YB YB YA YA XA XA YA YC YB YB YA XA XC YC XC ZA YA YA YC YC XB YC YA XB YC YA YA XB YC YA YB YC XA YA YB YB YC YA YA YA XB ZA XA YC YC YA YA YC YC YB YA YA XA YC XC XB YB YA YA XC XA YB YB YA YC YB YC XC YA YA YC YB YB XC YC YB YB XA YB XA XB YC XA XB YA YA YA YC YB XA YB YA YA XC ZB YA YB YB YA YA YB YC YA YC YB YC YA XA YC YA YC YB YB YC YA YA YB YA YC YA YA YB YB YB YB YA XA XC YC YB XC ZC YA XA YB YA YC YC XB YB ZC YA XA YA XB YB XB YB XC YA ZB YC YA YA XC YC XB YA YA YA XC XA YC XA YC YC XA XC ZB YA XB YA YA XA XA YA YA YC XC XA YA YB YC YC YB YC YA YC YA YB YB YA YB YC XB XA XA XB YB YB YC ZC YB XA XB YA XB YA YB YC YA YA YC YB YA YA YC YC YC YB YA YC YC YB XB YB YA YB XA YB YC ZB ZB YC YB ZC YC YB ZA YA YA YC ZB YA YA YC ZA YA YA YB YC XA YA YA YA YA ZC YA XA YA YA YB YB YA XB YA YA ZA YA YA YA YA YC YB YC XB YC YC XB YA YB YA YB YB YA YA XA YB YB YB YA XC YA YB YB XA YC XB YA XA YA YC ZC YB YC YB ZA XB YC YB YA YA YC YA YC YA YC YA XA XA YB YB YB XA XA YA YA XA YC YC YB YA XC YA YC XB YA YC YC XA YC YB YB YA XA YC YA XA XB YB YA YA XA YB YA XB YA XA XC ZC ZB YA XB YA YB YB ZA YA XC YC YC ZC YC ZA XA YC YC YC YA YB YA YA YB YC YB ZA YC Y
[package]name = "advent"version = "0.1.0"edition = "2021"# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html[dependencies]clap = "4.0"
# This file is automatically @generated by Cargo.# It is not intended for manual editing.version = 3[[package]]name = "advent"version = "0.1.0"dependencies = ["clap",][[package]]name = "bitflags"version = "1.3.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"[[package]]name = "cc"version = "1.0.77"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "e9f73505338f7d905b19d18738976aae232eb46b8efc15554ffc56deb5d9ebe4"[[package]]name = "clap"version = "4.0.29"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "4d63b9e9c07271b9957ad22c173bae2a4d9a81127680962039296abcd2f8251d"dependencies = ["bitflags","clap_lex","is-terminal","strsim","termcolor",][[package]]name = "clap_lex"version = "0.3.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8"dependencies = ["os_str_bytes",][[package]]name = "errno"version = "0.2.8"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1"dependencies = ["errno-dragonfly","libc","winapi",][[package]]name = "errno-dragonfly"version = "0.1.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"dependencies = ["cc","libc",][[package]]name = "hermit-abi"version = "0.2.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"dependencies = ["libc",][[package]]name = "io-lifetimes"version = "1.0.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c"dependencies = ["libc","windows-sys",][[package]]name = "is-terminal"version = "0.4.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "927609f78c2913a6f6ac3c27a4fe87f43e2a35367c0c4b0f8265e8f49a104330"dependencies = ["hermit-abi","io-lifetimes","rustix","windows-sys",][[package]]name = "libc"version = "0.2.137"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89"[[package]]name = "linux-raw-sys"version = "0.1.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "8f9f08d8963a6c613f4b1a78f4f4a4dbfadf8e6545b2d72861731e4858b8b47f"[[package]]name = "os_str_bytes"version = "6.4.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee"[[package]]name = "rustix"version = "0.36.4"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "cb93e85278e08bb5788653183213d3a60fc242b10cb9be96586f5a73dcb67c23"dependencies = ["bitflags","errno","io-lifetimes","libc","linux-raw-sys","windows-sys",][[package]]name = "strsim"version = "0.10.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"[[package]]name = "termcolor"version = "1.1.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"dependencies = ["winapi-util",][[package]]name = "winapi"version = "0.3.9"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"dependencies = ["winapi-i686-pc-windows-gnu","winapi-x86_64-pc-windows-gnu",][[package]]name = "winapi-i686-pc-windows-gnu"version = "0.4.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"[[package]]name = "winapi-util"version = "0.1.5"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"dependencies = ["winapi",][[package]]name = "winapi-x86_64-pc-windows-gnu"version = "0.4.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"[[package]]name = "windows-sys"version = "0.42.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"dependencies = ["windows_aarch64_gnullvm","windows_aarch64_msvc","windows_i686_gnu","windows_i686_msvc","windows_x86_64_gnu","windows_x86_64_gnullvm","windows_x86_64_msvc",][[package]]name = "windows_aarch64_gnullvm"version = "0.42.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e"[[package]]name = "windows_aarch64_msvc"version = "0.42.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4"[[package]]name = "windows_i686_gnu"version = "0.42.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7"[[package]]name = "windows_i686_msvc"version = "0.42.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246"[[package]]name = "windows_x86_64_gnu"version = "0.42.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed"[[package]]name = "windows_x86_64_gnullvm"version = "0.42.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028"[[package]]name = "windows_x86_64_msvc"version = "0.42.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5"
/target
.git.DS_Store