parent
f82b65472b
commit
ace7f8a34c
@ -0,0 +1,58 @@ |
||||
use std::collections::HashSet; |
||||
|
||||
// type opcode<'a> = (usize, &'a str);
|
||||
|
||||
fn get_opcodes(input: &str, len: usize) -> Vec<usize> { |
||||
let mut ops: Vec<usize> = Vec::new(); |
||||
|
||||
for i in len..input.len() { |
||||
let op: Vec<char> = input[i-len..i].chars().collect(); |
||||
let setop: HashSet<char> = HashSet::from_iter(op.iter().copied()); |
||||
|
||||
// println!("{len}: {i} {op:?}");
|
||||
|
||||
if setop.len() == len { |
||||
ops.push(i); |
||||
// println!("\t pog");
|
||||
} |
||||
} |
||||
|
||||
ops |
||||
} |
||||
|
||||
pub fn part_one(input: &str) -> Option<u32> { |
||||
let cringe = get_opcodes(input, 4); |
||||
let first = *cringe.first().unwrap(); |
||||
|
||||
Some(first as u32) |
||||
} |
||||
|
||||
pub fn part_two(input: &str) -> Option<u32> { |
||||
let cringe = get_opcodes(input, 14); |
||||
let first = *cringe.first().unwrap(); |
||||
|
||||
Some(first as u32) |
||||
} |
||||
|
||||
fn main() { |
||||
let input = &advent_of_code::read_file("inputs", 6); |
||||
advent_of_code::solve!(1, part_one, input); |
||||
advent_of_code::solve!(2, part_two, input); |
||||
} |
||||
|
||||
#[cfg(test)] |
||||
mod tests { |
||||
use super::*; |
||||
|
||||
#[test] |
||||
fn test_part_one() { |
||||
let input = advent_of_code::read_file("examples", 6); |
||||
assert_eq!(part_one(&input), Some(7)); |
||||
} |
||||
|
||||
#[test] |
||||
fn test_part_two() { |
||||
let input = advent_of_code::read_file("examples", 6); |
||||
assert_eq!(part_two(&input), Some(19)); |
||||
} |
||||
} |
@ -0,0 +1 @@ |
||||
mjqjpqmgbljsphdztnvjfqwrcgsmlb |
Loading…
Reference in new issue