diff options
Diffstat (limited to 'src/gobang.go')
-rw-r--r-- | src/gobang.go | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/gobang.go b/src/gobang.go index 2985d19..1826a5f 100644 --- a/src/gobang.go +++ b/src/gobang.go @@ -65,6 +65,30 @@ var ( +func MapIndexed[A any, B any](fn func(A, int) B, coll []A) []B { + out := make([]B, len(coll)) + for i, x := range coll { + out[i] = fn(x, i) + } + return out +} + +func Map[A any, B any](fn func(A) B, coll []A) []B { + return MapIndexed(func(x A, _ int) B { + return fn(x) + }, coll) +} + +func Filter[A any](fn func(A) bool, coll []A) []A { + out := []A{} + for _, x := range coll { + if fn(x) { + out = append(out, x) + } + } + return out +} + func PanicIf(err error) { if err != nil { panic(err) |