Created
December 31, 2021 12:38
-
-
Save eugene70/5aefe5875944b72665b66542ff0db567 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package aoc2021 | |
import scala.annotation.tailrec | |
object Day02: | |
case class Move(direction: String, step: Int) | |
type InputType = IndexedSeq[Move] | |
@main def runDay02: Unit = | |
val testData = time("testReady", () => ready(testInput)) | |
time("testPart1", () => part1(testData)) // should be 150 | |
//time("testPart2", () => part2(testData)) // should be | |
val data = time("ready", () => ready(input)) | |
time("part1", () => part1(data)) | |
//time("part2", () => part2(data)) | |
def ready(input: String): InputType = | |
input | |
.linesIterator | |
.map(_.split(" ")) | |
.map(a => Move(a(0), a(1).toInt)) | |
.toIndexedSeq | |
def part1(data: InputType): Int = | |
val map: Map[String, Int] = data | |
.groupMapReduce(_.direction)(_.step)(_ + _) | |
map.getOrElse("forward", 0) * (map.getOrElse("down", 0) - map.getOrElse("up", 0)) | |
def part2(data: InputType): Int = | |
??? | |
val testInput = | |
"""forward 5 | |
|down 5 | |
|forward 8 | |
|up 3 | |
|down 8 | |
|forward 2""".stripMargin | |
val input = | |
"""forward 4 | |
|forward 6 | |
|down 8 | |
|forward 3 | |
|forward 9 | |
|down 7 | |
|down 7 | |
|down 1 | |
|forward 1 | |
|forward 5 | |
|up 4 | |
|forward 3 | |
|forward 9 | |
|forward 5 | |
|down 8 | |
|forward 6 | |
|forward 8 | |
|up 4 | |
|forward 1 | |
|forward 4 | |
|up 3 | |
|down 2 | |
|down 2 | |
|up 8 | |
|forward 9 | |
|down 5 | |
|down 6 | |
|down 4 | |
|forward 1 | |
|forward 7 | |
|down 1 | |
|forward 2 | |
|down 7 | |
|down 6 | |
|forward 3 | |
|forward 1 | |
|down 7 | |
|forward 3 | |
|up 7 | |
|up 1 | |
|forward 6 | |
|down 8 | |
|down 4 | |
|down 1 | |
|down 7 | |
|forward 9 | |
|down 2 | |
|forward 9 | |
|up 4 | |
|down 7 | |
|forward 9 | |
|forward 9 | |
|up 4 | |
|up 7 | |
|up 2 | |
|forward 1 | |
|down 9 | |
|forward 2 | |
|forward 8 | |
|forward 5 | |
|down 9 | |
|forward 5 | |
|up 1 | |
|forward 8 | |
|down 6 | |
|down 1 | |
|down 1 | |
|down 8 | |
|down 6 | |
|down 4 | |
|down 6 | |
|forward 7 | |
|forward 5 | |
|forward 4 | |
|up 8 | |
|up 4 | |
|forward 6 | |
|forward 9 | |
|forward 6 | |
|down 2 | |
|up 8 | |
|forward 3 | |
|forward 8 | |
|down 5 | |
|forward 1 | |
|down 6 | |
|down 7 | |
|up 4 | |
|down 8 | |
|forward 6 | |
|up 4 | |
|forward 7 | |
|down 8 | |
|down 8 | |
|down 2 | |
|down 8 | |
|up 7 | |
|forward 7 | |
|forward 6 | |
|down 2 | |
|forward 9 | |
|down 7 | |
|down 4 | |
|forward 1 | |
|up 9 | |
|down 6 | |
|up 7 | |
|down 6 | |
|down 2 | |
|down 2 | |
|forward 3 | |
|down 8 | |
|forward 4 | |
|down 7 | |
|down 2 | |
|up 8 | |
|down 6 | |
|forward 2 | |
|forward 2 | |
|down 6 | |
|up 6 | |
|down 7 | |
|up 5 | |
|up 4 | |
|up 9 | |
|forward 9 | |
|forward 7 | |
|down 4 | |
|down 4 | |
|up 5 | |
|down 2 | |
|forward 3 | |
|down 9 | |
|down 5 | |
|forward 8 | |
|up 3 | |
|forward 7 | |
|forward 9 | |
|down 3 | |
|forward 1 | |
|up 1 | |
|forward 5 | |
|down 8 | |
|down 2 | |
|forward 3 | |
|down 6 | |
|down 8 | |
|up 9 | |
|down 9 | |
|forward 4 | |
|up 5 | |
|forward 8 | |
|forward 7 | |
|forward 7 | |
|down 3 | |
|down 5 | |
|forward 8 | |
|down 1 | |
|down 2 | |
|forward 2 | |
|up 9 | |
|down 3 | |
|down 9 | |
|forward 2 | |
|down 4 | |
|up 9 | |
|up 3 | |
|down 1 | |
|down 1 | |
|forward 6 | |
|down 5 | |
|down 9 | |
|forward 2 | |
|up 5 | |
|forward 3 | |
|down 1 | |
|down 7 | |
|forward 1 | |
|forward 1 | |
|down 7 | |
|up 3 | |
|up 1 | |
|up 6 | |
|forward 9 | |
|up 1 | |
|down 8 | |
|down 5 | |
|up 6 | |
|up 2 | |
|down 8 | |
|forward 3 | |
|forward 1 | |
|down 7 | |
|up 1 | |
|down 9 | |
|down 9 | |
|up 8 | |
|forward 4 | |
|up 8 | |
|forward 8 | |
|down 5 | |
|forward 5 | |
|forward 2 | |
|forward 1 | |
|forward 5 | |
|down 8 | |
|forward 6 | |
|forward 8 | |
|down 5 | |
|forward 8 | |
|up 1 | |
|up 9 | |
|up 7 | |
|down 5 | |
|down 9 | |
|up 4 | |
|down 7 | |
|up 8 | |
|up 3 | |
|forward 6 | |
|down 9 | |
|forward 4 | |
|down 4 | |
|forward 2 | |
|forward 3 | |
|down 4 | |
|down 5 | |
|down 3 | |
|forward 9 | |
|forward 5 | |
|forward 9 | |
|forward 4 | |
|down 5 | |
|down 7 | |
|down 5 | |
|forward 8 | |
|up 5 | |
|down 2 | |
|forward 3 | |
|forward 4 | |
|down 5 | |
|up 8 | |
|forward 5 | |
|down 2 | |
|up 4 | |
|down 5 | |
|down 2 | |
|forward 1 | |
|up 3 | |
|down 6 | |
|down 8 | |
|down 3 | |
|forward 1 | |
|up 5 | |
|forward 1 | |
|down 3 | |
|forward 4 | |
|down 6 | |
|forward 8 | |
|forward 4 | |
|forward 1 | |
|down 8 | |
|down 2 | |
|forward 8 | |
|down 5 | |
|forward 2 | |
|forward 2 | |
|down 9 | |
|forward 1 | |
|forward 8 | |
|up 1 | |
|forward 1 | |
|down 1 | |
|down 7 | |
|down 4 | |
|up 4 | |
|down 3 | |
|forward 1 | |
|forward 9 | |
|down 9 | |
|up 6 | |
|up 8 | |
|down 2 | |
|down 2 | |
|down 3 | |
|forward 2 | |
|forward 9 | |
|down 1 | |
|up 9 | |
|down 3 | |
|down 9 | |
|down 1 | |
|down 7 | |
|forward 9 | |
|forward 7 | |
|down 5 | |
|down 2 | |
|down 9 | |
|down 2 | |
|down 7 | |
|up 7 | |
|down 2 | |
|up 3 | |
|up 5 | |
|forward 8 | |
|up 7 | |
|forward 1 | |
|down 9 | |
|down 9 | |
|down 1 | |
|forward 6 | |
|down 7 | |
|up 4 | |
|up 4 | |
|down 9 | |
|up 5 | |
|up 8 | |
|down 3 | |
|down 5 | |
|forward 6 | |
|up 3 | |
|down 8 | |
|down 5 | |
|forward 9 | |
|up 6 | |
|forward 9 | |
|forward 5 | |
|up 6 | |
|up 9 | |
|down 2 | |
|up 5 | |
|forward 9 | |
|down 1 | |
|up 1 | |
|down 9 | |
|forward 4 | |
|forward 4 | |
|forward 8 | |
|down 5 | |
|down 3 | |
|down 7 | |
|forward 5 | |
|down 6 | |
|forward 3 | |
|down 5 | |
|down 5 | |
|up 5 | |
|forward 8 | |
|forward 1 | |
|forward 2 | |
|forward 6 | |
|up 1 | |
|down 5 | |
|down 4 | |
|up 5 | |
|forward 3 | |
|forward 2 | |
|forward 2 | |
|forward 2 | |
|forward 7 | |
|forward 8 | |
|down 2 | |
|up 8 | |
|forward 4 | |
|down 4 | |
|forward 7 | |
|down 6 | |
|down 7 | |
|forward 5 | |
|down 5 | |
|forward 1 | |
|down 8 | |
|forward 6 | |
|down 1 | |
|forward 3 | |
|up 3 | |
|down 7 | |
|down 2 | |
|up 4 | |
|down 3 | |
|up 2 | |
|up 8 | |
|down 2 | |
|forward 5 | |
|forward 3 | |
|down 9 | |
|down 9 | |
|up 2 | |
|forward 6 | |
|forward 9 | |
|down 1 | |
|forward 6 | |
|down 4 | |
|up 2 | |
|down 7 | |
|down 3 | |
|down 3 | |
|forward 2 | |
|down 5 | |
|down 9 | |
|down 7 | |
|forward 7 | |
|forward 9 | |
|up 8 | |
|down 8 | |
|down 3 | |
|up 5 | |
|down 9 | |
|forward 8 | |
|forward 8 | |
|down 1 | |
|forward 5 | |
|forward 2 | |
|forward 7 | |
|down 9 | |
|down 7 | |
|forward 6 | |
|up 9 | |
|forward 3 | |
|forward 5 | |
|up 7 | |
|down 9 | |
|forward 9 | |
|forward 4 | |
|forward 5 | |
|forward 9 | |
|forward 8 | |
|forward 1 | |
|forward 2 | |
|forward 8 | |
|down 7 | |
|forward 3 | |
|up 2 | |
|up 7 | |
|forward 1 | |
|forward 3 | |
|forward 9 | |
|up 3 | |
|down 2 | |
|forward 3 | |
|forward 6 | |
|forward 3 | |
|forward 3 | |
|forward 3 | |
|forward 1 | |
|forward 1 | |
|up 5 | |
|down 5 | |
|up 5 | |
|down 5 | |
|down 5 | |
|forward 8 | |
|forward 1 | |
|down 4 | |
|forward 7 | |
|down 6 | |
|down 1 | |
|down 2 | |
|down 2 | |
|down 6 | |
|up 8 | |
|forward 3 | |
|forward 2 | |
|up 8 | |
|up 2 | |
|forward 1 | |
|forward 6 | |
|forward 5 | |
|forward 6 | |
|forward 7 | |
|down 8 | |
|forward 1 | |
|down 4 | |
|forward 2 | |
|up 4 | |
|forward 4 | |
|down 1 | |
|forward 5 | |
|down 7 | |
|forward 7 | |
|up 7 | |
|forward 1 | |
|down 2 | |
|forward 8 | |
|forward 5 | |
|up 8 | |
|up 8 | |
|up 2 | |
|down 9 | |
|forward 2 | |
|down 4 | |
|down 3 | |
|down 5 | |
|down 5 | |
|down 2 | |
|up 5 | |
|forward 6 | |
|up 7 | |
|forward 8 | |
|up 7 | |
|down 4 | |
|forward 1 | |
|down 3 | |
|forward 2 | |
|forward 1 | |
|down 2 | |
|up 7 | |
|forward 5 | |
|up 8 | |
|up 1 | |
|down 4 | |
|forward 6 | |
|down 4 | |
|up 9 | |
|forward 5 | |
|down 2 | |
|down 7 | |
|down 7 | |
|forward 4 | |
|forward 4 | |
|forward 9 | |
|down 1 | |
|forward 6 | |
|forward 1 | |
|up 9 | |
|forward 4 | |
|forward 4 | |
|forward 8 | |
|forward 3 | |
|forward 4 | |
|down 3 | |
|up 5 | |
|up 1 | |
|forward 3 | |
|down 6 | |
|down 4 | |
|down 2 | |
|forward 3 | |
|forward 8 | |
|up 6 | |
|up 3 | |
|forward 8 | |
|down 3 | |
|down 6 | |
|forward 1 | |
|up 7 | |
|down 4 | |
|down 5 | |
|up 7 | |
|forward 3 | |
|up 4 | |
|forward 9 | |
|forward 6 | |
|down 3 | |
|forward 4 | |
|down 6 | |
|forward 1 | |
|forward 6 | |
|forward 4 | |
|forward 2 | |
|forward 1 | |
|forward 3 | |
|forward 1 | |
|down 1 | |
|down 9 | |
|down 5 | |
|down 7 | |
|down 4 | |
|down 8 | |
|up 1 | |
|down 6 | |
|down 1 | |
|forward 4 | |
|down 9 | |
|up 9 | |
|down 6 | |
|forward 6 | |
|forward 8 | |
|up 7 | |
|forward 4 | |
|down 3 | |
|forward 9 | |
|forward 6 | |
|forward 8 | |
|down 1 | |
|up 2 | |
|down 2 | |
|down 8 | |
|forward 4 | |
|down 9 | |
|down 3 | |
|forward 5 | |
|down 9 | |
|down 4 | |
|up 5 | |
|down 8 | |
|down 4 | |
|down 9 | |
|up 4 | |
|down 5 | |
|down 7 | |
|down 3 | |
|up 1 | |
|up 1 | |
|down 4 | |
|down 6 | |
|forward 8 | |
|down 8 | |
|down 6 | |
|forward 6 | |
|forward 9 | |
|forward 3 | |
|forward 3 | |
|down 2 | |
|down 4 | |
|forward 3 | |
|up 5 | |
|up 3 | |
|down 5 | |
|down 1 | |
|forward 5 | |
|forward 7 | |
|forward 1 | |
|forward 4 | |
|forward 5 | |
|forward 1 | |
|down 7 | |
|down 8 | |
|up 9 | |
|down 8 | |
|down 5 | |
|up 3 | |
|down 5 | |
|down 5 | |
|forward 8 | |
|down 2 | |
|forward 7 | |
|forward 7 | |
|down 1 | |
|forward 2 | |
|forward 7 | |
|forward 5 | |
|down 6 | |
|forward 5 | |
|down 5 | |
|forward 4 | |
|down 8 | |
|forward 7 | |
|up 5 | |
|forward 5 | |
|down 7 | |
|down 7 | |
|up 4 | |
|forward 8 | |
|up 1 | |
|forward 3 | |
|forward 7 | |
|down 2 | |
|forward 1 | |
|down 4 | |
|up 8 | |
|forward 3 | |
|forward 1 | |
|forward 6 | |
|forward 3 | |
|up 4 | |
|forward 3 | |
|down 3 | |
|forward 7 | |
|forward 9 | |
|forward 8 | |
|down 6 | |
|down 8 | |
|up 6 | |
|down 9 | |
|forward 7 | |
|forward 1 | |
|up 4 | |
|forward 5 | |
|forward 8 | |
|down 7 | |
|down 9 | |
|up 6 | |
|up 6 | |
|forward 9 | |
|down 1 | |
|forward 8 | |
|down 9 | |
|down 5 | |
|forward 6 | |
|forward 1 | |
|down 4 | |
|forward 8 | |
|down 9 | |
|down 4 | |
|forward 5 | |
|forward 7 | |
|forward 3 | |
|down 2 | |
|forward 6 | |
|forward 3 | |
|forward 8 | |
|down 1 | |
|down 5 | |
|up 6 | |
|down 2 | |
|down 1 | |
|up 3 | |
|down 7 | |
|up 1 | |
|forward 8 | |
|down 6 | |
|down 6 | |
|forward 8 | |
|up 3 | |
|forward 8 | |
|up 3 | |
|forward 3 | |
|forward 7 | |
|forward 1 | |
|down 1 | |
|up 5 | |
|forward 5 | |
|forward 9 | |
|forward 5 | |
|forward 1 | |
|forward 4 | |
|down 8 | |
|forward 2 | |
|up 3 | |
|forward 3 | |
|down 9 | |
|forward 2 | |
|forward 6 | |
|forward 3 | |
|up 8 | |
|up 1 | |
|down 6 | |
|forward 3 | |
|down 4 | |
|down 5 | |
|forward 6 | |
|forward 9 | |
|down 4 | |
|down 9 | |
|down 7 | |
|down 1 | |
|up 3 | |
|up 6 | |
|forward 4 | |
|forward 5 | |
|down 1 | |
|forward 3 | |
|up 5 | |
|forward 7 | |
|down 9 | |
|forward 5 | |
|down 5 | |
|down 1 | |
|down 1 | |
|down 1 | |
|up 8 | |
|down 4 | |
|down 9 | |
|forward 5 | |
|down 5 | |
|up 5 | |
|up 3 | |
|forward 1 | |
|forward 7 | |
|down 2 | |
|forward 6 | |
|forward 5 | |
|up 4 | |
|up 4 | |
|forward 1 | |
|down 7 | |
|down 8 | |
|up 3 | |
|down 3 | |
|up 4 | |
|forward 2 | |
|up 4 | |
|up 4 | |
|forward 8 | |
|forward 1 | |
|forward 2 | |
|forward 7 | |
|down 6 | |
|forward 8 | |
|forward 9 | |
|forward 6 | |
|forward 9 | |
|down 3 | |
|up 3 | |
|forward 5 | |
|down 1 | |
|forward 1 | |
|forward 4 | |
|forward 2 | |
|down 6 | |
|up 7 | |
|forward 9 | |
|down 2 | |
|up 5 | |
|forward 6 | |
|down 9 | |
|down 6 | |
|down 8 | |
|forward 2 | |
|down 7 | |
|forward 6 | |
|down 8 | |
|forward 3 | |
|forward 7 | |
|forward 6 | |
|down 7 | |
|down 6 | |
|forward 5 | |
|up 8 | |
|forward 6 | |
|down 1 | |
|up 9 | |
|forward 6 | |
|down 6 | |
|down 5 | |
|down 6 | |
|up 2 | |
|down 3 | |
|down 7 | |
|down 3 | |
|forward 4 | |
|up 9 | |
|up 2 | |
|forward 1 | |
|forward 7 | |
|forward 7 | |
|forward 9 | |
|forward 8 | |
|forward 7 | |
|down 3 | |
|forward 4 | |
|forward 8 | |
|down 9 | |
|forward 2 | |
|forward 2 | |
|up 9 | |
|up 7 | |
|forward 2 | |
|down 8 | |
|down 3 | |
|down 1 | |
|forward 1 | |
|forward 3 | |
|down 2 | |
|forward 7 | |
|up 4 | |
|down 7 | |
|down 1 | |
|forward 8 | |
|forward 2 | |
|up 1 | |
|down 5 | |
|forward 8 | |
|up 5 | |
|up 7 | |
|forward 4 | |
|forward 7 | |
|up 4 | |
|up 3 | |
|forward 5 | |
|forward 9 | |
|forward 1 | |
|forward 3 | |
|down 9 | |
|up 2 | |
|forward 8 | |
|down 3 | |
|forward 3 | |
|forward 2 | |
|down 8 | |
|down 2 | |
|down 3 | |
|forward 1 | |
|up 7 | |
|down 1 | |
|forward 3 | |
|forward 8 | |
|down 3 | |
|down 9 | |
|up 1 | |
|down 9 | |
|up 7 | |
|up 7 | |
|forward 7 | |
|forward 7 | |
|up 8 | |
|down 2 | |
|down 7 | |
|down 1 | |
|forward 5 | |
|forward 5 | |
|forward 7 | |
|down 8 | |
|forward 5 | |
|down 9 | |
|down 8 | |
|forward 3 | |
|up 9 | |
|forward 3 | |
|up 6 | |
|forward 7 | |
|up 7 | |
|forward 3 | |
|forward 2 | |
|down 1 | |
|down 4 | |
|forward 1 | |
|forward 8 | |
|up 5 | |
|down 5 | |
|up 1 | |
|down 5 | |
|up 1 | |
|up 6 | |
|forward 5 | |
|forward 5 | |
|down 3 | |
|down 3 | |
|forward 2 | |
|up 3 | |
|up 2 | |
|down 6 | |
|down 5 | |
|down 1 | |
|down 1 | |
|up 6 | |
|forward 2 | |
|forward 2 | |
|up 4 | |
|up 6 | |
|up 6 | |
|down 8 | |
|up 2 | |
|forward 4 | |
|down 3 | |
|forward 3 | |
|up 4 | |
|down 5 | |
|forward 6 | |
|forward 7 | |
|up 6 | |
|down 3 | |
|down 7 | |
|up 4 | |
|down 2 | |
|up 2 | |
|forward 1 | |
|down 8 | |
|down 1 | |
|down 1 | |
|up 9 | |
|down 1 | |
|down 1 | |
|up 1 | |
|forward 8 | |
|forward 4 | |
|down 4 | |
|forward 1 | |
|down 4 | |
|up 7 | |
|forward 7 | |
|forward 3 | |
|down 4 | |
|forward 9 | |
|forward 1 | |
|down 3 | |
|down 2 | |
|forward 7 | |
|up 1 | |
|forward 3 | |
|up 3 | |
|down 3 | |
|down 7 | |
|up 3 | |
|up 4 | |
|forward 7 | |
|down 2 | |
|up 2 | |
|down 9 | |
|up 1 | |
|forward 3 | |
|up 8 | |
|up 8 | |
|down 8 | |
|down 1 | |
|up 8 | |
|up 4 | |
|down 6 | |
|forward 8""".stripMargin |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment