From 2a30511e2ad4f2e66dabea802cfaf5be20a04ce0 Mon Sep 17 00:00:00 2001 From: Curtis McEnroe Date: Sun, 4 Dec 2016 00:03:49 -0500 Subject: Day 3 part 2 --- src/bin/day03.rs | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'src') 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 = 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")); } -- cgit 1.4.1