]> aoc.elinar.fr Git - aoc_2023/commitdiff
Nettoyage
authoralex <null>
Fri, 1 Dec 2023 17:03:50 +0000 (18:03 +0100)
committeralex <null>
Sat, 2 Dec 2023 05:14:39 +0000 (06:14 +0100)
src/day01.rs

index 761bdff22a9d57f863380d56586628cb7c4de0b6..d676be7ec3e53a493ed7c6fe671fa3c531707edf 100644 (file)
@@ -45,26 +45,24 @@ fn run_part2(input: &str) -> Result<u32, Box<dyn Error>> {
         ("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<u32, Box<dyn Error>> {
             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;
     }