Day 1 Scala
This commit is contained in:
parent
13a8e74189
commit
069a9e35f6
3 changed files with 1043 additions and 3 deletions
1001
input/day01
1001
input/day01
File diff suppressed because it is too large
Load diff
|
|
@ -4,4 +4,4 @@ import scala.io.Source
|
|||
import scala.util.Using
|
||||
|
||||
def loadInput(dayNumber: String) =
|
||||
Using.resource(Source.fromFile(s"input/day$dayNumber"))(_.mkString)
|
||||
Using.resource(Source.fromFile(s"input/day$dayNumber"))(_.mkString.trim)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,46 @@
|
|||
package aoc
|
||||
package day01
|
||||
|
||||
import scala.annotation.tailrec
|
||||
|
||||
val dayNumber = "01"
|
||||
|
||||
@main def part1: Unit =
|
||||
println(loadInput("01"))
|
||||
println(part1(loadInput(dayNumber)))
|
||||
|
||||
@main def part2: Unit =
|
||||
println(part2(loadInput(dayNumber)))
|
||||
|
||||
def part1(input: String): String =
|
||||
input
|
||||
.split("\n")
|
||||
.map(line =>
|
||||
line.find(_.isDigit).get.toString + line.findLast(_.isDigit).get.toString
|
||||
)
|
||||
.map(_.toInt)
|
||||
.sum
|
||||
.toString
|
||||
|
||||
def part2(input: String): String =
|
||||
val digitsList = (1 to 9).map(_.toString)
|
||||
val digitsMap =
|
||||
List("one", "two", "three", "four", "five", "six", "seven", "eight", "nine")
|
||||
.zip(digitsList)
|
||||
.prependedAll(digitsList.zip(digitsList))
|
||||
|
||||
@tailrec def findFistDigit(line: String): String =
|
||||
digitsMap.find((key, _) => line.startsWith(key)) match
|
||||
case Some((_, digit)) => digit
|
||||
case None => findFistDigit(line.substring(1))
|
||||
|
||||
@tailrec def findLastDigit(line: String): String =
|
||||
digitsMap.find((key, _) => line.endsWith(key)) match
|
||||
case Some((_, digit)) => digit
|
||||
case None => findLastDigit(line.substring(0, line.length - 1))
|
||||
|
||||
input
|
||||
.split("\n")
|
||||
.map(line => findFistDigit(line) + findLastDigit(line))
|
||||
.map(_.toInt)
|
||||
.sum
|
||||
.toString
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue