diff options
author | EuAndreh <eu@euandre.org> | 2025-02-14 10:29:25 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2025-02-14 10:29:25 -0300 |
commit | 1cecd293f5d3e536cd89a21c00f44118b2426b3c (patch) | |
tree | 08c2e7553b5b9e382b6303e7ca9b8b7b63a03bed /src/gobang.go | |
parent | src/gobang.go: Add PanicIf() companion to Must() (diff) | |
download | gobang-1cecd293f5d3e536cd89a21c00f44118b2426b3c.tar.gz gobang-1cecd293f5d3e536cd89a21c00f44118b2426b3c.tar.xz |
src/gobang.go: Add simplistic implementation of Map() and Filter()
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) |