mirror of
https://github.com/cubixle/codekata-golang.git
synced 2026-04-24 21:24:46 +01:00
65 lines
988 B
Go
65 lines
988 B
Go
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"io"
|
|
"os"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
func main() {
|
|
fi, err := os.Open("./digits.txt")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer fi.Close()
|
|
|
|
br := bufio.NewReader(fi)
|
|
var input [][]int
|
|
for {
|
|
a, _, e := br.ReadLine()
|
|
if e == io.EOF {
|
|
break
|
|
}
|
|
got := strings.Split(string(a), " ")
|
|
var line []int
|
|
for _, v := range got {
|
|
n, err := strconv.Atoi(v)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
line = append(line, n)
|
|
}
|
|
input = append(input, line)
|
|
}
|
|
fmt.Println("input=", input)
|
|
|
|
fmt.Println("maximum path sum is:", LargestSumOfTriangle(input))
|
|
}
|
|
|
|
func LargestSumOfTriangle(input [][]int) int {
|
|
rest := input
|
|
l := len(input)
|
|
for l > 1 {
|
|
hl := l - 2
|
|
var line []int
|
|
for n, v := range input[l-2] {
|
|
x := v + max(input[l-1][n], input[l-1][n+1])
|
|
line = append(line, x)
|
|
}
|
|
rest = rest[:hl]
|
|
rest = append(rest, line)
|
|
l = len(rest)
|
|
}
|
|
return rest[0][0]
|
|
}
|
|
|
|
func max(x, y int) int {
|
|
if x > y {
|
|
return x
|
|
}
|
|
return y
|
|
}
|