From fc328d82af544a03cd8487137e683f67f02885c3 Mon Sep 17 00:00:00 2001 From: Johannes Schaefer Date: Tue, 11 Dec 2018 11:37:32 +0100 Subject: [PATCH] day11 part2 --- src/main.rs | 4 ++-- src/tasks/day11.rs | 33 +++++++++++++++++++++++++++++---- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/main.rs b/src/main.rs index 14febb4..ba5cbc5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,4 @@ fn main() { - aoc_2018::tasks::day11::task1(); - // aoc_2018::tasks::day09::task2(); + // aoc_2018::tasks::day11::task1(); + aoc_2018::tasks::day11::task2(); } diff --git a/src/tasks/day11.rs b/src/tasks/day11.rs index e26bf4b..4cbed88 100644 --- a/src/tasks/day11.rs +++ b/src/tasks/day11.rs @@ -1,11 +1,12 @@ pub fn task1() { + let square_size = 3; let serial = 6392; - let result = (1..=297) - .flat_map(|x: i32| (1..=297).map(move |y: i32| (x, y))) + let result = (1..=300 - square_size) + .flat_map(|x: i32| (1..=300 - square_size).map(move |y: i32| (x, y))) .map(|(x, y)| { - let power: i32 = (x..x + 3) + let power: i32 = (x..x + square_size) .map(|x| { - (y..y + 3) + (y..y + square_size) .map(move |y| fuel_level(x, y, serial)) .sum::() }) @@ -16,6 +17,30 @@ pub fn task1() { println!("{:?}", result); } +pub fn task2() { + let serial = 6392; + let result = (1..300) + .map(|square_size| { + let result = (1..=300 - square_size) + .flat_map(|x: i32| (1..=300 - square_size).map(move |y: i32| (x, y))) + .map(|(x, y)| { + let power: i32 = (x..x + square_size) + .map(|x| { + (y..y + square_size) + .map(move |y| fuel_level(x, y, serial)) + .sum::() + }) + .sum(); + (x, y, power) + }) + .max_by_key(|(_, _, value)| *value) + .unwrap(); + (result.0, result.1, result.2, square_size) + }) + .max_by_key(|result| result.2); + println!("{:?}", result); +} + fn fuel_level(x: i32, y: i32, serial: i32) -> i32 { let rack_id = x + 10; let mut power = rack_id * y;