54 lines
1.6 KiB
Markdown
54 lines
1.6 KiB
Markdown
# Strain
|
|
|
|
Implement the `keep` and `discard` operation on collections. Given a collection and a predicate on the collection's elements, `keep` returns a new collection containing those elements where the predicate is true, while `discard` returns a new collection containing those elements where the predicate is false.
|
|
|
|
Write two functions that each take a function and a list. One of them will
|
|
return the list of items for which the passed in function is true, and the
|
|
other will return the items for which it is false.
|
|
|
|
For example, given the collection of numbers:
|
|
|
|
- 1, 2, 3, 4, 5
|
|
|
|
And the predicate:
|
|
|
|
- is the number even?
|
|
|
|
Then your keep operation should produce:
|
|
|
|
- 2, 4
|
|
|
|
While your discard operation should produce:
|
|
|
|
- 1, 3, 5
|
|
|
|
Note that the union of keep and discard is all the elements.
|
|
|
|
The functions may be called `keep` and `discard`, or they may need different
|
|
names in order to not clash with existing functions or concepts in your
|
|
language.
|
|
|
|
## Restrictions
|
|
|
|
Keep your hands off that filter/reject/whatchamacallit functionality
|
|
provided by your standard library! Solve this one yourself using other
|
|
basic tools instead.
|
|
|
|
To run the tests simply run the command `go test` in the exercise directory.
|
|
|
|
If the test suite contains benchmarks, you can run these with the `-bench`
|
|
flag:
|
|
|
|
go test -bench .
|
|
|
|
For more detailed info about the Go track see the [help
|
|
page](http://exercism.io/languages/go).
|
|
|
|
## Source
|
|
|
|
Conversation with James Edward Gray II [https://twitter.com/jeg2](https://twitter.com/jeg2)
|
|
|
|
## Submitting Incomplete Problems
|
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
|