add 2022/04
This commit is contained in:
parent
56fa30a5a4
commit
4e7420463d
|
@ -1,29 +1,46 @@
|
|||
#![feature(test)]
|
||||
extern crate test;
|
||||
use std::ops::RangeInclusive;
|
||||
|
||||
use aoc2022::{boilerplate, common::*};
|
||||
|
||||
const DAY: usize = 4;
|
||||
type Parsed = Vec<usize>;
|
||||
type Parsed = Vec<(RangeInclusive<usize>, RangeInclusive<usize>)>;
|
||||
|
||||
fn parse_range(r: &str) -> RangeInclusive<usize> {
|
||||
let (a, b) = r.split_once('-').unwrap();
|
||||
parse_num(a)..=parse_num(b)
|
||||
}
|
||||
|
||||
fn parse_input(raw: &str) -> Parsed {
|
||||
parse_nums(raw)
|
||||
raw.lines()
|
||||
.map(|line| {
|
||||
let (a, b) = line.split_once(',').unwrap();
|
||||
(parse_range(a), parse_range(b))
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
fn part1(parsed: &Parsed) -> usize {
|
||||
unimplemented!()
|
||||
parsed.iter().filter(|(a, b)| (a.start() <= b.start() && a.end() >= b.end()) || (b.start() <= a.start() && b.end() >= a.end())).count()
|
||||
}
|
||||
|
||||
fn part2(parsed: &Parsed) -> usize {
|
||||
unimplemented!()
|
||||
parsed.iter().filter(|(a, b)| a.contains(b.start()) || a.contains(b.end()) || b.contains(a.start()) || b.contains(a.end())).count()
|
||||
}
|
||||
|
||||
boilerplate! {
|
||||
TEST_INPUT == "",
|
||||
TEST_INPUT == "2-4,6-8
|
||||
2-3,4-5
|
||||
5-7,7-9
|
||||
2-8,3-7
|
||||
6-6,4-6
|
||||
2-6,4-8",
|
||||
tests: {
|
||||
part1: { TEST_INPUT => 0 },
|
||||
part2: { TEST_INPUT => 0 },
|
||||
part1: { TEST_INPUT => 2 },
|
||||
part2: { TEST_INPUT => 4 },
|
||||
},
|
||||
bench1 == 0,
|
||||
bench2 == 0,
|
||||
bench_parse: Vec::len => 0,
|
||||
bench1 == 494,
|
||||
bench2 == 833,
|
||||
bench_parse: Vec::len => 1000,
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user