From 224d5bb79152f1592111f4941650ba8ef08f9b36 Mon Sep 17 00:00:00 2001 From: Pascal Phelipot Date: Fri, 1 Dec 2023 21:20:26 +0100 Subject: [PATCH] smol opti --- src/day1/mod.rs | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/day1/mod.rs b/src/day1/mod.rs index f4b5776..04aab1b 100644 --- a/src/day1/mod.rs +++ b/src/day1/mod.rs @@ -21,26 +21,30 @@ fn line_to_calibration_part2(line: &str) -> (Option, Option) { 'search: for i in 0..line.len() { let (_, remaining_line) = line.split_at(i); - for (j, word) in digits_words.iter().enumerate() { - if remaining_line.starts_with(word) { - a = Some(j as u32 + 1); - break 'search; - }else if let Some(char) = remaining_line.chars().next() && char.is_numeric() { - a = char.to_digit(10); - break 'search; + if let Some(char) = remaining_line.chars().next() && char.is_numeric() { + a = char.to_digit(10); + break 'search; + } else { + for (j, word) in digits_words.iter().enumerate() { + if remaining_line.starts_with(word) { + a = Some(j as u32 + 1); + break 'search; + } } } } 'search: for i in 0..line.len() { let (remaining_line, _) = line.split_at(line.len() - i); - for (j, word) in digits_words.iter().enumerate() { - if remaining_line.ends_with(word) { - b = Some(j as u32 + 1); - break 'search; - }else if let Some(char) = remaining_line.chars().last() && char.is_numeric() { - b = char.to_digit(10); - break 'search; + if let Some(char) = remaining_line.chars().last() && char.is_numeric() { + b = char.to_digit(10); + break 'search; + } else { + for (j, word) in digits_words.iter().enumerate() { + if remaining_line.ends_with(word) { + b = Some(j as u32 + 1); + break 'search; + } } } }