aoc2016/day03/day.go
Stefan Harmuth ffb7112e10 day03
2021-01-09 19:34:52 +01:00

58 lines
1.4 KiB
Go

package day03
import (
"strconv"
"strings"
"tools"
)
func getTriangleList(input []string) (triangleList [][]int) {
for _, line := range input {
parts := strings.Split(strings.TrimLeft(line, " "), " ")
var triparts []int
for _, part := range parts {
if len(part) == 0 {
continue
}
sidelen, _ := strconv.Atoi(part)
triparts = append(triparts, sidelen)
}
triangleList = append(triangleList, triparts)
}
return triangleList
}
func Part1(puzzle tools.AoCPuzzle) interface{} {
triangle_list := getTriangleList(puzzle.GetInputArray())
validCount := 0
for _, triangle := range triangle_list {
shortSide := tools.Min(triangle...)
longSide := tools.Max(triangle...)
mediumSide := tools.Sum(triangle...) - shortSide - longSide
if shortSide+mediumSide > longSide {
validCount++
}
}
return validCount
}
func Part2(puzzle tools.AoCPuzzle) interface{} {
triangle_list := getTriangleList(puzzle.GetInputArray())
validCount := 0
for y := 0; y < len(triangle_list)-2; y += 3 {
for x := 0; x < 3; x++ {
shortSide := tools.Min(triangle_list[y][x], triangle_list[y+1][x], triangle_list[y+2][x])
longSide := tools.Max(triangle_list[y][x], triangle_list[y+1][x], triangle_list[y+2][x])
mediumSide := tools.Sum(triangle_list[y][x], triangle_list[y+1][x], triangle_list[y+2][x]) - shortSide - longSide
if shortSide+mediumSide > longSide {
validCount++
}
}
}
return validCount
}