Day 6 speed update
This commit is contained in:
parent
807a59b819
commit
d1be2b22e0
@ -1,22 +1,29 @@
|
||||
use std::{collections::HashSet, fs::read_to_string};
|
||||
|
||||
fn find_nonrecuring_sequence(input: &[char], length: usize) -> usize {
|
||||
fn find_nonrecuring_sequence(input: &[char], length: usize) -> Option<usize> {
|
||||
input
|
||||
.windows(length)
|
||||
.enumerate()
|
||||
.find(|(_, chars)| chars.iter().collect::<HashSet<_>>().len() == length)
|
||||
.unwrap_or((input.len(), &[]))
|
||||
.0
|
||||
+ length
|
||||
.find(|(_, chars)| {
|
||||
for i in 1..chars.len() {
|
||||
if chars[..i].contains(&chars[i]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
true
|
||||
})
|
||||
//.find(|(_, chars)| chars.iter().collect::<HashSet<_>>().len() == length)
|
||||
.map(|(i, _)| i + length)
|
||||
}
|
||||
|
||||
fn main() {
|
||||
fn main() -> Result<(), std::io::Error> {
|
||||
const PACKET_START_LENGTH: usize = 4;
|
||||
const MESSAGE_START_LENGTH: usize = 14;
|
||||
let input = read_to_string("input.txt").unwrap();
|
||||
let input = read_to_string("input.txt")?;
|
||||
let input = input.chars().collect::<Vec<_>>();
|
||||
let packet_marker = find_nonrecuring_sequence(&input, PACKET_START_LENGTH);
|
||||
println!("first packet marker at {packet_marker}");
|
||||
println!("first packet marker at {packet_marker:?}");
|
||||
let message_marker = find_nonrecuring_sequence(&input, MESSAGE_START_LENGTH);
|
||||
println!("first message marker at {message_marker}");
|
||||
println!("first message marker at {message_marker:?}");
|
||||
Ok(())
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user