From 28178c8a73b93cc7befbae8527f371afd307dffe Mon Sep 17 00:00:00 2001 From: Bert Peters Date: Fri, 1 Dec 2023 10:22:26 +0100 Subject: [PATCH] Slightly more natural part 1 --- 2023/src/day01.rs | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/2023/src/day01.rs b/2023/src/day01.rs index f783805..b1f7ef2 100644 --- a/2023/src/day01.rs +++ b/2023/src/day01.rs @@ -1,12 +1,5 @@ use anyhow::Result; -fn to_digit(c: u8) -> Option { - match c { - b'0'..=b'9' => Some(u32::from(c - b'0')), - _ => None, - } -} - pub fn part1(input: &[u8]) -> Result { let mut it = input.iter(); let mut sum = 0; @@ -15,13 +8,16 @@ pub fn part1(input: &[u8]) -> Result { let mut first = None; let mut last = 0; - for digit in it - .by_ref() - .take_while(|&&c| c != b'\n') - .filter_map(|&c| to_digit(c)) - { - first.get_or_insert(digit); - last = digit; + for &c in &mut it { + match c { + d @ b'0'..=b'9' => { + let digit = u32::from(d - b'0'); + first.get_or_insert(digit); + last = digit; + } + b'\n' => break, + _ => continue, + } } if let Some(first) = first {