summaryrefslogtreecommitdiff
path: root/2022/src/bin/day_6.rs
diff options
context:
space:
mode:
Diffstat (limited to '2022/src/bin/day_6.rs')
-rw-r--r--2022/src/bin/day_6.rs20
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;
+}