package main import ( "fmt" "io" "os" ) type validator struct { Numbers []int } func newValidator() *validator { return &validator{ Numbers: []int{}, } } func (v *validator) validate(number int) (ok bool) { for i1, num1 := range v.Numbers { for i2, num2 := range v.Numbers { if i1 == i2 { continue } if num1+num2 == number { ok = true return } } } return } func (v *validator) Feed(number int) (ok bool) { if len(v.Numbers) >= 25 { // check if valid number if !v.validate(number) { return } v.Numbers = append(v.Numbers[len(v.Numbers)-24:], number) } else { v.Numbers = append(v.Numbers, number) } ok = true return } func main() { f, err := os.Open("input") if err != nil { panic(err) } v := newValidator() number := 0 for { _, err := fmt.Fscanf(f, "%d\n", &number) if err == io.EOF { break } if err != nil { panic(err) } if !v.Feed(number) { fmt.Printf("%d does not validate\n", number) break } } }