diff options
Diffstat (limited to 'src/gobang.go')
-rw-r--r-- | src/gobang.go | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/gobang.go b/src/gobang.go index 38ae50a..a75688d 100644 --- a/src/gobang.go +++ b/src/gobang.go @@ -32,6 +32,10 @@ const ( ) +type SetT[T comparable] struct{ + data map[T]struct{} +} + type PairT[A any, B any] struct{ L A R B @@ -54,6 +58,7 @@ const ( SQLiteNow = "strftime('%Y-%m-%dT%H:%M:%f000000Z', 'now')" ) + var ( level LogLevel = LevelInfo emitMetric = true @@ -70,6 +75,24 @@ var ( +func SetOf[T comparable](values ...T) SetT[T] { + s := SetT[T]{ + data: map[T]struct{}{ + }, + } + + for _, value := range values { + s.data[value] = struct{}{} + } + + return s +} + +func Contains[T comparable](set SetT[T], value T) bool { + _, ok := set.data[value] + return ok +} + func MapIndexed[A any, B any](fn func(A, int) B, coll []A) []B { out := make([]B, len(coll)) for i, x := range coll { |