35 lines
806 B
Scala
35 lines
806 B
Scala
|
package day01
|
||
|
|
||
|
import kamlib.{Reader, Wrapper}
|
||
|
|
||
|
class Day1 {
|
||
|
|
||
|
/** Find fuel needed */
|
||
|
def solveP1(input: List[Int]): Int =
|
||
|
input.foldLeft (0) { (acc, i) => acc + (i/3-2)}
|
||
|
|
||
|
/** Find fuel needed and recursive fuel */
|
||
|
def solveP2(input: List[Int]): Int =
|
||
|
{
|
||
|
@scala.annotation.tailrec
|
||
|
def findRecursiveFuel(fuel: Int, acc: Int): Int =
|
||
|
{
|
||
|
if (fuel <= 0) acc
|
||
|
else findRecursiveFuel((fuel/3)-2, fuel+acc)
|
||
|
}
|
||
|
input.foldLeft (0) { (acc, i) => acc + findRecursiveFuel((i/3)-2, 0)}
|
||
|
}
|
||
|
|
||
|
/** MAIN */
|
||
|
def main(args: Array[String]): Unit =
|
||
|
{
|
||
|
val input: List[Int] = Reader.readList("/input1.txt").map(_.toInt)
|
||
|
|
||
|
println("Part 1")
|
||
|
Wrapper(solveP1(input)).print()
|
||
|
println("Part 2")
|
||
|
Wrapper(solveP2(input)).print()
|
||
|
}
|
||
|
|
||
|
}
|