70 lines
1.1 KiB
Go
70 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"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 {
|
|
fmt.Printf("Part 2: %d\n", sl[0]+sl[len(sl)-1:][0])
|
|
return
|
|
}
|
|
}
|
|
l++
|
|
}
|
|
}
|