diff --git a/two.rs b/two.rs new file mode 100644 index 0000000..428345a --- /dev/null +++ b/two.rs @@ -0,0 +1,50 @@ +const SCORE_WIN: u32 = 6; +const SCORE_DRAW: u32 = 3; + +const SCORE_ROCK: u32 = 1; +const SCORE_PAPER: u32 = 2; +const SCORE_SCISSORS: u32 = 3; + +fn main() { + let buf = std::fs::read_to_string("two.txt").unwrap(); + let mut total = 0u32; + + for s in buf.split("\n") { + if s.is_empty() { + continue; + } + let chars = s.chars().collect::>(); + let opponent = chars[0]; + let choice = chars[2]; + + total += match choice { + 'X' => SCORE_ROCK, + 'Y' => SCORE_PAPER, + 'Z' => SCORE_SCISSORS, + _ => 0, + }; + + if draw(choice, opponent) { + total += SCORE_DRAW; + continue; + } + + if won(choice, opponent) { + total += SCORE_WIN; + } + } + + println!("{}", total); +} + +fn won(choice: char, opponent: char) -> bool { + return choice == 'X' && opponent == 'C' + || choice == 'Y' && opponent == 'A' + || choice == 'Z' && opponent == 'B'; +} + +fn draw(choice: char, opponent: char) -> bool { + return choice == 'X' && opponent == 'A' + || choice == 'Y' && opponent == 'B' + || choice == 'Z' && opponent == 'C'; +} diff --git a/two.txt b/two.txt new file mode 100644 index 0000000..b806ad0 --- /dev/null +++ b/two.txt @@ -0,0 +1,2500 @@ +A X +B X +C X +C Y +B Y +C Z +C X +C Y +C Y +B Y +B Y +C Z +C Y +A Y +B Z +B Z +C Y +B Z +A Y +C Y +B Y +C Y +B Y +B X +A Y +A Y +C Y +B X +C X +B Y +A Y +C Z +C X +B Y +B Y +A Y +C X +B Y +B Y +B Z +B Y +A X +C Y +A Y +B X +C Y +A Y +C X +A Z +A X +C Y +A Y +A Y +B Z +B Y +A Y +C Y +B Z +C Y +A Y +A Y +C Y +B Y +B X +B X +C Y +B Y +B X +A X +B Z +A X +B Y +A Y +B Z +B X +B Y +A Y +C X +C Y +C Y +A Y +A Z +C Z +A Y +B Z +C Y +A Y +C X +C Z +B Z +B Y +B Y +A Y +C Z +C Y +B Y +A Z +A Y +A Z +A Y +A Y +A Y +A Y +C Y +B Y +B Y +A Z +A Y +A Y +A X +B Z +C Y +A Y +B Y +B Y +A Y +A Y +B Y +B Y +C X +C Y +B Z +C Y +C Y +B Y +B Z +C X +A X +A X +A Z +B Y +B Z +C Y +C Y +C Y +A Y +C X +B X +B Y +B Y +C Y +C Z +C Y +A Y +C Y +B Z +C X +B Y +A Y +C Y +C Y +C Z +B X +B Y +B Y +A Y +C Z +C Y +B Y +C Y +B Z +C Y +A Y +B Y +B Z +C X +A Y +B Y +B Y +C Z +A Y +C Y +A X +B Y +B Y +B Y +B Z +B X +C Y +B X +C Z +B Y +B Y +C Y +B Y +B Z +A X +C Z +B Y +C Y +C Y +C X +C X +A Y +C Y +B Z +C Y +B Y +C Z +B X +A X +A Y +B Y +C Z +C Z +C Y +B X +B X +B X +B Y +B X +C Y +C Y +B X +B Y +B Z +B Z +C Y +C Y +A Y +B Y +B Y +B Y +B Y +B X +A Y +B Y +C Z +B Z +C Y +B Y +B Y +B X +A Y +C Z +C Y +C Y +C Y +C Z +C Y +B X +C X +C Z +B X +B Y +A Y +C Y +A Y +B Y +B X +C X +C X +C Y +C Y +C Y +B Y +C Y +A Y +B Y +A Y +C Z +B Y +C Y +A Y +B Y +A Y +A Y +B X +B Y +B Y +A X +C X +B X +C Y +A Y +B Y +A Y +C Z +B Y +C Z +B Z +B Y +A Y +C Y +C X +B X +C Y +A Z +A X +B Z +A Y +B X +C Y +C Y +C Y +A Y +C Z +A X +B Z +C Y +B Y +B Y +B Y +C Y +A Y +C X +B X +B X +C Y +B Z +C Y +B X +C Y +B Y +A Y +C Y +B Z +A Y +A Y +C Y +B Y +B X +A Y +C Z +B Y +C Z +B X +B Y +A Y +C Z +C Y +C Y +B Y +C Y +B X +C Y +B Y +B X +C Y +B X +A X +B Y +A Z +C Y +A Y +B Y +B X +C Y +B X +C Y +C Y +B Y +C Y +C Y +B X +B X +C Y +A Y +B X +C Y +B Y +A Y +B X +B Y +A Y +A Z +A Y +C Y +A X +B Y +C Z +B Y +A Y +B Y +A X +C X +B Y +A Y +A Y +B Y +B Y +B Y +A Y +B Z +C X +A Y +B X +B Y +A Z +B Z +A X +B Y +C X +C X +A Y +B Y +C Y +B Z +B Y +A Z +C Z +A Y +A Y +A X +B Y +B Y +C X +A Y +C Z +A Y +A Y +B Y +A Y +B Z +B Y +B X +C X +C Y +A Y +B Z +A Y +B Y +A Y +A Y +C Y +A X +C Y +B X +B X +B Y +B X +B Z +B Y +C Y +C Y +C Z +B Z +A Z +B Y +C Y +C Y +C Y +B Y +A Y +B Z +C Y +C Z +B Y +B Y +B Y +B Y +C X +B Z +A Y +A Y +B Y +B X +B Y +B X +A Y +C Y +B X +B Y +C Y +B Y +C Y +C Y +C X +B Y +B X +C Z +B Y +A Y +B X +C Y +A Z +C Y +C X +B Y +C Z +C Y +B X +C Y +A Y +A X +B X +C X +A Y +C Z +C Y +B Y +B X +C Y +B X +B Z +B Z +B Y +B Z +B X +C Y +C Y +B Y +B Y +C Y +B Y +B Y +B Z +B Y +A X +B Y +C X +B Y +A X +C Y +B Y +A Y +B Z +B Z +A Y +A X +C Y +B Y +B Y +C X +A Y +C Y +B Y +C Z +B X +A Y +A Y +B Z +A Y +B X +B X +C Y +A X +B X +B X +B Y +B Y +B Y +B Z +A Y +C Y +A Y +C Y +A Z +C X +B Y +C Y +B Y +C Y +B X +B Z +A X +A Y +C Y +C Y +B Y +A Y +A Y +A Y +A Y +A Y +C Y +C X +B Y +B Z +B Z +B Y +B Z +B Z +B X +A Y +B Z +B Y +C Z +B Y +C Z +A Z +C Y +C X +B Y +B Y +B Y +A Z +C Y +A Y +B Y +A Y +A Y +A X +B Y +B Z +B X +A X +C Z +B X +C Y +B X +B Y +B X +A Y +B X +B Y +C Z +C Y +C X +B Y +B Y +A X +C Y +B Y +A Y +C Y +C X +B Z +C Y +A Y +C X +B Y +C Y +C X +C X +C Z +C Y +C X +A Y +C Y +C Y +B X +B X +B Y +C Z +B Y +B Z +B Y +C Y +B X +A Y +B Y +B Y +B X +B Y +B Y +C Y +B Z +B Y +C X +A Y +A Y +C Y +C Z +B Y +B X +C Y +C Y +C Y +A Y +C X +A Y +B Y +B X +A Y +B Y +C Y +B X +C Y +B Y +A Y +A Z +C Y +B Y +C Y +A Y +B X +B X +B Y +C Y +B X +B Y +C Z +C Y +C Y +A Y +C Y +B Z +B Z +B Y +C Y +C Z +A X +B Y +B Z +C Z +B X +A Y +A X +B X +B X +A Z +B X +C Y +C Y +B Y +C Y +B Y +A Y +B Y +C X +B Z +C X +B X +C X +B Y +C Y +C Y +B Y +B Y +C Y +C X +B X +A Y +C Y +A X +B Y +B Y +B Y +C Y +B Z +C Y +C Z +B X +C Y +A Y +B Y +A Y +C Y +A Z +B Z +B Y +A Y +B Z +B Y +C X +B Y +C Y +C Y +A Y +C Y +A Y +B Y +C Z +C X +C Y +C X +B X +B Y +C Z +A Y +C Y +C Z +C Y +C Y +C Y +B Y +B Z +B Y +C Y +C Z +B Z +C Y +C X +A Z +B Y +A Y +B Y +B Y +A X +C Z +C Y +B Y +B Y +C Y +C Y +B Y +C Y +C Y +B X +B Y +C X +B X +B Y +C X +C Y +B Z +C X +C X +B Y +A Y +B Y +C Y +B X +A Y +C Y +C X +C X +A Z +B Z +A Y +C Y +C Y +A X +A Y +B Y +B Y +C Y +C Y +C Y +C Z +B Y +C Y +A Y +B X +C Z +A Y +C X +B Y +B Y +B Y +C Z +B Y +C Y +B Y +B X +C Y +C Y +A Y +B Y +B Y +B X +B Y +B Z +B Y +A X +C Y +B X +B Y +B X +B Y +B Y +C Y +C Y +C Y +B Y +B Y +B X +A Y +C Z +B X +B X +C X +C Y +A Y +B Y +B Y +C Y +C Y +C Z +A X +B X +A X +A Z +A X +C Y +C Y +A X +B Y +C Z +B X +C Y +B X +B Y +B Y +B X +C Y +B X +A Y +B Y +B Y +B X +B Y +C Y +B Y +B Y +C Y +C Y +B X +C Y +B X +C Y +C Y +C Z +C Y +B X +B Y +A Y +C Y +A Y +B Y +C Y +C Y +B X +B Y +B Y +A Y +B Y +A Y +B X +A X +C X +B Y +A Z +A Y +B X +B X +A Y +B X +B X +C X +C X +B X +B Z +C Z +A Y +B X +B Y +B Z +C Y +C Y +C Y +A Z +B X +B Z +B X +B Y +B Z +B Y +B Z +C Y +B Y +C X +C Y +B X +C Z +A Z +A X +B Y +C Y +A Y +C Y +A Y +A X +C Y +B Y +B Y +A Y +C Y +C X +B Z +B Y +B Z +C Y +A Y +C X +A Y +C Y +C Y +B X +C Y +A Y +C Y +C X +B Y +B Z +A Y +B X +A X +A Y +C Y +B Y +A Y +B Y +C Y +C Z +B X +A Y +A Y +A Y +A Z +A Y +B Y +C Y +C Y +B Z +B X +C Y +A Y +B X +B Y +B X +C Y +B Y +A X +C X +C Y +B X +B Y +B Z +B X +B Y +A Y +B X +B Z +C Y +A Y +C X +C Z +C X +A Z +B Z +B Y +C X +B X +C Y +B Y +A Y +C X +A Y +B X +B Y +C Y +B Y +C Y +B Z +B X +A Y +A X +C Y +C Y +B Y +B Y +B Y +B Y +C Z +A X +C Y +C Y +B Y +B Z +C Z +A Y +B X +C Y +C Y +B Z +B Y +B Y +B X +B Z +B Y +C Y +C Y +C Y +B Y +A X +A Y +C Y +A Y +A X +A Y +C Y +B X +C Y +C X +B Y +B Y +C Z +C Z +B Y +B Y +C X +C Y +B Z +A Y +C X +B X +C Y +B Y +B Z +A Y +B Z +B X +B Y +A Y +B Y +C Z +A Y +B X +A Y +B Y +B X +A Y +C Y +A Y +B Z +B Z +B Y +A X +A Y +C Z +B Y +B Z +C Y +B Y +B X +B Z +B Y +A X +A Y +C Z +C Y +A Z +B Z +B X +B X +B Y +C Y +B Y +C Y +B Y +B Z +C Z +B X +A Y +C Y +C Y +C Y +C X +C Y +A Y +B X +A Y +B X +A Y +C Y +A Y +B Y +B Y +C Z +B Y +C Y +C Y +B Z +A Y +C Y +B Y +B Y +C Y +C Z +B X +A Y +C X +C Y +B Y +B X +A Y +B Y +A Y +A X +C X +C Y +C Y +A Y +B Y +A Y +A Y +A Y +B X +B Z +C Z +C Z +B X +C Y +B X +C Y +B X +C Y +C Y +C Y +B X +B Y +A Z +C Y +B X +C Y +B Y +B Y +C Y +A Y +C Y +B X +B Y +A X +C Y +C Y +B Y +B X +B Z +C Z +A Y +A Y +B Y +A X +A Y +B X +C Y +B Z +B Y +B Z +B Y +A Y +B Y +B Y +B X +A X +B Z +B Y +A Y +B X +B Z +B Y +B X +C Z +C Z +B X +A Y +C Y +C Y +B Y +C Y +B Y +B Y +B Y +B X +B Z +B Z +B Y +B X +B Y +B X +B Y +C Z +C Y +B Z +C Z +C Y +B Y +C X +C Z +B X +C Y +C Y +B Y +C Y +B Z +B Y +B Y +A Y +C Y +C X +A Y +C Y +B X +B Y +C Y +B X +C Y +C Y +C X +C Z +B X +C X +A Y +B X +A Y +B Z +A Z +C Y +A Y +A X +B Y +B Z +A Y +B Y +C Y +A Y +B Y +C X +C Y +C Y +C X +C X +C Y +B X +B Z +C X +B Y +C Y +C Y +C Y +C Z +B Z +C Z +B Z +C X +B Y +A Z +C Z +B Y +B Y +B Y +C Y +B X +B X +B Y +C Y +C X +A Y +C Z +B Z +A Y +B Y +B Z +C Y +B X +C X +A Y +B Y +B Y +C Z +B X +A Z +C Z +B X +C Y +B X +C Y +C X +C Y +C Y +C Y +B Y +B Z +B Z +C Y +B Z +C Y +C Z +B Y +C Y +C Y +C Z +B X +A Y +B Y +B Y +B Y +A Z +B X +C Y +C Y +A Y +C Y +C Y +B X +C X +A Y +B Y +A Y +C Z +A Y +C Z +B Z +A Z +A Y +B X +C Y +B X +C Y +C X +A Y +B Y +B Y +C Z +C Z +B Z +C Y +B Y +B Z +B X +A Z +C Y +C X +B Y +C Z +A Y +B X +C X +C X +B Z +C X +B Z +B Z +A Y +B Y +B X +B Z +C X +B Y +A Y +C Y +C Y +B Y +B Z +C X +B Y +B Y +C Y +A Y +C Z +C Z +B Y +B Y +B X +C Y +B X +B Y +C Y +C Y +B X +B Z +B Y +C Z +A Y +A X +C Y +A Y +B Z +B X +B Z +B Z +B Y +B Y +B Y +A Y +A X +A Y +B Y +A Y +C Y +C Y +C Y +B Y +C Y +C Y +B X +C Y +B Y +A Y +A Y +C Z +B Y +B X +C X +B X +B Y +A Y +B X +B Y +B Z +C Y +A Y +A Z +B X +C Y +C X +B Y +B X +C Y +C Z +C Y +A Y +A X +C Z +C X +A Y +A X +B Y +C X +C X +C Y +C Z +C X +B Z +B Y +A Y +B Y +C Y +C Y +C Y +C Y +C X +B Y +A Y +A Y +C Y +A Y +A Y +C Y +A Y +C X +B X +A Y +A Y +A Y +A Y +B X +C Y +A Y +C Y +B Y +B Y +C Y +B X +C Y +A Y +C Z +A X +B X +C Y +C Y +B Y +A Y +A Y +C Y +C X +B X +B Z +B X +C X +A Y +B Y +B X +B Y +B Z +A Y +B Y +B Z +A Y +C Z +B Y +C X +C Y +A Y +C Z +C Y +B X +B Y +C Y +C Z +A Y +B X +B X +A Y +B Z +B Y +C Z +B X +B X +C Z +A Y +C Z +A Y +C X +B X +C Y +A Y +B Z +B Y +B X +C Z +A Y +B X +C X +C Y +B Y +C Z +C Y +C Y +A Y +C Z +C Y +A Y +B Y +B Y +C Y +A Y +B Y +B Y +B Z +A Y +C Z +A Z +C Z +B X +B Y +C X +A Y +A Y +C Y +A Y +B Y +C X +A X +A Y +B Y +C Y +C X +A Y +A Y +B X +C Y +B Y +C Z +C X +B X +C Y +A X +A Y +A Y +B Y +C Y +C Z +A Y +B Y +C Y +C Y +B X +A Y +B Y +B X +C Y +B Z +C Y +B X +A Y +B Y +C Y +C Z +B Y +C Y +A Z +C Z +B X +B Y +C Y +B Y +A Y +B Y +B X +C Z +C Z +C X +B Y +C Y +C Y +B Y +B Y +A Y +B Z +B X +C Y +B Y +C Y +B Z +C Z +C Z +C Y +B Y +A Y +C X +B X +B X +B Y +C Y +C Y +B Y +B Z +C Y +B X +C Y +C Z +B X +A Y +B X +C Y +C X +A Y +B X +A Y +A Y +C Y +B Y +C Y +B X +C Y +B Y +C Y +B X +C Y +B Y +A Y +A Y +C Z +B X +C Y +C Z +B Y +A X +C X +B X +B X +C Y +B X +C X +B Y +A Y +B Y +C Y +B Y +C Y +C Y +A X +C X +C Y +B Y +B Y +C Y +C Y +A Y +A Y +C Z +C Y +C Y +B X +A Y +C Z +B Y +B Y +B Y +C Z +B Z +B Z +C X +C Y +B Y +B Y +A Y +C Y +C Y +B Y +C Y +A Y +C Y +B Y +C Y +B Z +B Y +A Y +B Y +B X +C Z +C X +C X +A Y +C Z +B Y +B X +A Y +B Y +A X +B Y +B Y +B Y +B X +C Y +C Y +A Y +A Y +B Y +B Z +B Y +B X +B Z +C X +B Y +A Y +B Z +B X +A Y +B Y +A Y +B X +B X +B X +B Y +C X +B X +C X +C Y +B Y +A X +B Y +C Y +B Y +C Y +B Y +B Y +A Y +B Z +B X +B Y +B Y +B Y +A Z +A Y +C Y +C Z +C X +B Z +C Y +B Y +A Y +B X +B Y +C X +B X +B Y +C Y +B Z +C Y +B Z +B Z +B Y +B X +B Y +B Y +B Y +C Y +A Y +A X +C Y +B Y +C Z +B Z +C Y +C X +B X +C X +B X +C Z +A Y +C Y +B Z +C Y +A X +B Z +B Y +B X +B Y +B X +C X +C X +B Z +B Z +C Y +B Y +B X +B X +B Z +A Y +A Y +A Y +B Z +B X +C Z +B Y +B Y +C Y +C Y +B X +B Y +C Y +B Y +B Y +A X +B Z +A Z +B Z +C X +B Z +A Y +B Z +B Y +B Z +A Y +B Y +C Y +C Z +B Y +C X +B X +B Y +A Y +B Z +C Y +C X +C Z +A Y +B Y +C Y +A X +C Z +B X +C Y +A Y +B Y +B Z +A Y +B X +C Y +B Y +C Z +C Y +B Y +B Y +C Y +C Y +C Y +A Y +B Z +C Y +B X +A Y +C Y +A Y +A X +B Z +A Y +B X +B Y +B X +A Y +C Z +B Y +B Z +C X +C Y +C Y +B Z +B Y +C Y +C X +C Y +C Y +B Y +B Y +A Y +B X +C Y +C Y +C Y +C Y +B Y +B Y +C Z +C X +B Y +C Z +A Y +B X +A Y +B Y +C X +B X +B X +B Y +A X +C X +C Y +B Y +C Y +C X +B Y +C Z +B Y +A Y +C Y +C Y +A X +A Y +C Y +A Y +A Y +C Y +A Y +B Y +A Y +B Z +B X +A X +A X +A Z +B Y +B Y +C X +C Y +C X +C X +A Y +B X +B Y +B Y +A X +B X +B Y +B Y +C Y +B Y +C Y +C X +A X +C Y +B Y +C Y +B Y +C Z +B X +B Y +B X +B X +C Y +B Y +A X +C Y +B Y +B X +A Y +B X +A Y +C Y +B Z +B Y +A Y +A Y +B Y +B X +B Y +C Y +B Y +B Y +A Y +A Y +C Y +B Y +C Z +C X +C Z +C X +C Z +A Y +B Y +A Y +C Y +C Y +B Y +C Y +B X +B X +A Y +B Y +B Y +A Y +B X +B Y +B Y +C X +C Y +C X +C Y +C Y +C Y +C X +C Z +B X +B Y +C Y +B Y +B Y +C Y +B X +C Y +B Y +B Y +B Z +B X +A Z +C Y +C Y +A Y +B Y +B Y +A Y +B X +C Y +B Y +B Y +B Z +B X +C Y +B Y +A Y +B Z +C Y +C X +C Y +C Y +B Y +A Y +C Y +C X +A Y +B Y +B Z +B X +C Z +A X +C Y +B Y +B Z +C Y +B Y +B Y +B Y +B Y +C Y +B Y +C Y +B Y +A Y +A Y +A X +B Y +C Y +C Y +C Y +C X +C Z +C X +B X +A Y +C Y +A Y +B Y +C Y +C Z +A Y +B X +B X +A Y +B X +C Y +B Y +B Y +B Y +B Y +C Z +C Y +B Y +B X +A Y +B Z +A Y +C Y +B Z +A Y +B Y +C Y +C Y +B Y +B Y +C Y +A Z +C Y +C X +C Y +C Y +C Y +B X +C Y +A Y +C Y +B X +B Y +C Y +C X +B Y +B Y +A Y +B X +A Y +A Y +B Y +A Y +C Y +B Y +B Z +A Y +C Z +B Y +B Y +B X +A Y +B X +C Y +A Y +A Y +A Y +B Y +B Z +C Y +C Y +B X +A Y +C Y +A Y +B Y +B X +B Y +B Y +C X +B Y +B Y +B Y +B Y +A Y +A Y +C Y +A X +B X +A Y +B X +B Z +B Z +B Z +B Y +B Y +C Y +C Y +C Z +B Z +B Z +C Y +B Y +B Y +C X +C Y +C Y +B Y +A Y +B X +A Y +B Y +A Y +C Y +B Z +A Y +B Y +B Y +B Y +C Z +A Y +A Y +C Y +B Y +C Y +B Y +C Y +B Z +C Y +C X +C Y +C Y +B Y +A X +C Y +A Y +C X +A X +A Y +B Z +C Y +C Y +B Y +C Y +C Y +B Y +C Y +C Z +B Y +A X +C Y +B X +A Y +C Y +B Z +B Y +B Z +A Y +B Y +B Z +C X +B Y +C Y +A X +C X +A X +B Y +B X +C Y +C Y +B Y +B Y +C Y +B Z +C X +A Y +A Y +B Y +B X +B Y +A Y +B Y +B Z +C X +A Y +B X +C Y +C Y +A X +B Y +C Z +B X +B Y +B Y +C Y +B Z +B Y +B Z +A Y +C Y +C Y +B Y +C Z +C Y +A X +A Y +C Y +B Z +A Y +A X +C Y +B X +B X +A Y +B Y +B Z +A Y +C Y +B Y +C Z +C Y +C Y +B Y +C Y +B Z +C Y +B Y +C Z +A X +A Y +A Z +C Y +B Y +B Z +B X +B X +C Y +A X +C Y +B X +B X +C Y +A Z +B X +A Z +B Y +B Y +A Y +B Z +C Y +B Y +C Y +C Y +A Y +C Y +B Y +C Z +C Z +B Y +B X +C Y +C Y +C Y +B Y +C Y +B Z +B Z +A X +C X +B X +C Z +C Y +B X +B Y +A Z +C Y +B Z +B Y +C Y +B X +B Z +B Y +A Y +B Y +B X +C Y +B Y +B Z +C Y +C Z +C Z +C Y +A Y +C X +B Y +A Y +B Z +C Y +A X +C X +C Z +C Z +A Y +B Y +C X +C Y +C Y +B X +C X +C Y +B X +B X +C Y +B Y +B Y +B Y +B Y