N44ILCJBVFKOSACQKOPJUXR24X3YYABNIC44UP7KKTECV5G2INPAC [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]aoc = { git = "https://github.com/irevoire/aoc" }parse-display = "0.6.0"
A ZC ZC ZA ZC YC ZA ZB ZA ZA ZC ZA XC YC ZC YC ZA ZC ZA ZA ZC ZC ZC ZA YC ZC ZC YA ZC XA ZA ZC ZB YC ZC YC XC ZC ZB YA ZC ZC YB YC ZA YB YC ZC ZA ZA ZA XA ZB ZA ZA XA YC ZC ZA ZC YA ZC ZB YC ZC YB ZA ZC ZA ZB ZA XC ZA ZC YC YC ZA ZC ZC YC ZC ZC ZC ZC YA ZC ZC YA ZA ZA ZC ZA XA ZA ZA ZC ZC YC YA ZA ZC YA ZC ZA ZC YB YC ZA ZA ZC ZA ZC YA ZA ZC YA ZC ZA ZA ZA ZC YA ZB ZC YC ZB YA ZA ZC ZC ZB XB YA ZA ZA ZC ZC YB ZC ZC ZC ZA YA ZA ZC YC ZA ZC ZA ZA ZC ZC ZC ZC YC YC YC ZA ZC ZA ZA ZC ZA ZC ZA ZA ZB ZA ZA ZC ZC ZC ZC ZC ZC YB XA XA YA XC ZA XB XA XB ZA ZC ZC ZC ZC ZB ZC ZA ZA ZA ZA ZC ZA ZA ZC ZA ZC YC ZC ZB YC ZA XA ZA ZC YC ZC ZA ZC ZA ZC ZA ZC YA ZB YC ZC ZA ZC ZC YC ZA ZA ZC ZC ZA ZA ZC ZC YC ZC ZC ZC YC ZA ZC ZA ZA ZA ZB ZA ZC YA YA ZC ZA ZA ZC ZA ZC ZC ZC ZA ZB ZC YC ZC ZB XC ZC YA ZA YC ZC YB YA ZC ZA ZB YC ZC ZC ZB ZB ZC ZC ZC ZC ZA ZA XB YC ZC ZA ZC YA ZC ZA ZC YC ZA ZC YC YC ZA ZC ZC ZC ZA XA ZC ZC ZC ZA ZC ZC ZC YC YC YC ZC YC ZA ZA ZC ZC ZC YA YC ZC ZB ZA ZA ZA YA ZB YA ZC YA ZC YA ZA ZA XB ZC YA ZC ZA YC ZC YB YA ZB ZB ZC ZA XB YC ZA YC ZA ZC ZB ZC YC ZA ZC ZC YA ZA XA ZA YC ZA ZC YA ZC ZC YC ZB XC ZC ZC ZC ZC ZC ZC YC YC ZB ZB ZC ZB ZA ZC ZC YC ZC ZA ZC ZB YC ZA ZC ZA ZC ZA ZC YA ZC ZC ZC ZC ZC ZC YC YA ZA ZC ZA ZA ZB YA ZA ZC ZC YA ZC ZA ZA ZC ZC ZC ZA ZC YC ZC ZC YC YC YA ZC ZA ZC ZB YA XC ZC ZC ZC ZB ZA ZC ZA ZB ZB XC ZB XC ZC ZA ZB XC ZA ZA ZB YC ZC ZB XC YA ZA ZB ZA ZC ZA ZB YA ZC ZB YC YC ZC XC ZC ZA XC ZA YC ZA XA ZC ZC ZC ZB YC YA ZC ZA ZC ZC ZC ZC YC ZC ZB YA ZC ZC ZC ZA ZC ZA ZB ZC ZA ZC ZA ZC YC ZC ZC ZC ZA ZA ZB ZA ZB ZC ZC ZC YC ZA ZA ZC ZA ZB YA ZC ZC ZA ZA ZA YA ZC ZA ZC YC ZC ZC ZA ZC ZC ZB XA ZA ZC YB ZC ZA ZA ZA YC ZC ZC ZA ZC ZC ZC ZB YA ZB ZC YB YA ZA ZA ZC ZC YA ZA ZC ZC ZA ZB ZC ZA ZA ZC ZA ZA ZA XB ZC ZC ZC ZC ZC YA ZC ZC YC ZB YA ZA ZC ZC ZA ZC YC ZA ZA ZC ZC ZC YB YC ZA ZA ZC ZC ZC YC ZA ZC ZA ZC ZA ZC YC ZC ZC YA ZB YC ZA ZC ZC ZB ZB ZA ZC ZC YC ZC ZA ZB YB ZC ZA ZC ZC YC ZC ZC YC ZA YA ZA ZA ZB YC ZC ZC ZC YC ZA ZC YB YC ZA ZA ZC ZC ZA ZA XB ZA ZC ZA ZC ZC YA ZA ZC ZC ZB ZB YA XA ZA ZA ZA ZC ZC ZC ZC ZC YA ZA ZC YC XA ZA ZA ZA ZC ZC ZC ZC ZC ZA XC ZA ZB YB YA ZA ZC ZC YC ZA ZA ZA XA ZC ZA ZA YA ZC ZB YB YC ZB YA ZB YC ZB ZB YC YC ZC YC ZA ZC YC ZC ZC ZA ZC ZC YC ZB ZC ZA ZB YB ZC ZB YC ZA ZC ZC ZA ZC YC ZB YA ZB XC YC XC YA ZB ZA ZA YB YC ZA ZC ZC YC ZA ZB YA ZA ZB YC YA YC YC ZC ZA ZC ZC ZA YC ZA ZC ZC ZB YB YC ZB ZA ZA ZA ZC ZC YC ZB YC YA ZA ZC ZB YC YB YC ZA ZB YA ZA ZA XC ZC ZC YA ZC YC YC ZA ZA XC ZA ZA ZA ZC ZC YA ZA XC ZC ZC YC YA ZC ZB ZB XA ZC ZB YC YA ZA ZC YC ZC YC YB YC ZC ZA ZB YC ZC ZA ZA ZB YC ZC YA XA ZC YA ZC ZC ZA ZC YA ZC ZC ZC ZC ZA ZC ZC YB ZC ZA ZC ZC ZB YC ZA ZA ZA ZC YC ZA ZA ZC ZA ZA ZC ZA ZC XA ZA ZC ZA YB ZA ZC YA ZC YB ZC ZB XC ZA ZA ZC ZB YC ZC ZB ZA ZB YC ZC ZC ZA ZC ZB ZA ZC ZA ZB ZA XC YA XC ZC YC ZC ZB YB YC ZB XC ZA ZA ZB XA ZC ZC ZC ZB YC ZC YA ZB ZC YC ZC ZA ZC ZA YC ZC ZC ZA ZC ZC ZC YC ZB YB XA ZA ZC ZC YC YC YB YA XC ZB YA ZA ZC ZB YB YC ZA ZC ZC ZC ZC ZB YC ZB YB YA ZC ZB YA ZA XC ZC ZC ZC ZC ZC ZC ZB YA ZB ZA ZC ZA ZC ZA ZC ZA ZA ZC YA ZA ZC ZC ZC ZC ZB ZC ZA XA YB YB ZA ZC YA ZB XA ZC ZB ZB YC ZC ZC YC ZA ZA ZA ZA ZA ZA ZA ZA XA ZA ZC ZC ZC ZA ZB ZC ZC ZA XC YA ZC ZC YA ZA ZC ZC ZA ZC ZC XC YA ZA ZC ZB YC ZA ZA ZA ZB ZA YB YC ZC ZC YC YB YA ZA ZB YC ZC ZA ZA YA XA XC ZA ZA XA YA ZC YA ZC YA ZC YB ZB YA ZC ZA ZC ZC YA ZC ZA ZB YA ZC ZC ZC ZA YC ZC ZC ZA ZC YA YC XC ZA ZA ZA ZA ZA ZB YB YC ZC ZC YA ZC ZC YC ZC YA ZA ZC ZA ZC ZC YA ZC YA ZC ZC YB YC YC YA ZA ZC YC ZC YB ZA ZC ZC ZB YC YA ZA ZC ZA ZB ZC ZA ZC ZC ZA ZA YB YC YC ZA ZC ZA ZC ZA ZC YC YC ZA ZA ZB YC ZA ZC ZA ZA ZC ZC ZC ZC YB YC ZA ZB ZA ZA XC ZA ZA ZC ZB YA ZA XC YC ZC ZC ZC ZB YC ZB ZA ZA ZA ZA ZB ZB XC ZA ZC YA XC ZC YC ZC ZB XC ZC YA ZC ZA ZC ZB ZA ZC ZB YC ZC ZC ZC ZC ZC ZA ZC ZA ZA ZB YA ZC YB YB XC ZC YC ZC ZC YC YB YC YC ZA ZA ZA XC ZC ZB YC ZC ZA ZC ZB XC ZC ZC YC ZC ZC ZA XC ZA ZA ZC YB ZA YC ZC YB YC ZC ZC ZC ZA ZC ZC ZA ZC ZC YC ZC ZA YC ZC YA ZC ZC YC ZC YC YB XA ZC ZC YC YA ZA XC ZA ZC XB YA XB ZC ZB YA ZC ZA ZC ZA XC ZC ZC ZC YA ZC YC ZC ZA ZA ZA ZC ZA ZC YC ZA ZA ZC ZA ZC ZC ZC ZC ZB YA ZC ZA ZC YC ZA ZC YC ZA ZC YC YA ZA ZA ZC ZC ZB YA XA XA ZC ZC YC YC YC ZA ZB YA ZA ZC ZC YC ZC YC ZA ZC ZC ZC ZC YA ZC ZB XC ZC ZC ZC ZA ZC ZC ZC ZC YC ZA ZC ZB YA ZC YA YC ZC ZB ZC ZC ZB YC ZA ZC YC ZB YC ZA ZC ZC ZC ZA ZB YC YA ZC XC ZC YC ZA ZA ZC YC ZA ZB YA XC YB YA ZB YA XB ZA ZA ZA ZA ZC ZC ZA ZA ZA XC ZA ZA ZA XB YC ZC ZC ZB ZC ZA ZC ZC ZA ZA ZC YC ZC ZA ZA ZC YC YC ZA ZB XA ZA ZC ZC ZC ZB YA ZC ZA XB ZB ZC ZC ZC YA XA ZB YC ZB YC ZB YC ZC YC ZA ZC YC YA ZC XB ZC ZC ZA ZC YA ZA ZB ZA ZC ZC ZC ZC ZA YC YA ZC ZC ZC YA ZB YA ZB ZA ZA ZB XB ZA ZC ZC ZC ZC ZC ZA ZC XC ZC XC ZB ZC YA XA ZA ZC ZC YC ZC ZA ZC ZA ZA ZA XC ZA ZA ZA ZA ZA ZA ZB YA ZC ZB XB ZC ZA ZA ZB ZC YA XC ZB YB YC YA ZA ZA XC ZC ZA ZC YB YA ZB XA ZA XA XA XA ZA ZC ZA ZA ZA XB XB ZB XA ZB YA ZC ZA ZA ZC ZA YC ZB ZC YC YA ZC ZC ZA ZB YC ZA ZA XB ZA YB ZC YC YC ZA ZC ZC ZA YC ZA ZB YC ZB XA ZC ZC YB YA ZB YB ZA ZA ZB YC ZA ZC XC ZC ZB ZB ZC ZA ZA ZC ZA ZC ZC ZA YC ZA XA ZA ZA ZA ZA YA XC ZC ZC ZC ZA ZB ZC ZB ZB YC ZC ZC ZA ZC ZB YC YA XA ZA XC ZB XC ZA ZB YC XA ZC ZC ZA ZC ZA ZA ZA ZA ZA YA YA ZA ZA ZA ZC ZC ZC ZA ZA ZC ZA YC ZB ZC XC ZC YA YB YC ZC ZA ZC ZA XB YC YC ZC ZA ZA YA ZA ZC ZA ZC ZC ZC XA ZC ZA ZA ZC YB YC ZA XA ZC ZA ZC XA ZC ZC YA ZA ZC ZC ZC ZA ZA ZC ZA ZA XC XC ZC ZA ZA ZA YC ZC ZB XC ZC YC ZC ZA ZC ZA ZC YC YC ZA ZC ZB YC YA ZB ZA ZB ZA ZA ZC ZC ZC ZA ZC ZA ZB ZC ZC ZC ZA ZC ZC ZC ZC ZC ZC ZC ZB YA ZB YC YC XC ZC ZC ZC ZC YA ZC YA ZC YC ZC YC ZC YA ZA ZC ZC ZB ZC YC ZC ZC ZB ZB ZB ZA ZA ZA ZC ZB ZA ZA ZC YA YC YC ZC YC ZC ZC YA ZC ZB YC YB YA ZC ZA ZA XA ZC ZA ZA ZA ZC XC ZA ZC ZC ZC ZC ZC ZC ZA ZC ZC YA YB YB XB ZC ZC ZA ZB YC ZA ZB ZC ZA ZC YC YB YC ZC YC ZC YA ZC ZC ZA ZA ZA ZC ZA ZA XA ZA ZC ZC YC ZC ZC ZA YB YA ZA ZA ZA XB ZA ZC YB YA ZA YB ZA ZB YC ZB YA ZB YC ZC ZA ZA ZA ZC YB YB XA ZC ZA XB ZA XA YC ZB XB YA ZA ZB XC ZC YC YC YC XC ZC ZC ZA ZB YC ZA ZA ZA ZA ZC YC ZC ZA ZC ZB ZB YA ZA ZC ZA XA YB YA ZA ZB ZA ZC ZA YA ZC ZC ZA ZA ZC ZB YA ZA XC YA ZC ZC ZC ZC ZA ZC YC ZA ZA ZC YA XC ZB YA ZB ZC ZB ZA ZC YC ZB YC YC ZA ZC ZC ZA YA ZB ZA XC YA ZA ZC ZB YC ZA ZC ZA ZB YA ZC ZA ZB YA ZC ZC ZC ZA ZA ZC ZA ZA ZC YA YB YB ZC ZC YA ZC YC ZB YC YC ZB ZC ZC YC ZC YC ZC YB XC ZC YA ZA XA ZC ZA ZB YC ZA ZA ZB YC YA ZA ZC ZC ZC YA ZC YB YA YC ZA ZA ZC ZC ZC ZC ZA ZA ZC YA ZC ZC ZC ZC ZA ZA YC YA ZC YA ZA ZA ZC ZA ZC ZA ZC ZC ZA ZC ZC ZC YB ZC ZC YA ZB XC YC YC ZA ZB YA ZA XB YA ZA ZB YB ZA ZA ZC ZA XC ZC ZB ZC ZC YB YA ZB ZC ZC ZC ZA YA XC YA ZB ZA ZB ZC ZA YC ZC YA ZC YC ZC YB YB YC ZA XC ZA ZA ZC YC YC ZA ZB ZC ZC ZC ZA YA ZC ZC ZC ZC ZC ZB YC ZC ZA ZB YA ZC ZC ZC ZB ZA ZC YA ZC ZB ZC ZB YC YA XC ZA ZC YC ZC ZC YA ZC ZB ZA ZC ZA ZA XC ZA ZC ZB XC ZC ZC ZC ZA ZA XC ZC ZA ZC ZA ZC ZB YA ZC ZA ZC YC ZC ZA ZC ZA ZA ZA ZB ZC YB XC YC ZC ZA XA ZC ZB YC ZC YC ZA ZC ZB YC ZC YB ZA ZC ZB ZA ZB ZA ZC ZC ZB YC YC YA ZC ZA ZA YB YC XA XC ZC YB YC ZA ZA ZC YC ZC ZA ZB YB ZA ZA ZA ZB ZC ZC ZC YA XC ZA ZC ZB ZB YC XC ZA XA XC YB YC ZC ZA ZA ZA ZA ZC YC ZA ZA ZC ZC ZC ZC ZC ZA YA ZC YC ZB YA ZC YA ZA ZB ZC XB YC ZA ZC YC ZB YA ZC YC ZB YC YC ZA ZA XC ZC YB ZA ZA ZB YC ZA ZC ZC ZB YA ZC ZC ZB YB YA ZC ZC ZC ZC ZA ZC ZB ZB YC ZB YA ZA ZC YA ZA XB ZC YC ZC ZC ZC YC ZC ZC YA XB XB XC ZC YA ZB YC YC ZC ZA ZC YA ZB ZC ZC YC YC ZA ZC ZA ZB ZB ZC YA ZC ZA ZA ZC ZC ZC ZC ZC ZC ZA ZA ZA ZB YB ZB YC YA ZC ZC YA ZC ZA ZA XB ZA ZC ZC ZC ZA ZC YB YC YA ZC YB ZB YB YC ZC ZA Z
A YB XC Z
use std::ops::Add;use aoc::{answer, parser};use parse_display::FromStr;#[derive(FromStr, PartialEq, Debug, Copy, Clone)]enum Move {#[from_str(regex = "A|X")]Rock,#[from_str(regex = "B|Y")]Paper,#[from_str(regex = "C|Z")]Scissor,}impl Add for Move {type Output = usize;fn add(self, rhs: Self) -> Self::Output {let score = self as usize + 1;let outcome = match (self, rhs) {// draw(Move::Rock, Move::Rock)| (Move::Paper, Move::Paper)| (Move::Scissor, Move::Scissor) => 3,// win(Move::Rock, Move::Scissor)| (Move::Paper, Move::Rock)| (Move::Scissor, Move::Paper) => 6,// loss(Move::Paper, Move::Scissor)| (Move::Scissor, Move::Rock)| (Move::Rock, Move::Paper) => 0,};outcome + score}}#[derive(FromStr, PartialEq, Debug, Clone, Copy)]#[display("{prediction} {strategy}")]struct Match {prediction: Move,strategy: Move,}impl Match {pub fn score(self) -> usize {self.strategy + self.prediction}}fn main() {let score = parser::lines::<Match>().map(Match::score).sum::<usize>();answer!("If everything goes exactly according to strategy the final score should be {}",score);}
use std::ops::Add;use aoc::{answer, parser};use parse_display::FromStr;#[derive(FromStr, PartialEq, Debug, Copy, Clone)]enum Move {#[from_str(regex = "A")]Rock,#[from_str(regex = "B")]Paper,#[from_str(regex = "C")]Scissor,}#[derive(FromStr, PartialEq, Debug, Copy, Clone)]enum Strategy {#[from_str(regex = "X")]Lose,#[from_str(regex = "Y")]Draw,#[from_str(regex = "Z")]Win,}impl Add for Move {type Output = usize;fn add(self, rhs: Self) -> Self::Output {let score = self as usize + 1;let outcome = match (self, rhs) {// draw(Move::Rock, Move::Rock)| (Move::Paper, Move::Paper)| (Move::Scissor, Move::Scissor) => 3,// win(Move::Rock, Move::Scissor)| (Move::Paper, Move::Rock)| (Move::Scissor, Move::Paper) => 6,// loss(Move::Paper, Move::Scissor)| (Move::Scissor, Move::Rock)| (Move::Rock, Move::Paper) => 0,};outcome + score}}impl Add<Strategy> for Move {type Output = Move;fn add(self, rhs: Strategy) -> Self::Output {match (self, rhs) {(Move::Rock, Strategy::Draw)| (Move::Paper, Strategy::Lose)| (Move::Scissor, Strategy::Win) => Move::Rock,(Move::Paper, Strategy::Draw)| (Move::Scissor, Strategy::Lose)| (Move::Rock, Strategy::Win) => Move::Paper,(Move::Scissor, Strategy::Draw)| (Move::Rock, Strategy::Lose)| (Move::Paper, Strategy::Win) => Move::Scissor,}}}#[derive(FromStr, PartialEq, Debug, Clone, Copy)]#[display("{prediction} {strategy}")]struct Match {prediction: Move,strategy: Strategy,}impl Match {pub fn score(self) -> usize {self.prediction + self.strategy + self.prediction}}fn main() {let score = parser::lines::<Match>().map(Match::score).sum::<usize>();answer!("If everything goes exactly according to strategy the final score should be {}",score);}