day11 part2

This commit is contained in:
Johannes Schaefer
2018-12-11 11:37:32 +01:00
parent 267dfb8068
commit fc328d82af
2 changed files with 31 additions and 6 deletions

View File

@@ -1,4 +1,4 @@
fn main() { fn main() {
aoc_2018::tasks::day11::task1(); // aoc_2018::tasks::day11::task1();
// aoc_2018::tasks::day09::task2(); aoc_2018::tasks::day11::task2();
} }

View File

@@ -1,11 +1,12 @@
pub fn task1() { pub fn task1() {
let square_size = 3;
let serial = 6392; let serial = 6392;
let result = (1..=297) let result = (1..=300 - square_size)
.flat_map(|x: i32| (1..=297).map(move |y: i32| (x, y))) .flat_map(|x: i32| (1..=300 - square_size).map(move |y: i32| (x, y)))
.map(|(x, y)| { .map(|(x, y)| {
let power: i32 = (x..x + 3) let power: i32 = (x..x + square_size)
.map(|x| { .map(|x| {
(y..y + 3) (y..y + square_size)
.map(move |y| fuel_level(x, y, serial)) .map(move |y| fuel_level(x, y, serial))
.sum::<i32>() .sum::<i32>()
}) })
@@ -16,6 +17,30 @@ pub fn task1() {
println!("{:?}", result); 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::<i32>()
})
.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 { fn fuel_level(x: i32, y: i32, serial: i32) -> i32 {
let rack_id = x + 10; let rack_id = x + 10;
let mut power = rack_id * y; let mut power = rack_id * y;