summary refs log tree commit diff homepage
path: root/src/bin
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2016-12-04 00:03:49 -0500
committerJune McEnroe <june@causal.agency>2020-11-22 00:13:50 -0500
commitb51befc02e6a3a9a8e73330d194c1b7cd456f153 (patch)
treeb29f72ac8528eddb3da2560bfbf2a5506d4edf50 /src/bin
parentDay 3 (diff)
downloadaoc-b51befc02e6a3a9a8e73330d194c1b7cd456f153.tar.gz
aoc-b51befc02e6a3a9a8e73330d194c1b7cd456f153.zip
Day 3 part 2
Diffstat (limited to 'src/bin')
-rw-r--r--src/bin/day03.rs25
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"));
 }
tils/catsit/distinfo?id=1ba4e88f401526eafe32bec9ad0cb0b58bacae5c&follow=1'>Update catsit to 1.2June McEnroe 2021-02-08Update pounce to 2.3June McEnroe 2021-02-04Update cgit-causal-agency to 8e4c63cJune McEnroe 2021-01-20Update cgit-causal-agency to 8a10aa5June McEnroe 2021-01-17Update cgit-causal-agencyJune McEnroe 2021-01-17Update scooper to 1.1June McEnroe 2021-01-17Update catgirl to 1.5 (BONUS WEBISODE)June McEnroe 2021-01-15Update litterbox to 1.7June McEnroe 2021-01-15Update pounce to 2.2June McEnroe 2021-01-15Update catgirl to 1.4June McEnroe 2020-12-28Replace cgit-patched with cgit-causal-agencyJune McEnroe 2020-12-18Add notemap portJune McEnroe 2020-12-15Update libretls to 3.3.1June McEnroe 2020-12-15Update catsit to 1.1June McEnroe 2020-12-15Update pounce to 2.1p1June McEnroe 2020-12-15Add imbox portJune McEnroe 2020-11-24Update pounce to 2.1June McEnroe 2020-11-24Update libretls to 3.3.0June McEnroe 2020-11-17Update catgirl to 1.3June McEnroe 2020-11-17Update libretls to 3.2.2June McEnroe 2020-09-29Update libretls to 3.2.1June McEnroe 2020-09-10Update catgirl to 1.2June McEnroe 2020-09-09Add pounce-palaver portJune McEnroe 2020-09-09Update pounce to 2.0June McEnroe 2020-09-09Update litterbox to 1.6June McEnroe 2020-08-23Add scooper portJune McEnroe 2020-08-23Add catsit portJune McEnroe 2020-08-13Update pounce to 1.4p2June McEnroe 2020-08-11Update pounce to 1.4p1June McEnroe 2020-08-10Add litterbox portJune McEnroe 2020-08-10Add missing USES=pkgconfig to pounceJune McEnroe