You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

30 lines
608 B
Go

2 months ago
package main
import (
"slices"
2 months ago
"unicode"
)
func isAlphaNum(c rune) bool {
return unicode.IsLetter(c) || unicode.IsNumber(c)
}
func assert(cond bool) {
if cond != true {
panic("Assertion Failed")
}
}
// Ensure that the given elements are only appended to the given slice if they
// don't already exist. Returns the new slice, and the number of unique items appended.
func unique_append[T comparable](slc []T, items ...T) ([]T, int) {
num_appended := 0
for _, item := range items {
if !slices.Contains(slc, item) {
slc = append(slc, item)
num_appended++
}
}
return slc, num_appended
}