From af3a4deb62f814d2733667910a46b4624fc558f9 Mon Sep 17 00:00:00 2001 From: Avril Date: Sun, 13 Dec 2020 15:26:19 +0000 Subject: [PATCH] day10: part2 --- day10/Cargo.toml | 1 + day10/Makefile | 27 +++++++++++++++++++++++++++ day10/src/main.rs | 28 ++++++++++++++++------------ 3 files changed, 44 insertions(+), 12 deletions(-) create mode 100644 day10/Makefile diff --git a/day10/Cargo.toml b/day10/Cargo.toml index e850e34..416ae24 100644 --- a/day10/Cargo.toml +++ b/day10/Cargo.toml @@ -8,6 +8,7 @@ edition = "2018" [features] +part2=[] test = [] [dependencies] diff --git a/day10/Makefile b/day10/Makefile new file mode 100644 index 0000000..59373dd --- /dev/null +++ b/day10/Makefile @@ -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 diff --git a/day10/src/main.rs b/day10/src/main.rs index bc87414..bd20757 100644 --- a/day10/src/main.rs +++ b/day10/src/main.rs @@ -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> { - + #![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> (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)