aoc-old/aoc/src/main/scala/aoc/Main.scala

57 lines
1.2 KiB
Scala

package aoc
import scala.io.StdIn
object Main {
val years = Map(
"2017" -> AoC2017
)
def main(args: Array[String]): Unit = {
val year = askForYear()
val day = askForDay(year)
val part = askForPart(day)
println("Problem input? End input with an `End of Input` line.")
val input = Stream.continually(StdIn.readLine()).takeWhile(_ != "End of Input").toList.mkString("\n")
println(s"Output: ${part(input)}")
}
def askForYear(): Year = {
println(s"Years: ${years.keys.mkString(", ")}")
print("Year? ")
val input = StdIn.readLine()
years.get(input) match {
case Some(y) => y
case None =>
println("Not a valid year.")
askForYear()
}
}
def askForDay(y: Year): Day = {
println(s"Days: ${y.days.keys.mkString(", ")}")
print("Day? ")
val input = StdIn.readLine()
y.days.get(input) match {
case Some(d) => d
case None =>
println("Not a valid day.")
askForDay(y)
}
}
def askForPart(d: Day): String => String = {
print("Part (1/2)? ")
val input = StdIn.readLine()
input match {
case "1" => d.part1
case "2" => d.part2
case _ =>
println("Not a valid part.")
askForPart(d)
}
}
}