diff options
author | June McEnroe <june@causal.agency> | 2016-12-04 00:03:49 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2020-11-22 00:13:50 -0500 |
commit | b51befc02e6a3a9a8e73330d194c1b7cd456f153 (patch) | |
tree | b29f72ac8528eddb3da2560bfbf2a5506d4edf50 /src/bin | |
parent | Day 3 (diff) | |
download | aoc-b51befc02e6a3a9a8e73330d194c1b7cd456f153.tar.gz aoc-b51befc02e6a3a9a8e73330d194c1b7cd456f153.zip |
Day 3 part 2
Diffstat (limited to 'src/bin')
-rw-r--r-- | src/bin/day03.rs | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/src/bin/day03.rs b/src/bin/day03.rs index 8116acb..76b5aa5 100644 --- a/src/bin/day03.rs +++ b/src/bin/day03.rs @@ -22,7 +22,7 @@ impl FromStr for Triangle { } } -fn solve(input: &str) -> usize { +fn solve1(input: &str) -> usize { input.lines() .map(str::parse) .map(Result::unwrap) @@ -30,14 +30,33 @@ fn solve(input: &str) -> usize { .count() } +fn solve2(input: &str) -> usize { + let triangles: Vec<Triangle> = input.lines() + .map(str::parse) + .map(Result::unwrap) + .collect(); + + triangles.chunks(3) + .flat_map(|triple| { + vec![ + Triangle(triple[0].0, triple[1].0, triple[2].0), + Triangle(triple[0].1, triple[1].1, triple[2].1), + Triangle(triple[0].2, triple[1].2, triple[2].2), + ] + }) + .filter(Triangle::valid) + .count() +} + fn main() { let mut input = String::new(); io::stdin().read_to_string(&mut input).unwrap(); - println!("Part 1: {}", solve(&input)); + println!("Part 1: {}", solve1(&input)); + println!("Part 2: {}", solve2(&input)); } #[test] fn part1() { - assert_eq!(0, solve("5 10 25")); + assert_eq!(0, solve1("5 10 25")); } |