day03
This commit is contained in:
parent
347f3472f9
commit
ffb7112e10
57
day03/day.go
Normal file
57
day03/day.go
Normal 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
|
||||
}
|
||||
1
inputs/3_test
Normal file
1
inputs/3_test
Normal file
@ -0,0 +1 @@
|
||||
5 10 25
|
||||
3
main.go
3
main.go
@ -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},
|
||||
|
||||
Loading…
Reference in New Issue
Block a user