From fa26f694d8cf98272763952a698301ee9935c19e Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Thu, 26 Jun 2025 09:47:23 +0200 Subject: Added 2022, first few problems --- 2022/02/a.rs | 13 +++++++++++++ 2022/02/b.rs | 13 +++++++++++++ 2022/02/common.rs | 10 ++++++++++ 3 files changed, 36 insertions(+) create mode 100644 2022/02/a.rs create mode 100644 2022/02/b.rs create mode 100644 2022/02/common.rs (limited to '2022/02') diff --git a/2022/02/a.rs b/2022/02/a.rs new file mode 100644 index 0000000..1a49a6b --- /dev/null +++ b/2022/02/a.rs @@ -0,0 +1,13 @@ +mod common; +use common::*; + +pub fn main() { + let play_score = |s: &[u8]| (s[2] as i64) - ('X' as i64) + 1; + let win_score = |s: &[u8]| { + let other = s[0] as i64 - ('A' as i64); + let me = s[2] as i64 - ('X' as i64); + 3 * ((me - other + 4) % 3) + }; + let score = get_score(play_score, win_score); + println!("{score}"); +} diff --git a/2022/02/b.rs b/2022/02/b.rs new file mode 100644 index 0000000..9f2b580 --- /dev/null +++ b/2022/02/b.rs @@ -0,0 +1,13 @@ +mod common; +use common::*; + +pub fn main() { + let play_score = |s: &[u8]| { + let other = s[0] as i64 - ('A' as i64); + let w = s[2] as i64 - ('X' as i64); + (other + w + 2) % 3 + 1 + }; + let win_score = |s: &[u8]| 3 * ((s[2] as i64) - ('X' as i64)); + let score = get_score(play_score, win_score); + println!("{score}"); +} diff --git a/2022/02/common.rs b/2022/02/common.rs new file mode 100644 index 0000000..04581cf --- /dev/null +++ b/2022/02/common.rs @@ -0,0 +1,10 @@ +pub fn get_score(play_score: fn(&[u8]) -> i64, win_score: fn(&[u8]) -> i64) -> i64 { + let mut score = 0; + let mut line = String::new(); + while std::io::stdin().read_line(&mut line).unwrap() > 0 { + let l = line.as_bytes(); + score += play_score(l) + win_score(l); + line.clear(); + } + score +} -- cgit v1.3