This commit is contained in:
Stefan Harmuth 2021-01-09 19:34:52 +01:00
parent 347f3472f9
commit ffb7112e10
4 changed files with 1695 additions and 1 deletions

57
day03/day.go Normal file
View File

@ -0,0 +1,57 @@
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
}

1635
inputs/3 Normal file

File diff suppressed because it is too large Load Diff

1
inputs/3_test Normal file
View File

@ -0,0 +1 @@
5 10 25

View File

@ -3,6 +3,7 @@ package main
import (
"aoc2016/day01"
"aoc2016/day02"
"aoc2016/day03"
"flag"
"fmt"
"os"
@ -22,7 +23,7 @@ func initDayFunctions() {
dayFunctions = map[int]map[int]func(puzzle tools.AoCPuzzle) interface{}{
1: {1: day01.Part1, 2: day01.Part2},
2: {1: day02.Part1, 2: day02.Part2},
// 3: {1: day03.Part1, 2: day03.Part2},
3: {1: day03.Part1, 2: day03.Part2},
// 4: {1: day04.Part1, 2: day04.Part2},
// 5: {1: day05.Part1, 2: day05.Part2},
// 6: {1: day06.Part1, 2: day06.Part2},