diff options
-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")); } |