From 6a8ea1b39211f4db45d718cc10d3a0d244cf6829 Mon Sep 17 00:00:00 2001 From: Florent DENEF Date: Thu, 29 Dec 2022 13:55:39 +0100 Subject: [PATCH] Day - part 1 done hehehe --- Cargo.toml | 1 - src/prob6.rs | 60 +++++++--------------------------------------------- 2 files changed, 8 insertions(+), 53 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 2a90492..bf7e11d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,4 +13,3 @@ rpath = true [dependencies] nom = "7.1.1" itertools = "0.10.5" -fancy-regex = { version = "0.10.0", features = ["perf-literal", "perf-dfa", "perf-inline", "perf-cache"] } diff --git a/src/prob6.rs b/src/prob6.rs index a713d5e..7705414 100644 --- a/src/prob6.rs +++ b/src/prob6.rs @@ -1,57 +1,13 @@ -use std::collections::HashSet; +use itertools::Itertools; -use fancy_regex::Regex; - -/// Tries to find the 4 character match. -/// -/// # Arguments -/// -/// * `datagram`: -/// -/// returns: () -/// -/// # Examples -/// -/// ``` -/// -/// ``` -fn begin_datagram(datagram: &str) { - let mut letters = HashSet::::new(); - let primary_iter = datagram.chars().fuse(); - let mut motif_iter = primary_iter.clone(); - while letters.len() < 4 { - if let Some(tmp) = motif_iter.next() { - if !letters.insert(tmp) { - letters.clear(); - } - } else { - break; - } - } +fn begin_datagram(datagram: &str, size: usize) -> usize { + size + datagram + .as_bytes() + .windows(size) + .position(|window| window.iter().tuple_combinations().all(|(a, b)| a != b)) + .unwrap() } pub fn solve_part1(content: &str) -> i32 { - let _content = content; - return match Regex::new(r"^(?:([A-Za-z])(?!.*\1))*$") { - Ok(_reg) => { - println!("Regex is built."); - match _reg.find(_content) { - Ok(matches) => { - if let Some(yay) = matches { - println!("{}", yay.as_str()); - } else { - println!("Snif no match :("); - } - } - Err(err) => { - eprintln!("{err}") - } - } - 0 - } - Err(err) => { - eprintln!("{err}"); - 0 - } - }; + begin_datagram(content, 4) as i32 }