Import helper
This commit is contained in:
commit
3c88a4fbdd
3
go.mod
Normal file
3
go.mod
Normal file
@ -0,0 +1,3 @@
|
||||
module AOC2021
|
||||
|
||||
go 1.17
|
100
src/helper/helper.go
Normal file
100
src/helper/helper.go
Normal file
@ -0,0 +1,100 @@
|
||||
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), "\r\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
|
||||
}
|
||||
|
||||
func DeleteAt(a []int, i int, ) []int {
|
||||
return append(a[:i], a[i+1:]...)
|
||||
}
|
||||
|
||||
func Equal(a, b []int) bool {
|
||||
if len(a) != len(b) {
|
||||
return false
|
||||
}
|
||||
for i, v := range a {
|
||||
if v != b[i] {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func Contains(elem int, array []int) bool{
|
||||
for _, val := range array{
|
||||
if val == elem{
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func AddNummbers(numbers ...int) int {
|
||||
result := 0
|
||||
for _, number := range numbers {
|
||||
result += number
|
||||
}
|
||||
return result
|
||||
}
|
Loading…
Reference in New Issue
Block a user