use std::fs::File; use std::io::BufRead; use std::io::BufReader; use std::path::PathBuf; use clap::Parser; #[derive(Parser)] struct Cli { filename: PathBuf, } fn main() { let cli = Cli::parse(); let file = File::open(cli.filename).expect("Can't read file"); let reader = BufReader::new(file); let mut score = 0; for line in reader.lines() { let line = line.unwrap(); if line.is_empty() { continue; } let mut play = line.trim().split(" "); let their_play = play.next().unwrap(); let my_play = play.next().unwrap(); // A/X => Rock // B/Y => Paper // C/Z => Scissors match (their_play, my_play) { ("A", "Y") | ("B", "Z") | ("C", "X") => score += 6, // win ("A", "X") | ("B", "Y") | ("C", "Z") => score += 3, // draw _ => (), // loss } match my_play { "Z" => score += 3, "Y" => score += 2, "X" => score += 1, _ => (), } } println!("Your score: {}", score); }