Compare commits
No commits in common. "a446a05c07a00c9b04ca7b18a1b602d8442eb58a" and "0506dc670a6b5f400518e037b598bd17261c85e2" have entirely different histories.
a446a05c07
...
0506dc670a
|
@ -1,8 +0,0 @@
|
||||||
use aoc22::{day6, util};
|
|
||||||
|
|
||||||
pub fn main() {
|
|
||||||
let input = util::parse_input();
|
|
||||||
let start = day6::parse_datastream(input.as_str(), 4);
|
|
||||||
|
|
||||||
println!("Packet starts after {} characters", start + 1);
|
|
||||||
}
|
|
|
@ -1,8 +0,0 @@
|
||||||
use aoc22::{day6, util};
|
|
||||||
|
|
||||||
pub fn main() {
|
|
||||||
let input = util::parse_input();
|
|
||||||
let start = day6::parse_datastream(input.as_str(), 14);
|
|
||||||
|
|
||||||
println!("Message starts after {} characters", start + 1);
|
|
||||||
}
|
|
19
src/day6.rs
19
src/day6.rs
|
@ -1,19 +0,0 @@
|
||||||
use std::collections::{HashSet, VecDeque};
|
|
||||||
|
|
||||||
pub fn parse_datastream(stream: &str, n_distinct: usize) -> usize {
|
|
||||||
let mut chars: VecDeque<char> = VecDeque::new();
|
|
||||||
for (i, char) in stream.chars().enumerate() {
|
|
||||||
if i >= n_distinct {
|
|
||||||
chars.pop_front();
|
|
||||||
}
|
|
||||||
chars.push_back(char);
|
|
||||||
if i >= n_distinct - 1 {
|
|
||||||
let char_set: HashSet<char> = chars.iter().map(char::clone).collect();
|
|
||||||
if char_set.len() == n_distinct {
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
panic!("Couldn't find a start marker!")
|
|
||||||
}
|
|
|
@ -3,5 +3,4 @@ pub mod day2;
|
||||||
pub mod day3;
|
pub mod day3;
|
||||||
pub mod day4;
|
pub mod day4;
|
||||||
pub mod day5;
|
pub mod day5;
|
||||||
pub mod day6;
|
|
||||||
pub mod util;
|
pub mod util;
|
||||||
|
|
Loading…
Reference in New Issue