2022 rust day 6
This commit is contained in:
parent
e55f09878a
commit
9148cdbdd1
|
@ -12,22 +12,26 @@ pub fn run() -> () {
|
||||||
|
|
||||||
|
|
||||||
fn solve1(data: &Vec<char>) -> usize {
|
fn solve1(data: &Vec<char>) -> usize {
|
||||||
data.windows(4)
|
marker_for(&data, 4)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn solve2(data: &Vec<char>) -> usize {
|
||||||
|
marker_for(&data, 14)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn marker_for(data: &Vec<char>, window_len: usize) -> usize {
|
||||||
|
data.windows(window_len)
|
||||||
.enumerate()
|
.enumerate()
|
||||||
.filter_map(|(idx, window)| {
|
.filter_map(|(idx, window)| {
|
||||||
let unique = window.iter().copied().collect::<HashSet<char>>().len() == 4;
|
let unique = window.iter().copied().collect::<HashSet<char>>().len() == window_len;
|
||||||
match unique {
|
match unique {
|
||||||
true => Some(idx + 4),
|
true => Some(idx + window_len),
|
||||||
false => None
|
false => None
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.next().unwrap()
|
.next().unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn solve2(data: &Vec<char>) -> i32 {
|
|
||||||
2
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
fn parse_data(data: Vec<String>) -> Vec<char> {
|
fn parse_data(data: Vec<String>) -> Vec<char> {
|
||||||
data.into_iter()
|
data.into_iter()
|
||||||
|
@ -60,6 +64,6 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn part2() {
|
fn part2() {
|
||||||
let data = parse_data(data());
|
let data = parse_data(data());
|
||||||
assert_eq!(2, solve2(&data));
|
assert_eq!(19, solve2(&data));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue