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,22 +97,15 @@ 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 { +// Generate numbers in a range - start to end (both inclusive) +func genRangeInclusive[T character](start, end T) []T { toRet := make([]T, end-start) - for i := start; i < end; i++ { + 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) - return toRet -} - // Returns a rune-slice containing all possible cases of the given rune, given the // 'caseInsensitive' boolean variable. // If this variable is false, the rune is returned as-is, without modifications.