diff --git a/.aoc-cache/2.txt b/.aoc-cache/2.txt new file mode 100644 index 0000000..cd1c629 --- /dev/null +++ b/.aoc-cache/2.txt @@ -0,0 +1,2500 @@ +B Z +A X +C X +C X +C Z +C X +C X +A Z +C X +B Z +B Z +C X +A X +C X +C X +C X +C Y +C X +C Z +C X +C X +C X +C X +C X +C Z +C X +C X +A X +C X +B Y +A X +B X +A Z +C X +B Y +A X +C Z +C X +C Z +A X +A Y +B Z +A Z +C X +A Z +A Z +A Y +C Y +A Y +A Z +C X +A Y +B Y +A Z +B Y +C Z +A X +C X +C Z +B Z +C X +B Y +C X +A Z +C X +A X +C X +C X +A Z +B Z +C X +C X +C Z +C X +B X +C X +A Z +A X +A Y +A Y +A Z +C X +C Z +C X +B Y +C X +C X +A X +A X +C Z +C X +B X +C Z +C X +C X +C X +B Z +B Y +A Z +C X +A Z +C X +C Z +A Z +C X +A X +C X +C Z +C Z +C X +C Z +A Y +C X +A X +A Z +A X +C Y +B X +C X +A X +A Y +A X +B Y +A X +C X +B Y +A Z +C X +B X +C X +A Y +C Z +C X +C Z +C X +A Y +A Z +C X +A Z +B Y +C X +A Z +C X +C Z +B Z +C X +C Z +C X +C Z +C X +A Y +C X +C X +A Z +C Z +C X +A X +C X +C X +B Y +C X +C X +C X +C X +C X +A Y +C Z +C X +C X +C Z +B X +C X +C X +C Z +B Y +B Y +C X +C X +A Z +C Z +C X +C Z +C X +A Y +A X +A X +A Y +C X +C X +C X +A Z +B Z +C Z +A Y +A Y +C X +C X +B Y +C X +C X +C X +A Z +B Y +B Y +C X +C Y +C X +C Z +B Y +C X +C X +C Z +A X +B Y +C X +A Z +C X +A Z +C X +A Z +C X +C Z +C X +A Z +C X +A X +C Z +A Z +A Y +C X +C Z +B Y +A Z +C X +B Y +B X +A Z +C X +C Y +A X +C Z +A X +C Z +C Z +C Z +A Z +C X +C X +A Z +C X +A X +C X +B X +C X +C X +C Z +C X +C X +C Z +C X +A Y +C Z +C Z +A X +A Z +B X +C X +C X +B X +C Y +C X +A Y +C Z +A X +C X +A Y +A Z +C X +A Y +A Z +A Z +C Z +C X +A Y +C X +A X +C X +C X +C X +A Z +C X +C X +A Z +A X +C X +B Y +B X +C X +C X +A Y +A Z +B Z +C Z +A Z +A X +C Z +A X +C X +B X +C X +B X +C X +A X +C Z +C X +A Z +A Y +C X +C Z +C X +A X +C X +B Y +A Z +C X +C Z +A X +C X +A Z +C X +B Y +C X +C Y +C Y +B Z +C Z +A X +B Z +C X +C X +A Z +A X +C X +A X +B Z +A Z +B Y +B Y +C X +C X +A Z +A Z +B Z +A Z +A Z +A Z +B Y +C Z +A Y +A X +C X +C X +C X +C X +C Z +B Y +C X +A Z +B Y +B Y +C X +C X +A X +C X +C Z +C X +A X +A Z +C Z +C Z +B Z +B Y +C Z +C Z +A X +B Y +C X +C Z +B Y +C X +C X +C X +C X +B Z +C X +B X +C Y +C Z +A Z +C X +C X +C X +A Z +C X +B Z +C Z +C Z +C X +C Z +A Z +C X +C X +C X +C Z +C Z +C X +C X +C Z +C X +C Z +C X +A Z +C X +B Z +B X +B Z +A Z +A Z +B Y +C Y +C X +C X +C X +C X +A X +C X +A X +C X +C X +A Z +C X +C X +B Y +C Z +C X +C X +A Y +A X +C Z +C Z +C X +C X +C X +B X +C Z +C X +C X +C X +B X +A Y +B Z +C X +B Y +C X +C X +C X +B X +B Y +A Z +A Z +A Z +C X +A Z +C Z +B Z +C X +A Z +C X +C X +C X +A Y +B Y +C X +B Y +C Z +C X +B X +A Z +C X +A X +C X +C Z +C Z +B Y +C Z +C X +C X +B X +C X +C X +C X +C X +A Z +B Y +A X +C X +A Y +B X +A Z +A Z +C X +A Y +C Z +A Z +A X +A Y +C X +C Z +C Z +C Z +C X +B Y +C X +A Y +C X +A Z +C X +C Z +C X +B X +C Z +C Y +C X +B Z +A X +B X +C X +B Y +C Z +C Z +C Z +C X +A Z +C Z +C X +C X +C X +B Z +C X +C X +A Z +C X +A Z +C Z +A Z +A Z +A Z +C X +A X +C X +A Z +A Y +C X +A Z +C X +B Y +A X +C Z +A Z +C Z +A Y +C X +A Z +C Z +C X +C X +C X +C Y +C X +A Y +A Z +A X +C Z +C Z +A Y +C X +C X +B Y +B Z +C X +B Y +C Z +C Z +C X +C Z +B Y +C Z +B Y +C Z +B Y +C X +A X +A X +C X +A Z +A Z +C X +C X +B Y +A Z +C Z +A X +C Z +C X +C Y +A Z +A Z +C X +C X +A X +C X +C Z +C X +B Z +C X +A Z +A Z +C X +A Z +A X +A Z +C Y +B Y +C X +C X +C Z +C Z +C Z +C Z +C X +A X +C X +B Y +C X +B Y +B Y +B X +C X +C X +C X +C X +C X +C Z +A X +C X +C X +A Z +A Z +C X +A Z +C X +C Z +C X +B Z +A Z +C X +C X +C X +C Z +A Z +B Y +C X +C X +C Z +C X +C X +C X +A Z +B Z +A X +C Z +C X +C X +A X +C X +C X +C X +A Z +A Y +C Y +C Z +C X +C Z +C Z +A Z +C X +C X +B X +C Z +A Y +C X +C X +C X +C Z +C X +C Z +C X +C X +C X +B X +C X +A Z +B X +B Y +C X +A Z +A Z +C X +A Y +C X +C Z +A Z +B Z +A Z +B Y +A X +A Y +B X +C X +B Z +C Z +B Y +C X +A Z +C Z +C Z +C Z +B X +C X +A X +B Y +C X +C X +A X +B Z +B X +C X +C X +A X +C X +C X +C X +C X +C Z +C X +A Z +B Y +A Y +B Y +A X +C X +A Y +A Z +C X +C X +B Y +C X +B Y +C Z +C X +C X +B Y +C X +A Z +C Z +C X +C X +C Z +C X +C X +B Y +B Y +C X +C X +C X +C X +C X +A Z +C X +C X +B Z +B Y +A Z +C X +C X +C X +A Y +C X +A Y +A X +A Z +B X +C X +A X +B X +A Z +C Z +C X +A Z +A X +C X +C X +C X +C X +B Z +A X +A X +C Z +C X +C X +A Y +C Z +C X +B Y +C X +B Y +C X +C X +B X +C X +A Z +C Z +C X +C X +C X +C X +A Z +A Y +C Z +C X +B X +A Y +A X +A X +B X +C X +C X +A X +C X +C Z +A X +C Z +C X +B Y +C X +C X +C Z +C X +B Z +C X +C X +C Z +B Z +C X +C Z +A Z +C X +B X +C X +C X +C X +C X +C X +C X +A Z +A Z +B Z +A Y +A Z +B X +A Y +B Y +C X +C X +C Z +C X +C X +C X +A Y +C X +C X +B X +C Z +C X +C X +C X +C X +B Y +A Y +C X +A Z +C X +C X +C Z +C X +C Z +C X +C X +B Y +A Z +B X +A X +C X +C Z +C X +C X +C X +C X +C X +B Z +C X +C X +C Z +B Y +C X +B Y +C X +C X +C X +C X +C Z +C X +A Y +C X +C Z +A Y +A X +B Z +C Z +C X +A X +C X +A Y +C X +C X +B X +C X +B X +B Z +A Z +A X +C X +A Z +C X +C X +C X +C X +A Y +C Y +A X +C Z +A Y +C X +A Z +C X +C X +C X +A Y +C X +C X +C X +C X +A X +C X +A Z +A Z +A X +A Z +C Z +C X +B Y +A Y +C X +C X +C X +C X +A Z +C X +A Z +B X +B Y +C X +A Z +A X +C X +C Z +C X +C X +C Z +C X +C Z +B X +C X +C X +C X +A X +A Z +C Z +C Y +C X +A Y +B Y +C X +B Y +C X +C X +C X +A Z +C X +B Z +A Y +C X +C X +B Y +A X +C Z +C X +B Y +C Z +A Y +B Y +B Z +C X +C X +A Z +C X +C Z +C Y +A X +B Y +C Y +A X +C Z +C Y +C X +A Y +B Z +C X +A Z +C X +B Y +C X +C Y +C X +C Z +C X +A Z +C Z +C X +C X +C X +B X +A Z +C X +C X +C Z +C Y +C Z +C X +C X +C Z +A X +C Z +C Y +B Y +C X +B Y +C Z +C X +C X +C X +A X +B X +C X +B Z +A Y +C X +C Z +B Y +C X +C X +C X +C Z +C X +C X +C X +C X +A Y +C X +B X +C Y +A X +B Y +A Z +C X +C X +A Z +C Z +C X +C Z +A Y +A X +C Z +A Z +C Y +A Z +B Y +C X +A Z +C X +C Z +C X +C X +C X +C X +C X +C X +C X +C X +C X +C X +C X +C X +C Z +B X +A Y +C X +C X +C Z +A Y +A Z +A Z +B Y +C X +C Z +C X +C Z +C X +C X +C X +C X +A Z +A X +A Z +C X +A Y +B Y +C X +C Y +A Z +B X +C Z +A X +C X +C X +C X +C X +C X +A Y +A Z +C X +C X +A X +C Z +A Z +A X +C X +B Y +A X +C Z +B Y +C X +A Z +B Z +C X +C Z +C Z +B X +B Y +C Z +A X +C Z +C Z +A Y +A Y +C X +C X +C X +C X +A Y +C X +A Z +C X +C X +C X +C X +C X +B Y +C Z +C X +C X +C Z +C X +C X +B Z +C X +A Z +A Z +C X +A X +C X +C X +B Z +C X +A Z +C X +B X +C X +C Z +C X +A X +C X +B Y +A X +C Z +C Z +C X +C X +C Z +C X +C X +C X +A Z +A X +C X +B X +C Z +A Z +C Z +B Z +C X +A X +C X +C X +C Z +C X +A Y +A Y +C Z +C X +B Y +B Z +C X +B X +C X +C X +A Z +C Z +C Z +C X +B X +A Z +C X +C Z +A X +C Z +C Z +A Z +A Y +A Z +C X +C X +C X +A Z +A Y +C X +A Z +B Z +C X +B X +B X +C Z +C Z +C Z +C X +C X +C X +A Z +C X +C X +C X +C X +A Z +C X +C Y +A X +C X +C X +B Y +C X +C X +A X +C Z +C Z +C Z +A Z +C X +C X +C X +A Y +C Z +C X +C X +C X +C Y +C Z +C X +C X +C X +C X +A Z +C X +C X +A X +C X +A X +C X +C X +A Z +C X +C X +A Y +C Z +A X +A Y +C X +A Z +B Y +B Y +A X +C Z +C X +C X +C X +A X +A Z +B Y +C X +A Y +C X +C X +B Y +C X +C X +C X +B Y +C X +C Z +C X +C Z +A Y +B Y +C X +C Z +C X +B X +A Z +C Z +C Z +C Z +C X +B Z +C X +B X +C Y +C Z +C X +C X +C Z +A Z +B X +C X +C X +A Z +C X +A Z +C X +A Y +C X +C Z +A Z +A X +C X +B X +C X +C X +C X +C Y +B X +C X +B Y +C X +C Y +A Z +A Y +C X +A Z +C Z +A Y +B Y +C Z +A X +A X +B X +C X +C X +C Z +A X +B Y +A X +C Z +C X +C X +C X +A X +C X +C X +C X +C Y +C X +C X +C Z +C X +C X +C X +A Z +B X +A Z +C X +A X +C X +B Y +B Z +C X +C X +A Z +C X +A Y +B X +C X +C X +C Z +B Y +C X +A Y +C X +B Z +C X +A Z +C Z +C X +C X +C X +C Z +A X +B X +C Z +B Y +C Z +C X +B Y +A Z +C X +C X +C X +C X +C Z +A X +A Y +A Z +C X +C X +B Y +B Y +C X +A X +B Y +A Y +C X +C X +C X +A X +B X +B Y +A Z +C X +C X +C Z +A X +C X +A X +A Z +C X +A Z +C X +C Z +C Z +B Z +C X +B Y +C Z +C X +A Z +C X +C X +C X +C X +C X +C Y +C X +C X +A Z +C X +A X +A Y +B Y +C X +A Y +B X +C Z +C X +A Z +C X +C X +C X +A Z +B Z +C Z +B Z +C X +C X +C Y +C Z +C X +C Z +C X +C X +C X +B X +C X +C X +A Z +B Y +C Z +C Z +C X +A Z +B Y +A X +C X +A Z +C Z +C X +C X +A Z +A X +C Y +B Z +A X +C X +A Z +C X +C Z +A Z +C X +A Y +C X +C X +B Z +C X +C Z +A Z +A Z +C X +B Z +B X +A Z +A X +C X +C X +C X +C Z +C X +A X +C X +C X +B X +C Z +C X +C X +C Y +A Z +B Y +A Z +B Y +C X +A Z +C Z +C Y +B Z +A X +C X +C X +A Y +B Y +A X +C Z +A Z +C X +C X +B Y +B Y +C X +C X +C X +C X +C X +C Z +A X +A X +A X +C Z +C X +A X +C Z +B Z +C Z +C X +A X +A Y +C X +A Z +C X +C X +C Z +C Z +C X +A X +A X +C Y +A Y +C X +C Z +A X +A Y +A Z +B Y +C X +B Y +A Z +B X +C X +C Z +C X +B Z +A Z +A Z +C Z +C X +C X +C Y +C X +B X +C X +C Z +A X +C Y +A Z +C X +C X +A Z +A Z +A Z +C Z +A Z +C X +B X +B Y +C X +A Z +C Z +C X +C X +C X +A X +B Y +A Z +B Y +C X +B Z +A Z +C Z +C Z +C X +C X +C X +A Z +C X +A X +C Z +A Y +C X +A Y +C X +C Z +C X +C X +C X +B Y +C X +B Y +C Z +B Y +B Z +A Z +A X +C Z +C X +C X +B Y +B Y +A Z +C X +C Z +C Z +C Z +B Z +B Y +B X +C X +C X +C X +C Z +C X +C X +B Y +C X +C X +B Y +C X +C X +C X +C X +A Y +C X +C X +A Z +C Z +A Z +A Z +A Y +A Z +C Z +C X +C X +C X +C X +B Y +A Z +C X +C X +B Y +A Y +A Z +A Z +C Z +C X +C Y +C X +C X +B Y +C X +A X +B X +B Y +C Z +A X +C X +C X +A X +C X +A Y +A Y +C X +C X +B Y +C X +A Z +C Z +A X +C X +A Z +C X +C X +C X +C Z +A Z +B X +C X +A Z +C Z +B Y +C X +C X +B X +C X +C X +A Y +B Z +B Y +C X +C X +C X +C Z +C X +C X +C X +B Y +C X +C Z +C X +A Z +B Y +A X +B Y +A Z +C X +C X +A Z +B Y +C X +A Z +C X +A Z +A Z +B Z +A Y +A Z +C X +C Z +C X +A X +C X +B Y +B X +C Z +C X +B Y +C Z +C X +B Y +C X +C Y +C Z +A X +B Z +C X +C X +C Z +A Z +C X +C Z +A Z +C X +C X +C Z +C Z +B Y +A Z +C X +B X +B Y +C X +C X +C X +C X +B Z +A Z +C X +A Z +A X +A Z +C X +A X +C Z +A Z +C Z +B Z +B Y +C X +A X +C Z +C Z +A Y +B X +C X +C X +A X +C X +C X +C X +A Z +A Z +C X +A Z +C Z +C Z +C X +C Z +B Y +C X +C X +C X +A Z +A Z +C X +C X +C X +C Z +A Z +C X +A X +C Z +C X +B Y +C X +C Z +C X +C X +A X +A X +B Y +C Z +C X +C Z +A Z +C X +A X +A Z +C X +C X +C Y +C X +A Z +C X +A Z +B X +A X +A Z +A Z +A Z +A Y +A X +C X +C X +A Z +C Z +C X +C X +A Z +C Z +C X +C X +C X +C X +C X +C X +A Z +A Y +C Z +C X +A Z +A X +C X +C Z +A Z +C X +B Y +A Z +A Z +C X +A Z +C X +C X +A Z +C X +C Y +C X +C X +B Y +A Y +A Z +C X +C X +B Y +C X +C X +C Z +C Z +C X +B X +C X +C Z +A Y +C Z +B Y +C X +C X +B Y +A Z +B Y +C Z +A Y +A Z +B Y +A X +C X +C X +C Z +C X +A X +C X +C X +C Z +A Z +A Z +A Z +C Z +B X +A Z +A Z +C X +C X +C X +A Y +A Z +C Z +C X +C Z +C X +A Z +C Z +A Z +C X +B Y +C Z +C X +C X +A Z +C Z +C Z +B X +C Z +C Z +A Z +A Y +C X +C X +C Z +C X +A X +C X +C X +C X +C Z +B Y +B Y +C X +B Y +C X +C X +C X +A Z +B Z +C X +C X +C X +C X +C Z +C X +C X +C X +A Z +C X +B Y +C X +A Y +B Z +A Z +C X +B X +A Y +C Z +C X +C X +C X +C Z +A Y +C Y +C X +A Y +A Y +C X +C X +C X +C X +C Z +B X +C X +C X +C X +A Z +B X +C X +C X +B Y +C X +C X +C X +A Z +C X +C X +C X +B Y +C X +B Z +B X +C Z +C X +C Z +C X +B X +A Z +C X +C X +A Z +C Z +C X +A Z +B Z +C X +A X +A Z +C Z +C X +C X +B X +B X +C X +B X +C X +C Z +C X +C X +A Y +A X +A X +C Z +C Z +A Z +C Z +C X +C X +C X +C Z +A X +C Z +A X +C Z +C X +C X +A Y +C Z +A Z +A X +A Z +B Y +C X +C Z +C X +C X +A X +A X +C X +C X +C X +C X +A Z +C X +C Z +A X +C X +B Y +C Z +C X +A X +C X +C Z +C X +A X +A X +A X +C X +A Z +A X +C Z +C Z +C X +C Y +A Y +C X +C X +B X +C X +C X +C Z +B Y +A Z +C X +B Y +A Z +C Z +A Z +A Y +C Z +B Z +A X +B Z +C Z +A X +C Z +A Z +A Z +B Z +C X +C X +C X +C X +A X +C X +C X +C X +C X +C X +B Y +C X +C X +C X +B Z +A Y +A X +C Z +C X +A Y +B Y +C X +A Y +A Z +B X +A Z +C X +B Y +C X +A Z +A Z +C X +A Z +A Z +C X +A X +A Z +C Z +B Z +C X +A X +C Y +A Y +C X +A Z +C X +C X +C X +C Z +C X +C X +C X +A Y +B Z +A X +A Z +A Z +C X +A X +B X +C X +B X +C X +A Z +A X +C X +A X +A Y +A Y +A Z +A Z +C X +B X +C X +A Y +C Z +A Z +C X +C X +A Y +A Z +B Y +C X +C X +C X +C X +C X +A Z +C Z +C X +C X +C Z +C X +C Z +B Y +C X +A Z +B X +C Z +C X +C Z +C Z +C Z +C X +C X +C Z +C X +C Z +B Y +C X +C X +A Z +C X +C X +B Y +C X +C Z +C X +B X +C Z +A X +C X +C Z +C X +C Z +B Y +C X +A Z +A Y +C X +C Y +B Z +B X +C X +C X +C Z +C X +B Y +C X +A Z +A Y +C X +B Y +C X +C Z +B Y +C X +A Y +C X +C X +C X +A Z +C Z +C X +C X +A X +A Z +C X +C X +A Y +C X +B Y +C Z +C Z +C Z +B Y +C X +C X +C X +C X +A Y +A Z +A X +C Z +A Z +A Z +A Z +C X +A Y +B X +A Z +C X +C X +B X +C X +C X +C X +B Y +A Z +A X +A Z +C X +B X +A X +C X +C X +C X +C X +C X +C Z +A Z +C X +C X +C Z +C X +A Y +A Z +C X +A Z +C X +A Z +C Z +A Z +C X +C X +C X +C X +C X +C X +C X +C X +C X +C X +C X +C X +C X +C X +C X +C X +B Z +C X +A X +C Z +C X +A X +C Z +A X +B Y +A Y +C X +A Z +C X +C X +C X +C X +C X diff --git a/src/bin/day_2.rs b/src/bin/day_2.rs new file mode 100644 index 0000000..a645361 --- /dev/null +++ b/src/bin/day_2.rs @@ -0,0 +1,130 @@ + +use std::str::FromStr; + +use aoc_2022::prelude::*; +use color_eyre::Report; + +#[derive(Clone, Copy, Eq, PartialEq)] +enum Hand { + Rock, + Paper, + Scissors, +} + +impl FromStr for Hand { + type Err = Report; + + fn from_str(s: &str) -> Result { + match s { + "A" | "X" => Ok(Self::Rock), + "B" | "Y" => Ok(Self::Paper), + "C" | "Z" => Ok(Self::Scissors), + _ => Err(eyre!("invalid move")), + } + } +} + +impl Hand { + fn round(&self, other: Hand) -> RoundOutcome { + if *self == other { + RoundOutcome::Draw(self.score()) + } else { + match (*self, other) { + (Self::Rock, Self::Scissors) + | (Self::Paper, Self::Rock) + | (Self::Scissors, Self::Paper) => RoundOutcome::Win(self.score()), + _ => RoundOutcome::Loss(self.score()), + } + } + } + + fn round_but_other_has_a_different_meaning_not_just_the_opponents_hand_and_self_is_also_the_opponents_hand_and_we_dont_care_about_our_hand(&self, other: Hand) -> RoundOutcome { + match other { + Hand::Rock => { + // need to loose + RoundOutcome::Loss(self.would_win_to().score()) + }, + Hand::Paper => { + // need to draw + RoundOutcome::Draw(self.score()) + }, + Hand::Scissors => { + // need to win + RoundOutcome::Win(self.would_loose_to().score()) + }, + } + } + + fn score(&self) -> usize { + match self { + Hand::Rock => 1, + Hand::Paper => 2, + Hand::Scissors => 3, + } + } + + fn would_win_to(&self) -> Self { + match self { + Hand::Rock => Hand::Scissors, + Hand::Paper => Hand::Rock, + Hand::Scissors => Hand::Paper, + } + } + + fn would_loose_to(&self) -> Self { + match self { + Hand::Scissors => Hand::Rock, + Hand::Rock => Hand::Paper, + Hand::Paper => Hand::Scissors, + } + } +} + +enum RoundOutcome { + Win(usize), + Draw(usize), + Loss(usize), +} + +impl RoundOutcome { + fn score(&self) -> usize { + match self { + RoundOutcome::Win(score) => *score + 6, + RoundOutcome::Draw(score) => *score + 3, + RoundOutcome::Loss(score) => *score, + } + } +} + +type Input = Vec<(Hand, Hand)>; + +fn parse(s: &str) -> Result { + let mut games = vec![]; + for line in s.lines() { + let (them, you) = line.split_once(" ").ok_or_else(|| eyre!("no space"))?; + games.push((them.parse()?, you.parse()?)); + } + Ok(games) +} + +#[aoc(day = 2, parse = parse, test_cases = ["day_2.txt"])] +fn day_2(input: Input) -> Result<()> { + // Part 1 + let mut total_score = 0; + + for (them, me) in &input { + total_score += me.round(*them).score(); + } + + println!("Part one: you would score {total_score} in total"); + + // Part 2 + total_score = 0; + for (them, me) in &input { + total_score += them.round_but_other_has_a_different_meaning_not_just_the_opponents_hand_and_self_is_also_the_opponents_hand_and_we_dont_care_about_our_hand(*me).score(); + } + + println!("Part two: you would score {total_score} in total"); + + Ok(()) +} diff --git a/test_cases/day_2.txt b/test_cases/day_2.txt new file mode 100644 index 0000000..25097e8 --- /dev/null +++ b/test_cases/day_2.txt @@ -0,0 +1,3 @@ +A Y +B X +C Z \ No newline at end of file