package helper import ( "errors" "io/ioutil" "sort" "strconv" "strings" ) func GetInput(filename string) ([]string, error) { content, err := ioutil.ReadFile(filename) if err != nil { return nil, err } lines := strings.Split(string(content), "\n") return lines, err } func GetFile(filename string) (string, error) { content, err := ioutil.ReadFile(filename) if err != nil { return "", err } return string(content), err } func MapToNumber(strings []string) ([]int, error) { var numbers []int for _, line := range strings { number, err := strconv.Atoi(line) if err != nil { return numbers, err } numbers = append(numbers, number) } return numbers, nil } func FindAddendsForSum (possibleAddends []int, sum int) (int, int, error) { var array = make([]int,len(possibleAddends)) copy(array,possibleAddends) sort.Ints(array) p1 := 0 p2 := len(array) - 1 for p1 < p2 { if array[p1]+array[p2] < sum { p1++ } if array[p1]+array[p2] > sum { p2-- } if array[p1]+array[p2] == sum { return array[p1] , array[p2], nil } } return 0,0,errors.New("No fitting Addends found") } func SliceIndex(limit int, predicate func(i int) bool) int { for i := 0; i < limit; i++ { if predicate(i) { return i } } return -1 }