diff options
Diffstat (limited to '2022/src/bin/day_6.rs')
-rw-r--r-- | 2022/src/bin/day_6.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/2022/src/bin/day_6.rs b/2022/src/bin/day_6.rs new file mode 100644 index 0000000..f02feca --- /dev/null +++ b/2022/src/bin/day_6.rs @@ -0,0 +1,20 @@ +use std::{collections::BTreeSet, fs}; + +fn main() -> Result<(), Box<dyn std::error::Error>> { + let input = fs::read_to_string("inputs/day_6.txt")?; + let chars: Vec<char> = input.trim().chars().collect(); + dbg!(find_distinct_char_run(&chars, 4)); + dbg!(find_distinct_char_run(&chars, 14)); + + Ok(()) +} + +fn find_distinct_char_run(chars: &[char], window_size: usize) -> Option<usize> { + for (i, char_window) in chars.windows(window_size).enumerate() { + let set: BTreeSet<&char> = char_window.iter().collect(); + if set.len() == window_size { + return Some(i + window_size); + } + } + return None; +} |