From 267dfb80680a4cd2fddea9b08f981d209fc39646 Mon Sep 17 00:00:00 2001 From: Johannes Schaefer Date: Tue, 11 Dec 2018 11:25:57 +0100 Subject: [PATCH] day11 part 1 --- src/main.rs | 2 +- src/tasks/day11.rs | 38 ++++++++++++++++++++++++++++++++++++++ src/tasks/mod.rs | 1 + 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 src/tasks/day11.rs diff --git a/src/main.rs b/src/main.rs index e8dfe38..14febb4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,4 @@ fn main() { - aoc_2018::tasks::day10::task1(); + aoc_2018::tasks::day11::task1(); // aoc_2018::tasks::day09::task2(); } diff --git a/src/tasks/day11.rs b/src/tasks/day11.rs new file mode 100644 index 0000000..e26bf4b --- /dev/null +++ b/src/tasks/day11.rs @@ -0,0 +1,38 @@ +pub fn task1() { + let serial = 6392; + let result = (1..=297) + .flat_map(|x: i32| (1..=297).map(move |y: i32| (x, y))) + .map(|(x, y)| { + let power: i32 = (x..x + 3) + .map(|x| { + (y..y + 3) + .map(move |y| fuel_level(x, y, serial)) + .sum::() + }) + .sum(); + (x, y, power) + }) + .max_by_key(|(_, _, value)| *value); + println!("{:?}", result); +} + +fn fuel_level(x: i32, y: i32, serial: i32) -> i32 { + let rack_id = x + 10; + let mut power = rack_id * y; + power += serial; + power *= rack_id; + power = power / 100 % 10; + power = power - 5; + power +} + +mod test { + use super::fuel_level; + #[test] + fn name() { + assert_eq!(fuel_level(3, 5, 8), 4); + assert_eq!(fuel_level(122, 79, 57), -5); + assert_eq!(fuel_level(217, 196, 39), 0); + assert_eq!(fuel_level(101, 153, 71), 4); + } +} diff --git a/src/tasks/mod.rs b/src/tasks/mod.rs index aaf8128..490893f 100644 --- a/src/tasks/mod.rs +++ b/src/tasks/mod.rs @@ -8,3 +8,4 @@ pub mod day07; pub mod day08; pub mod day09; pub mod day10; +pub mod day11;