65 lines
1.8 KiB
Markdown
65 lines
1.8 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.
|
|
|
|
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.
|
|
|
|
* * * *
|
|
|
|
For installation and learning resources, refer to the
|
|
[exercism help page](http://exercism.io/languages/ruby).
|
|
|
|
For running the tests provided, you will need the Minitest gem. Open a
|
|
terminal window and run the following command to install minitest:
|
|
|
|
gem install minitest
|
|
|
|
If you would like color output, you can `require 'minitest/pride'` in
|
|
the test file, or note the alternative instruction, below, for running
|
|
the test file.
|
|
|
|
Run the tests from the exercise directory using the following command:
|
|
|
|
ruby strain_test.rb
|
|
|
|
To include color from the command line:
|
|
|
|
ruby -r minitest/pride strain_test.rb
|
|
|
|
|
|
## Source
|
|
|
|
Conversation with James Edward Gray II [https://twitter.com/jeg2](https://twitter.com/jeg2)
|
|
|
|
## Submitting Incomplete Solutions
|
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|