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.
28 lines
486 B
Go
28 lines
486 B
Go
package main
|
|
|
|
import (
|
|
"slices"
|
|
"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.
|
|
func unique_append[T comparable](slc []T, items ...T) []T {
|
|
for _, item := range items {
|
|
if !slices.Contains(slc, item) {
|
|
slc = append(slc, item)
|
|
}
|
|
}
|
|
return slc
|
|
}
|