package main
import (
"bufio"
"log"
"os"
"strconv"
)
func main() {
if err := myMain(); err != nil {
log.Println(err)
}
}
func myMain() error {
// Test input check
if err := Test1(test1); err != nil {
return err
}
if err := Test2(test1); err != nil {
return err
}
// parse input.txt
data, err := parseInput()
if err != nil {
return err
}
// answer first part
count, err := countIncrease(data)
if err != nil {
return err
}
log.Println("Increase count:", count)
// answer second part
count3, err := countThreeIncrease(data)
if err != nil {
return err
}
log.Println("3 increase count:", count3)
return nil
}
func countIncrease(data []int) (int, error) {
var inc int
for i, d := range data {
if i == 0 {
continue
}
if d > data[i-1] {
inc++
}
}
return inc, nil
}
func countThreeIncrease(data []int) (int, error) {
var inc int
for i := range data {
if i >= 3 {
if sum(data, i-1) < sum(data, i) {
inc++
}
}
}
return inc, nil
}
func sum(data []int, k int) int {
var ret int
for i := k - 2; i <= k; i++ {
ret += data[i]
}
return ret
}
func parseInput() ([]int, error) {
fd, err := os.Open("input.txt")
if err != nil {
return nil, err
}
defer fd.Close()
buf := bufio.NewScanner(fd)
var ret []int
for buf.Scan() {
tmp, err := strconv.Atoi(buf.Text())
if err != nil {
return nil, err
}
ret = append(ret, tmp)
}
return ret, nil
}