From 7c74d45618d17a2148f4aeb6dfbf85983e59fb56 Mon Sep 17 00:00:00 2001 From: Simon Gardling Date: Tue, 4 Feb 2025 15:49:06 -0500 Subject: [PATCH] improve manual agent code --- src/agent.rs | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/agent.rs b/src/agent.rs index 15b5ee9..d87e729 100644 --- a/src/agent.rs +++ b/src/agent.rs @@ -16,21 +16,22 @@ impl Agent for ManualAgent { fn next_move(&mut self, _: &Board) -> Option<(usize, usize)> { let stdin = io::stdin(); let mut input = String::new(); - let mut got: Option<(usize, usize)> = None; - while got.is_none() { + loop { input.clear(); stdin.lock().read_line(&mut input).ok()?; - let numbers = input + + let got = input .split_whitespace() - .map(|i| i.parse::().ok()) - .collect::>>(); - if let Some(numbers) = numbers { - if numbers.len() == 2 { - got = Some((numbers[0], numbers[1])); - } + .map(str::parse) + .map(Result::ok) + .collect::>>() + .and_then(|x| -> Option<[usize; 2]> { x.try_into().ok() }) + .map(|x| (x[0], x[1])); + + if got.is_some() { + return got; } } - got } fn name(&self) -> &'static str {