From b9a8e7585bf931a3fac29acb665f9dc39ac95ae9 Mon Sep 17 00:00:00 2001 From: Hubert Van De Walle Date: Thu, 2 Dec 2021 09:08:06 +0100 Subject: [PATCH] Day02 2021 --- 2021/src/main/kotlin/Day02.kt | 40 ++ 2021/src/main/resources/day02.txt | 1000 +++++++++++++++++++++++++++++ 2021/src/test/kotlin/Day02Test.kt | 18 + 3 files changed, 1058 insertions(+) create mode 100644 2021/src/main/kotlin/Day02.kt create mode 100644 2021/src/main/resources/day02.txt create mode 100644 2021/src/test/kotlin/Day02Test.kt diff --git a/2021/src/main/kotlin/Day02.kt b/2021/src/main/kotlin/Day02.kt new file mode 100644 index 0000000..12b1e21 --- /dev/null +++ b/2021/src/main/kotlin/Day02.kt @@ -0,0 +1,40 @@ +package be.vandewalleh.aoc.days + +import be.vandewalleh.aoc.utils.input.Day +import be.vandewalleh.aoc.utils.input.Text + +@Day +class Day02(@Text input: String) { + private val lines = input.lines().map { it.split(' ').let { it[0] to it[1].toInt() } } + + fun part1(): Any { + var horizontalPosition = 0 + var depth = 0 + lines.forEach { (direction, value) -> + when (direction) { + "forward" -> horizontalPosition += value + "down" -> depth += value + "up" -> depth -= value + } + } + return horizontalPosition * depth + } + + fun part2(): Any { + var horizontalPosition = 0 + var depth = 0 + var aim = 0 + lines.forEach { (direction, value) -> + when (direction) { + "forward" -> { + horizontalPosition += value + depth += aim * value + } + "down" -> aim += value + "up" -> aim -= value + } + } + return horizontalPosition * depth + } + +} diff --git a/2021/src/main/resources/day02.txt b/2021/src/main/resources/day02.txt new file mode 100644 index 0000000..bd4d307 --- /dev/null +++ b/2021/src/main/resources/day02.txt @@ -0,0 +1,1000 @@ +forward 2 +down 4 +down 3 +up 4 +down 1 +down 8 +up 9 +forward 1 +down 9 +forward 6 +down 7 +forward 1 +down 1 +up 2 +forward 8 +down 3 +down 9 +down 3 +down 8 +forward 3 +forward 5 +up 8 +forward 6 +forward 5 +forward 6 +forward 4 +up 3 +forward 1 +up 4 +forward 2 +up 2 +up 2 +down 6 +forward 3 +forward 4 +forward 5 +forward 1 +down 1 +down 1 +forward 3 +forward 2 +up 7 +forward 6 +down 5 +forward 9 +up 4 +down 6 +up 8 +forward 7 +forward 5 +forward 8 +down 5 +down 9 +forward 3 +forward 2 +forward 9 +forward 1 +down 3 +forward 1 +down 9 +forward 4 +forward 3 +forward 7 +forward 6 +forward 6 +forward 6 +forward 8 +forward 5 +forward 4 +up 1 +forward 8 +forward 1 +down 7 +forward 2 +up 9 +forward 4 +up 7 +down 4 +down 3 +down 9 +down 7 +down 1 +forward 2 +up 6 +down 2 +down 3 +down 5 +forward 6 +forward 5 +forward 6 +forward 2 +forward 1 +forward 5 +forward 5 +down 9 +forward 8 +forward 3 +down 8 +up 2 +forward 5 +forward 6 +down 1 +down 7 +down 5 +forward 3 +down 9 +down 2 +forward 6 +forward 6 +forward 4 +up 5 +up 2 +up 2 +up 2 +forward 2 +up 3 +down 4 +forward 2 +down 6 +forward 1 +down 8 +up 6 +up 9 +forward 7 +forward 5 +forward 9 +forward 5 +up 3 +up 6 +up 3 +forward 9 +forward 7 +up 7 +forward 3 +forward 3 +down 5 +down 2 +down 1 +down 8 +up 7 +down 2 +up 4 +forward 5 +down 5 +down 8 +down 4 +down 8 +down 4 +down 8 +down 2 +forward 5 +down 9 +forward 6 +forward 5 +up 4 +up 2 +down 7 +down 9 +forward 6 +forward 6 +down 3 +up 9 +up 8 +down 4 +forward 9 +down 7 +down 4 +down 6 +down 4 +down 7 +down 2 +up 9 +forward 9 +forward 6 +down 6 +up 6 +down 7 +down 5 +forward 9 +down 9 +down 8 +down 6 +down 3 +forward 5 +down 5 +forward 2 +up 4 +down 5 +forward 6 +forward 6 +forward 6 +down 4 +down 8 +down 3 +down 5 +forward 6 +forward 2 +forward 4 +forward 2 +forward 3 +up 9 +forward 8 +down 5 +down 9 +forward 5 +forward 7 +down 5 +down 2 +up 3 +forward 4 +forward 4 +up 4 +forward 5 +forward 8 +up 4 +forward 3 +down 8 +up 8 +forward 9 +up 9 +forward 5 +forward 8 +down 8 +up 9 +up 2 +forward 3 +forward 7 +down 9 +down 6 +forward 5 +down 1 +forward 6 +forward 8 +up 2 +down 8 +forward 2 +forward 7 +down 7 +down 7 +down 7 +down 3 +up 6 +down 5 +down 4 +forward 1 +forward 3 +down 3 +down 1 +forward 7 +forward 8 +up 8 +forward 3 +forward 8 +up 9 +down 5 +down 9 +forward 4 +down 9 +up 8 +up 1 +forward 6 +down 2 +up 2 +down 3 +up 1 +down 7 +down 8 +forward 6 +forward 8 +up 5 +up 2 +down 1 +forward 6 +down 1 +up 6 +down 9 +down 8 +down 5 +down 7 +forward 8 +down 1 +up 5 +down 2 +down 5 +forward 9 +up 8 +down 6 +forward 7 +forward 8 +down 5 +forward 3 +forward 4 +up 1 +forward 2 +forward 9 +up 7 +down 9 +forward 2 +down 3 +down 6 +down 9 +forward 4 +up 3 +forward 3 +down 6 +forward 1 +down 3 +down 4 +down 8 +down 5 +forward 6 +down 7 +forward 6 +up 8 +forward 9 +down 3 +forward 8 +forward 9 +down 3 +forward 9 +forward 4 +forward 2 +down 4 +down 1 +forward 3 +forward 3 +forward 3 +down 1 +down 6 +up 1 +down 6 +forward 2 +down 6 +down 4 +down 4 +forward 5 +down 4 +up 4 +up 7 +down 4 +forward 4 +down 8 +down 5 +down 2 +down 3 +forward 3 +down 4 +forward 8 +down 4 +down 2 +up 2 +down 8 +forward 9 +down 1 +up 1 +down 8 +down 8 +up 2 +down 8 +up 2 +forward 4 +down 2 +forward 8 +down 1 +down 9 +forward 3 +up 5 +down 8 +down 2 +forward 5 +forward 1 +forward 6 +forward 1 +down 8 +forward 3 +down 5 +up 7 +down 8 +forward 5 +down 8 +forward 2 +down 6 +down 9 +forward 9 +down 8 +forward 7 +forward 1 +forward 9 +forward 8 +forward 2 +down 4 +forward 8 +up 7 +down 2 +down 6 +forward 5 +forward 4 +down 5 +down 2 +forward 2 +up 8 +up 4 +down 8 +forward 2 +up 3 +forward 3 +down 4 +forward 8 +forward 7 +forward 4 +up 1 +down 6 +forward 1 +down 3 +forward 6 +up 3 +forward 7 +down 6 +forward 7 +forward 5 +forward 8 +down 9 +up 7 +down 1 +down 5 +forward 1 +down 8 +down 1 +forward 4 +forward 5 +forward 5 +down 9 +forward 9 +down 4 +forward 1 +up 8 +down 5 +down 9 +down 3 +down 2 +down 5 +down 3 +forward 7 +up 3 +forward 3 +down 4 +up 5 +forward 4 +up 6 +down 4 +forward 2 +up 3 +down 2 +up 1 +up 7 +down 5 +up 3 +forward 5 +up 2 +down 9 +down 6 +forward 5 +up 3 +down 7 +up 1 +forward 1 +forward 3 +down 9 +down 1 +forward 6 +down 5 +forward 8 +down 1 +down 5 +up 6 +forward 8 +forward 8 +forward 9 +down 1 +down 6 +down 8 +up 1 +down 7 +forward 3 +forward 5 +forward 2 +down 4 +forward 4 +forward 2 +down 8 +up 2 +down 1 +up 9 +down 4 +up 9 +down 2 +forward 5 +forward 4 +forward 7 +down 8 +forward 4 +down 5 +forward 7 +forward 2 +down 6 +down 3 +forward 7 +forward 8 +forward 2 +down 3 +forward 4 +down 6 +forward 4 +forward 3 +down 3 +forward 3 +down 8 +down 2 +forward 6 +down 4 +down 9 +down 2 +down 7 +forward 4 +forward 1 +forward 7 +down 9 +down 5 +forward 5 +up 7 +forward 4 +down 1 +up 3 +down 5 +down 3 +down 7 +down 7 +down 7 +up 6 +forward 3 +down 6 +down 3 +up 2 +down 7 +forward 5 +forward 5 +down 6 +forward 9 +up 2 +forward 6 +forward 3 +forward 5 +forward 9 +forward 1 +up 4 +up 7 +down 8 +down 3 +forward 1 +down 6 +up 8 +down 7 +down 8 +down 9 +down 9 +forward 5 +down 6 +up 7 +down 3 +down 5 +down 5 +down 6 +up 3 +forward 8 +down 4 +up 8 +forward 4 +down 1 +up 8 +up 5 +down 4 +up 8 +forward 8 +forward 7 +up 3 +down 7 +forward 8 +down 1 +down 7 +down 5 +down 5 +down 2 +up 3 +forward 3 +forward 8 +down 4 +down 3 +up 7 +down 1 +down 9 +forward 9 +forward 1 +forward 1 +forward 2 +down 7 +down 9 +up 5 +down 1 +forward 4 +forward 9 +forward 3 +forward 3 +forward 4 +forward 1 +down 2 +down 2 +up 1 +forward 7 +forward 8 +forward 6 +up 6 +down 5 +forward 2 +down 4 +forward 5 +forward 2 +forward 7 +down 1 +down 9 +forward 2 +forward 2 +forward 3 +up 2 +up 2 +up 2 +down 5 +forward 5 +forward 9 +down 4 +down 2 +down 5 +down 9 +up 7 +forward 2 +forward 7 +forward 4 +forward 5 +down 5 +down 8 +down 9 +down 4 +up 8 +up 1 +forward 8 +up 2 +up 8 +up 4 +forward 1 +forward 4 +down 9 +up 1 +down 8 +down 4 +down 4 +down 2 +down 9 +forward 7 +up 1 +down 4 +forward 4 +down 8 +forward 1 +forward 8 +forward 1 +up 7 +forward 4 +forward 6 +forward 2 +forward 8 +up 4 +down 1 +up 7 +up 8 +down 9 +forward 3 +down 3 +forward 6 +forward 5 +up 1 +forward 9 +up 6 +up 1 +forward 1 +forward 2 +forward 7 +down 8 +up 4 +forward 4 +down 3 +down 3 +forward 2 +forward 6 +down 4 +forward 2 +forward 8 +up 5 +down 1 +forward 7 +up 6 +forward 2 +down 6 +forward 7 +down 2 +down 9 +down 1 +up 4 +up 8 +down 7 +up 6 +forward 3 +forward 4 +down 6 +forward 5 +down 3 +up 6 +down 3 +down 7 +forward 7 +up 3 +down 1 +forward 2 +up 2 +up 6 +up 1 +up 8 +up 3 +down 9 +down 8 +forward 6 +up 9 +down 1 +forward 5 +down 4 +up 7 +down 5 +up 1 +down 9 +down 8 +down 2 +down 1 +up 8 +up 7 +up 5 +down 5 +forward 1 +forward 6 +down 4 +down 3 +forward 5 +forward 5 +up 5 +down 6 +down 6 +down 2 +down 7 +up 1 +up 9 +up 4 +down 7 +up 5 +forward 5 +forward 6 +forward 6 +down 7 +down 6 +up 8 +forward 8 +forward 1 +down 6 +up 2 +forward 8 +down 7 +down 5 +up 1 +up 7 +up 2 +up 3 +down 3 +forward 1 +forward 4 +up 8 +forward 9 +down 1 +up 4 +forward 3 +down 9 +down 9 +forward 4 +down 8 +up 2 +forward 1 +forward 3 +up 5 +forward 5 +up 4 +forward 5 +forward 6 +forward 2 +forward 4 +up 5 +down 7 +up 1 +forward 7 +down 5 +forward 5 +down 5 +up 2 +down 3 +forward 6 +forward 5 +up 4 +up 5 +down 2 +forward 2 +down 2 +down 2 +up 8 +up 2 +down 7 +forward 3 +down 7 +down 7 +down 2 +up 5 +up 5 +forward 5 +up 5 +down 9 +down 1 +up 7 +up 5 +forward 5 +forward 1 +down 7 +down 8 +down 4 +forward 1 +down 2 +up 9 +forward 1 +forward 5 +forward 8 +down 7 +down 6 +up 2 +down 6 +forward 4 +down 9 +down 1 +down 9 +up 5 +up 1 +down 9 +forward 7 +up 4 +down 5 +up 1 +forward 2 +forward 2 +up 9 +forward 8 +up 4 +up 1 +up 6 +up 5 +down 5 +up 4 +up 1 +forward 9 +forward 3 +down 4 +down 9 +down 4 +forward 9 +down 2 +down 1 +up 9 +up 4 +forward 8 +forward 9 +forward 8 +up 4 +forward 6 +down 7 +down 6 +down 1 +forward 5 +forward 4 +up 4 +forward 4 +up 2 +forward 7 +forward 2 +down 2 +down 1 +up 5 +up 7 +down 5 +down 9 +up 1 +down 2 +forward 4 +forward 8 +up 1 +forward 7 +down 7 +forward 1 +down 2 +down 9 +forward 7 +forward 6 +forward 1 +forward 6 +forward 9 +up 8 +forward 4 +up 6 +forward 9 +forward 1 +forward 7 +forward 9 +down 9 +down 7 +down 6 +down 2 +down 4 +forward 9 +forward 4 +forward 6 +forward 1 +forward 3 +down 2 +forward 9 +down 9 +forward 8 +forward 7 +up 4 +forward 7 +forward 8 +up 4 +down 1 +up 3 +down 1 +down 9 +down 5 +down 2 +down 8 +down 3 +down 8 +forward 2 +forward 5 +down 5 +down 7 +forward 4 +up 6 +forward 5 +up 2 +up 6 +forward 6 +down 7 +down 8 +up 4 +up 9 +forward 7 +down 3 +forward 8 +forward 6 +up 3 +up 4 +down 1 +forward 2 +down 9 +down 1 +down 6 +down 5 +up 7 +forward 7 +down 6 +down 2 +down 5 +up 2 +forward 7 +forward 2 +down 6 +down 1 +forward 4 +up 9 +down 1 +down 7 +forward 1 diff --git a/2021/src/test/kotlin/Day02Test.kt b/2021/src/test/kotlin/Day02Test.kt new file mode 100644 index 0000000..9059440 --- /dev/null +++ b/2021/src/test/kotlin/Day02Test.kt @@ -0,0 +1,18 @@ +package be.vandewalleh.aoc.days + +class Day02Test : BaseDayTest(2) { + override val example = """ + forward 5 + down 5 + forward 8 + up 3 + down 8 + forward 2 + """.trimIndent() + + override val part1Example = 150 + override val part2Example = 900 + + override val part1Answer = 1938402 + override val part2Answer = 1947878632 +}