Day 6, puzzle 2
This commit is contained in:
		@ -2,7 +2,7 @@ use aoc22::{day6, util};
 | 
			
		||||
 | 
			
		||||
pub fn main() {
 | 
			
		||||
    let input = util::parse_input();
 | 
			
		||||
    let start = day6::parse_datastream(input.as_str());
 | 
			
		||||
    let start = day6::parse_datastream(input.as_str(), 4);
 | 
			
		||||
 | 
			
		||||
    println!("Datastream starts after {} characters", start + 1);
 | 
			
		||||
    println!("Packet starts after {} characters", start + 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										8
									
								
								src/bin/d6p2.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/bin/d6p2.rs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,8 @@
 | 
			
		||||
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);
 | 
			
		||||
}
 | 
			
		||||
@ -1,15 +1,15 @@
 | 
			
		||||
use std::collections::{HashSet, VecDeque};
 | 
			
		||||
 | 
			
		||||
pub fn parse_datastream(stream: &str) -> usize {
 | 
			
		||||
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 >= 4 {
 | 
			
		||||
        if i >= n_distinct {
 | 
			
		||||
            chars.pop_front();
 | 
			
		||||
        }
 | 
			
		||||
        chars.push_back(char);
 | 
			
		||||
        if i >= 3 {
 | 
			
		||||
        if i >= n_distinct - 1 {
 | 
			
		||||
            let char_set: HashSet<char> = chars.iter().map(char::clone).collect();
 | 
			
		||||
            if char_set.len() == 4 {
 | 
			
		||||
            if char_set.len() == n_distinct {
 | 
			
		||||
                return i;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user