Day6 but faaaast
This commit is contained in:
parent
5d89bc75d5
commit
373c34a160
|
@ -1,9 +1,30 @@
|
|||
use itertools::Itertools;
|
||||
use std::collections::HashSet;
|
||||
use std::error::Error;
|
||||
use std::fs::File;
|
||||
use std::io::{self, BufRead};
|
||||
use std::vec::Vec;
|
||||
|
||||
fn find_sequence(line: &str, len: usize) -> usize {
|
||||
let mut answer = 0;
|
||||
|
||||
for i in 0..line.len() - len {
|
||||
let mut set1 = 0u32;
|
||||
let mut repeated = false;
|
||||
for c in line[i..i + len].chars() {
|
||||
let bit = 1 << (c as u32 - 'a' as u32);
|
||||
if bit & set1 == 0 {
|
||||
set1 |= bit;
|
||||
} else {
|
||||
repeated = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if !repeated {
|
||||
answer = i + len;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return answer;
|
||||
}
|
||||
|
||||
fn main() -> Result<(), Box<dyn Error>> {
|
||||
let file = File::open("inputs/day6.txt")?;
|
||||
|
@ -14,28 +35,10 @@ fn main() -> Result<(), Box<dyn Error>> {
|
|||
.unwrap()
|
||||
.to_owned();
|
||||
|
||||
let mut answer1 = 0;
|
||||
|
||||
for i in 0..line.len() - 4 {
|
||||
let set: HashSet<char> = line[i..i + 4].chars().collect();
|
||||
if set.len() == 4 {
|
||||
answer1 = i + 4;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
let answer1 = find_sequence(&line, 4);
|
||||
println!("Answer Part1: {}", answer1);
|
||||
|
||||
let mut answer2 = 0;
|
||||
|
||||
for i in 0..line.len() - 14 {
|
||||
let set: HashSet<char> = line[i..i + 14].chars().collect();
|
||||
if set.len() == 14 {
|
||||
answer2 = i + 14;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
let answer2 = find_sequence(&line, 14);
|
||||
println!("Answer Part2: {}", answer2);
|
||||
|
||||
Ok(())
|
||||
|
|
Loading…
Reference in New Issue