[2020-12-09] Add solutions for day09
parent
9351d5bc9d
commit
230988d40a
@ -0,0 +1,20 @@
|
||||
35
|
||||
20
|
||||
15
|
||||
25
|
||||
47
|
||||
40
|
||||
62
|
||||
55
|
||||
65
|
||||
95
|
||||
102
|
||||
117
|
||||
150
|
||||
182
|
||||
127
|
||||
219
|
||||
299
|
||||
277
|
||||
309
|
||||
576
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,41 @@
|
||||
package day09
|
||||
|
||||
import (
|
||||
"sort"
|
||||
)
|
||||
|
||||
func isSumOfPreviousNumbers(current int, previous []int) bool {
|
||||
for _, n1 := range previous {
|
||||
for _, n2 := range previous {
|
||||
if n1+n2 == current {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func findAnomalySum(anomaly int, numbers []int) int {
|
||||
for k1 := range numbers {
|
||||
sum := 0
|
||||
|
||||
for k2, n2 := range numbers[k1:] {
|
||||
sum += n2
|
||||
|
||||
if sum > anomaly {
|
||||
break
|
||||
}
|
||||
|
||||
if sum == anomaly {
|
||||
targetSet := numbers[k1 : k1+k2+1]
|
||||
|
||||
sort.Ints(targetSet)
|
||||
|
||||
return targetSet[0] + targetSet[len(targetSet)-1]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package day09
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"git.elis.nu/etu/aoc2020/utils"
|
||||
)
|
||||
|
||||
var rows []int
|
||||
|
||||
func ParseFile(input string) {
|
||||
// Parse file
|
||||
for _, line := range utils.GetLinesFromFile("day09/" + input + ".txt") {
|
||||
number, err := strconv.Atoi(line)
|
||||
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
rows = append(rows, number)
|
||||
}
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package day09
|
||||
|
||||
import (
|
||||
"log"
|
||||
)
|
||||
|
||||
func Solve1() {
|
||||
anomaly := 0
|
||||
|
||||
rangeSize := 25
|
||||
|
||||
if len(rows) == 20 {
|
||||
rangeSize = 5
|
||||
}
|
||||
|
||||
i := 0
|
||||
for _, num := range rows[rangeSize:] {
|
||||
if isSumOfPreviousNumbers(num, rows[i:i+rangeSize]) == false {
|
||||
anomaly = num
|
||||
}
|
||||
|
||||
i++
|
||||
}
|
||||
|
||||
log.Printf("2020-12-09.01: Answer: %d\n", anomaly)
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
package day09
|
||||
|
||||
import (
|
||||
"log"
|
||||
)
|
||||
|
||||
func Solve2() {
|
||||
anomaly := 0
|
||||
|
||||
rangeSize := 25
|
||||
if len(rows) == 20 {
|
||||
rangeSize = 5
|
||||
}
|
||||
|
||||
i := 0
|
||||
for _, num := range rows[rangeSize:] {
|
||||
if isSumOfPreviousNumbers(num, rows[i:i+rangeSize]) == false {
|
||||
anomaly = num
|
||||
}
|
||||
|
||||
i++
|
||||
}
|
||||
|
||||
log.Printf("2020-12-09.02: Answer: %d\n", findAnomalySum(anomaly, rows))
|
||||
}
|
Loading…
Reference in New Issue