57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"AOC2021/src/helper"
|
|
"fmt"
|
|
"os"
|
|
)
|
|
|
|
func main() {
|
|
args := os.Args[1:]
|
|
input, err := helper.GetInput(args[0])
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
numbers, err := helper.MapToNumber(input)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
fmt.Println("Part 1")
|
|
part1(numbers)
|
|
fmt.Println("Part 2")
|
|
part2(numbers)
|
|
|
|
}
|
|
|
|
func part2(numbers []int) {
|
|
fmt.Println(helper.AddNummbers(numbers[0:3]...))
|
|
amountOfIncreased := 0
|
|
for i := 1; i < len(numbers)-2; i++ {
|
|
var change = "decreased"
|
|
previousWindow := helper.AddNummbers(numbers[i-1 : i+2]...)
|
|
currentWindow := helper.AddNummbers(numbers[i : i+3]...)
|
|
if currentWindow > previousWindow {
|
|
amountOfIncreased++
|
|
change = "increased"
|
|
}
|
|
if currentWindow == previousWindow {
|
|
change = "no change"
|
|
}
|
|
fmt.Printf("%d (%s) \r\n", currentWindow, change)
|
|
}
|
|
fmt.Println(amountOfIncreased)
|
|
}
|
|
|
|
func part1(numbers []int) {
|
|
amountOfIncreased := 0
|
|
for i := 1; i < len(numbers); i++ {
|
|
var change = "decreased"
|
|
if numbers[i] > numbers[i-1] {
|
|
amountOfIncreased++
|
|
change = "increased"
|
|
}
|
|
fmt.Printf("%d (%s) \r\n", numbers[i], change)
|
|
}
|
|
fmt.Println(amountOfIncreased)
|
|
}
|