summaryrefslogtreecommitdiff
path: root/src/gobang.go
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2025-02-14 10:29:25 -0300
committerEuAndreh <eu@euandre.org>2025-02-14 10:29:25 -0300
commit1cecd293f5d3e536cd89a21c00f44118b2426b3c (patch)
tree08c2e7553b5b9e382b6303e7ca9b8b7b63a03bed /src/gobang.go
parentsrc/gobang.go: Add PanicIf() companion to Must() (diff)
downloadgobang-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.go24
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)