day10: part2

master
Avril 3 years ago
parent 28e1b3e9ec
commit af3a4deb62
Signed by: flanchan
GPG Key ID: 284488987C31F630

@ -8,6 +8,7 @@ edition = "2018"
[features]
part2=[]
test = []
[dependencies]

@ -0,0 +1,27 @@
CARGO_FEATURE_FLAGS?=
RUSTFLAGS?=-C target-cpu=native
.PHONY: all
.NOTPARALLEL: all
all:
$(MAKE) part1
$(MAKE) part2
.NOTPARALLEL: part1
part1: $(wildcard src/*.rs)
RUSTFLAGS="$(RUSTFLAGS)" cargo build --release $(addprefix --features ,$(CARGO_FEATURE_FLAGS))
mv -f target/release/day10 $@
strip $@
.NOTPARALLEL: part2
part2: $(wildcard src/*.rs)
RUSTFLAGS="$(RUSTFLAGS)" cargo build --release --features $@ $(addprefix --features ,$(CARGO_FEATURE_FLAGS))
mv -f target/release/day10 $@
strip $@
clean:
rm -f part{1,2}
full-clean: clean
rm -rf target

@ -86,12 +86,12 @@ fn iterate_adaptor_chain(map: &Adaptors, mut diffs: Option<&mut Diffs>, finding:
}
}
#[cfg(feature="part2")]
mod part2;
fn main() -> Result<(), Box<dyn std::error::Error>>
{
#![allow(unused_variables)]
let (all_jolts, output_rat) = {
let mut map: Adaptors = conv_input(get_input()).collect();
let orat = map.iter().map(|&(x, _)| x).max().unwrap().get() + 3; // rating of output device
@ -101,16 +101,20 @@ fn main() -> Result<(), Box<dyn std::error::Error>>
(map, orat)
};
debug_assert_eq!(all_jolts.num_pages(), 1); // Assert we have space efficiency.
let diffs: Diffs = std::iter::successors(Some((0, Diffs::default())), |&(next, _)| {
if let (Some(next), d) = find_smallest(&all_jolts, next) {
Some((next, d))
} else {
None
}
}).map(|(_, d)| d).sum();
println!("{}", diffs.jd1() * diffs.jd3());
#[cfg(not(feature="part2"))]
{
let diffs: Diffs = std::iter::successors(Some((0, Diffs::default())), |&(next, _)| {
if let (Some(next), d) = find_smallest(&all_jolts, next) {
Some((next, d))
} else {
None
}
}).map(|(_, d)| d).sum();
println!("{}", diffs.jd1() * diffs.jd3());
}
#[cfg(feature="part2")]
println!("{}", {
//let start = all_jolts.iter().map(|&(k, _)| u8::from(k)).min().unwrap();
part2::solve(all_jolts, output_rat)

Loading…
Cancel
Save