Archived
81 lines
1.2 KiB
Go
81 lines
1.2 KiB
Go
package one
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"strconv"
|
|
)
|
|
|
|
func Run() {
|
|
fmt.Printf("1st solution: %d\n", solveFirst())
|
|
fmt.Printf("2nd solution: %d\n", solveSecond())
|
|
}
|
|
|
|
func readInput() []int {
|
|
file, err := os.Open("./pkg/one/input.txt")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer file.Close()
|
|
numbers := make([]int, 0)
|
|
scanner := bufio.NewScanner(file)
|
|
for scanner.Scan() {
|
|
num, err := strconv.Atoi(scanner.Text())
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
numbers = append(numbers, num)
|
|
}
|
|
if err := scanner.Err(); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
return numbers
|
|
}
|
|
|
|
func solveFirst() int {
|
|
p := 0
|
|
i := 0
|
|
|
|
for k, v := range readInput() {
|
|
if k == 0 {
|
|
p = v
|
|
continue
|
|
}
|
|
if p < v {
|
|
i++
|
|
}
|
|
p = v
|
|
}
|
|
|
|
return i
|
|
}
|
|
|
|
func solveSecond() int {
|
|
increasedMeasurements := 0
|
|
a := make([]int, 3)
|
|
b := make([]int, 3)
|
|
numbers := readInput()
|
|
|
|
for i := 0; i < len(numbers); i++ {
|
|
if i+4 <= len(numbers) {
|
|
a = numbers[i : i+3]
|
|
b = numbers[i+1 : i+4]
|
|
aSum := 0
|
|
bSum := 0
|
|
for _, v := range a {
|
|
aSum += v
|
|
}
|
|
for _, v := range b {
|
|
bSum += v
|
|
}
|
|
if bSum > aSum {
|
|
increasedMeasurements++
|
|
}
|
|
}
|
|
}
|
|
|
|
return increasedMeasurements
|
|
}
|