diff --git a/cmd/helpers.go b/cmd/helpers.go index 726e966..0031ea8 100644 --- a/cmd/helpers.go +++ b/cmd/helpers.go @@ -2,6 +2,10 @@ package main import "slices" +type character interface { + int | rune +} + // Returns all elements in slice A that are NOT in slice B func setDifference[T comparable](s1 []T, s2 []T) []T { toReturn := make([]T, 0, len(s1)) @@ -12,3 +16,12 @@ func setDifference[T comparable](s1 []T, s2 []T) []T { } return toReturn } + +// Generate numbers in a range - start (inclusive) to end (exclusive) +func genRange[T character](start, end T) []T { + toRet := make([]T, end-start) + for i := start; i < end; i++ { + toRet[i-start] = i + } + return toRet +} diff --git a/greg/misc.go b/greg/misc.go index e310043..2dd28ca 100644 --- a/greg/misc.go +++ b/greg/misc.go @@ -97,19 +97,12 @@ func Reduce[T any](slc []T, fn func(T, T) T) T { return slc[0] } -// Generate numbers in a range - start (inclusive) to end (exclusive) -func genRange[T character](start, end T) []T { - toRet := make([]T, end-start) - for i := start; i < end; i++ { - toRet[i-start] = i - } - return toRet -} - // Generate numbers in a range - start to end (both inclusive) func genRangeInclusive[T character](start, end T) []T { - toRet := genRange(start, end) - toRet = append(toRet, end) + toRet := make([]T, end-start) + for i := start; i <= end; i++ { + toRet[i-start] = i + } return toRet }