22 lines
755 B
Scala
22 lines
755 B
Scala
object MaximumTrianglePathSum extends App {
|
|
// Solution:
|
|
def sum(triangle: Array[Array[Int]]) =
|
|
triangle.reduceRight((upper, lower) =>
|
|
upper zip (lower zip lower.tail)
|
|
map {case (above, (left, right)) => above + Math.max(left, right)}
|
|
).head
|
|
|
|
// Tests:
|
|
def triangle = """
|
|
55
|
|
94 48
|
|
95 30 96
|
|
77 71 26 67
|
|
"""
|
|
def parse(s: String) = s.trim.split("\\s+").map(_.toInt)
|
|
def parseLines(s: String) = s.trim.split("\n").map(parse)
|
|
def parseFile(f: String) = scala.io.Source.fromFile(f).getLines.map(parse).toArray
|
|
println(sum(parseLines(triangle)))
|
|
println(sum(parseFile("triangle.txt")))
|
|
}
|