add alternate solutions with tuples instead of ranges
This commit is contained in:
parent
8dc7f8bf53
commit
63eaad3ad2
1 changed files with 46 additions and 0 deletions
|
@ -23,6 +23,30 @@ fn parse_input(input: &str) -> Vec<Contents> {
|
|||
out
|
||||
}
|
||||
|
||||
// with tuples instead of ranges
|
||||
type AltContents = ((u32, u32), (u32, u32));
|
||||
|
||||
#[aoc_generator(day4, part1, alt1)]
|
||||
fn parse_input1a(input: &str) -> Vec<AltContents> {
|
||||
let mut out = Vec::with_capacity(input.len());
|
||||
for line in input.lines() {
|
||||
let (a, b) = line.split_once(',').unwrap();
|
||||
let (alo, ahi) = a.split_once('-').unwrap();
|
||||
let (alo, ahi) = (alo.parse().unwrap(), ahi.parse().unwrap());
|
||||
let (blo, bhi) = b.split_once('-').unwrap();
|
||||
let (blo, bhi) = (blo.parse().unwrap(), bhi.parse().unwrap());
|
||||
out.push(((alo, ahi), (blo, bhi)));
|
||||
}
|
||||
|
||||
out
|
||||
}
|
||||
|
||||
// can't define a blanket alt generator?
|
||||
#[aoc_generator(day4, part2, alt1)]
|
||||
fn p2a(input: &str) -> Vec<AltContents> {
|
||||
parse_input1a(input)
|
||||
}
|
||||
|
||||
#[aoc_run(day4, part1)]
|
||||
fn part1(scheds: &[Contents]) -> u32 {
|
||||
let mut out = 0;
|
||||
|
@ -48,3 +72,25 @@ fn part2(scheds: &[Contents]) -> u32 {
|
|||
}
|
||||
out
|
||||
}
|
||||
|
||||
#[aoc_run(day4, part1, alt1)]
|
||||
fn part1a(scheds: &[AltContents]) -> u32 {
|
||||
let mut out = 0;
|
||||
for (a, b) in scheds {
|
||||
if (a.0 <= b.0 && b.1 <= a.1) || (b.0 <= a.0 && a.1 <= b.1) {
|
||||
out += 1;
|
||||
}
|
||||
}
|
||||
out
|
||||
}
|
||||
|
||||
#[aoc_run(day4, part2, alt1)]
|
||||
fn part2a(scheds: &[AltContents]) -> u32 {
|
||||
let mut out = 0;
|
||||
for (a, b) in scheds {
|
||||
if (a.0 <= b.0 && b.0 <= a.1) || (b.0 <= a.0 && a.0 <= b.1) {
|
||||
out += 1;
|
||||
}
|
||||
}
|
||||
out
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue