adventofcode/day9/main.go

73 lines
1.1 KiB
Go

package main
import (
"fmt"
"io/ioutil"
"sort"
"strconv"
"strings"
)
func main() {
d, _ := ioutil.ReadFile("input")
strings := strings.Split(string(d), "\n")
bad := 0
var ints []int
done := false
for _, s := range strings {
i, err := strconv.Atoi(s)
if err == nil {
ints = append(ints, i)
}
}
for i, _ := range ints {
if !((i + 26) > len(ints)) {
slice := ints[i : i+25]
sums := make(map[int]struct{})
for _, n := range slice {
for _, n2 := range slice {
if n != n2 {
sums[n+n2] = struct{}{}
}
}
}
bad = ints[i+25]
has := false
for i, _ := range sums {
if bad == i {
has = true
}
}
if has == false {
fmt.Println("Part 1:", bad)
break
done = true
}
if done == true {
break
}
}
if done == true {
break
}
}
// Part 2: let's just brute force this
l := 2
for {
for x := 0; x < len(ints); x += 1 {
sl := ints[x : x+l]
total := 0
for _, digit := range sl {
total += digit
}
if total == bad {
sort.Ints(sl) // a bad bodge
fmt.Printf("Part 2: %d\n", sl[0]+sl[len(sl)-1:][0])
fmt.Println(sl)
return
}
}
l++
}
}