diff --git a/day01/src/main.rs b/day01/src/main.rs index f441756a9f352ee94015a5b8ff0084eb11b2b4f3..dd39b031bef5e2eb3a095fe7fda2f684c2c190fe 100644 --- a/day01/src/main.rs +++ b/day01/src/main.rs @@ -1,10 +1,5 @@ -use std::{collections::HashMap, fs}; - use anyhow::Result; - -fn reverse_string(text: &str) -> String { - text.chars().rev().collect() -} +use std::fs; fn remove_art(line: &str) -> (u32, u32) { let patterns = [ @@ -35,17 +30,13 @@ fn remove_art(line: &str) -> (u32, u32) { let b = patterns .iter() .filter_map(|v| { - if let Some(found) = v - .iter() - .filter_map(|v| reverse_string(&line).find(&reverse_string(v))) - .min() - { + if let Some(found) = v.iter().filter_map(|v| line.rfind(v)).max() { Some((v[1].parse::<u32>().unwrap(), found)) } else { None } }) - .min_by(|x, y| x.1.cmp(&y.1)) + .max_by(|x, y| x.1.cmp(&y.1)) .map(|v| v.0.to_owned()) .unwrap();