58 lines
952 B
Go
58 lines
952 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
func main() {
|
|
data := LoadData("./data")
|
|
c := CountIncreases(&data)
|
|
fmt.Println(c)
|
|
data = MutateDataPart2(data)
|
|
c = CountIncreases(&data)
|
|
fmt.Println(c)
|
|
}
|
|
|
|
func MutateDataPart2(data []DataEntry) []DataEntry {
|
|
var result []DataEntry
|
|
lastInt := 0
|
|
for i := range data {
|
|
if i >= len(data)-2 {
|
|
continue
|
|
}
|
|
value := data[i].Value + data[i+1].Value + data[i+2].Value
|
|
var status Status
|
|
switch {
|
|
case lastInt == 0:
|
|
status = Nothing
|
|
case lastInt < value:
|
|
status = Increased
|
|
case lastInt > value:
|
|
status = Decreased
|
|
case lastInt == value:
|
|
status = Equal
|
|
}
|
|
lastInt = value
|
|
result = append(result, DataEntry{
|
|
Value: value,
|
|
Status: status,
|
|
})
|
|
}
|
|
return result
|
|
}
|
|
|
|
func CountIncreases(d *[]DataEntry) int {
|
|
var count int
|
|
for _, d := range *d {
|
|
if d.Status == Increased {
|
|
count++
|
|
}
|
|
}
|
|
return count
|
|
}
|
|
|
|
func checkErr(err error) {
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
}
|