diff options
Diffstat (limited to 'engine/stack.go')
| -rw-r--r-- | engine/stack.go | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/engine/stack.go b/engine/stack.go new file mode 100644 index 0000000..d7fc7be --- /dev/null +++ b/engine/stack.go @@ -0,0 +1,22 @@ +package engine + +type Stack []*Card + +func (s Stack) Contains(predicate func(c IsCard) bool) bool { + for _, c := range s { + if predicate(c) { + return true + } + } + return false +} + +func (s Stack) Filter(predicate func(c IsCard) bool) Stack { + res := make(Stack, 0, len(s)) + for _, c := range s { + if predicate(c) { + res = append(res, c) + } + } + return res +} |
