package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
func checkNumber(slice []int, number int) [][2]int {
result := make([][2]int, 0, 25)
for i := 0; i < len(slice); i++ {
for j := i + 1; j < len(slice); j++ {
if slice[i]+slice[j] == number {
result = append(result, [2]int{slice[i], slice[j]})
}
}
}
return result
}
// Task1 ...
func Task1(input []int, preamble int) int {
for i := preamble; i < len(input); i++ {
if len(checkNumber(input[i-preamble:i], input[i])) == 0 {
return input[i]
}
}
return -1
}
// Task2 ...
func Task2(input []int, target int) int {
for i := 0; i < len(input); i++ {
result, smallest, largest := input[i], input[i], input[i]
for j := i + 1; j < len(input); j++ {
result += input[j]
if input[j] < smallest {
smallest = input[j]
}
if input[j] > largest {
largest = input[j]
}
if result == target {
return smallest + largest
} else if result > target {
break
}
}
}
return -1
}
func main() {
file, _ := os.Open("input.txt")
scanner := bufio.NewScanner(file)
input := make([]int, 0, 100)
for scanner.Scan() {
val, _ := strconv.Atoi(scanner.Text())
input = append(input, val)
}
file.Close()
result := Task1(input, 25)
fmt.Printf("Task 1: %d\n", result)
result = Task2(input, result)
fmt.Printf("Task 2: %d\n", result)
}