48 lines
899 B
Go
48 lines
899 B
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
"os"
|
|
"strconv"
|
|
"strings"
|
|
|
|
"github.com/thoas/go-funk"
|
|
)
|
|
|
|
func main() {
|
|
inputBytes, _ := os.ReadFile("input.txt")
|
|
inputs := strings.Split(string(inputBytes), "\n")
|
|
|
|
log.Println("Puzzle 1:", puzzle1(inputs))
|
|
log.Println("Puzzle 2:", puzzle2(inputs))
|
|
}
|
|
|
|
func puzzle1(inputs []string) int {
|
|
increased := 0
|
|
last := 0
|
|
for _, input := range inputs {
|
|
inputNo, _ := strconv.Atoi(input)
|
|
if last > 0 && inputNo > last {
|
|
increased++
|
|
}
|
|
last = inputNo
|
|
}
|
|
return increased
|
|
}
|
|
|
|
func puzzle2(inputs []string) int {
|
|
increased := 0
|
|
last3 := []int{0, 0, 0}
|
|
for _, input := range inputs {
|
|
inputNo, _ := strconv.Atoi(input)
|
|
new3 := append(last3[1:], inputNo)
|
|
newSum := funk.SumInt(new3)
|
|
lastSum := funk.SumInt(last3)
|
|
if !funk.ContainsInt(last3, 0) && !funk.ContainsInt(new3, 0) && newSum > lastSum {
|
|
increased++
|
|
}
|
|
last3 = new3
|
|
}
|
|
return increased
|
|
}
|