AoC2022/src/bin/day6.rs

46 lines
1.0 KiB
Rust
Raw Permalink Normal View History

2022-12-06 18:43:08 +01:00
use std::error::Error;
use std::fs::File;
use std::io::{self, BufRead};
2022-12-06 19:01:54 +01:00
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;
}
2022-12-06 18:43:08 +01:00
fn main() -> Result<(), Box<dyn Error>> {
let file = File::open("inputs/day6.txt")?;
let line = io::BufReader::new(file)
.lines()
.nth(0)
.unwrap()
.unwrap()
.to_owned();
2022-12-06 19:01:54 +01:00
let answer1 = find_sequence(&line, 4);
2022-12-06 18:43:08 +01:00
println!("Answer Part1: {}", answer1);
2022-12-06 19:01:54 +01:00
let answer2 = find_sequence(&line, 14);
2022-12-06 18:43:08 +01:00
println!("Answer Part2: {}", answer2);
Ok(())
}