From: alex Date: Fri, 1 Dec 2023 17:03:50 +0000 (+0100) Subject: Nettoyage X-Git-Url: https://aoc.elinar.fr/?a=commitdiff_plain;h=2bdce9a988cfa07517a28747fcd989c5d19b5341;p=aoc_2023 Nettoyage --- diff --git a/src/day01.rs b/src/day01.rs index 761bdff..d676be7 100644 --- a/src/day01.rs +++ b/src/day01.rs @@ -45,26 +45,24 @@ fn run_part2(input: &str) -> Result> { ("nine", 9), ]); - // on cherche soit le premier digit soit le premier chiffre en toute lettre - // par la gauche (left search) - // par la droite (right search) - // - // on peut lister les index de chaque digit - // stocker (index, valeur) - // - // faire de même pour chaque chiffre trouvé dans la chaîne - // let mut res = 0; for l in input.lines() { + + // on cherche soit le premier digit soit le premier chiffre en toute lettre + // par la gauche (left search) + // par la droite (right search) + // + // on peut lister les index de chaque digit + // stocker (index, valeur) let mut digits: Vec<(usize, u32)> = l.chars() .enumerate() .filter(|(_, c)| c.is_digit(10)) .map(|(i, c)| (i, c.to_digit(10).unwrap())) .collect(); - //println!("digits: {:?}", digits); + // faire de même pour chaque chiffre trouvé dans la chaîne + // stocker sous forme (index, valeur) let mut numbers: Vec<(usize, u32)> = Vec::new(); - for (key, val) in map.iter() { let mut matches: Vec<(usize, u32)> = l.match_indices(key) .map(|(i, _)| (i, *val)) @@ -72,18 +70,14 @@ fn run_part2(input: &str) -> Result> { numbers.append(&mut matches); } numbers.sort_by(|(i, _), (j, _)| i.cmp(j)); - //println!("numbers: {:?}", numbers); // on concatene les 2 vecteurs // chaque index est unique dans chaque vecteur et entre les vecteurs // l'index d'un digit ne peut pas être l'index d'un chiffre en lettre // (et inversement) - digits.append(&mut numbers); digits.sort_by(|(i, _), (j, _)| i.cmp(j)); - //println!("digits sorted: {:?}", digits); - //println!("found: {}{}", digits[0].1, digits[digits.len() - 1].1); res += 10 * digits[0].1 + digits[digits.len() - 1].1; }