105e38b22f | ||
---|---|---|
.. | ||
README.md | ||
strain.exs | ||
strain_test.exs |
README.md
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.
apply
will let you pass arguments to a function, as will fun.(args)
Running tests
Execute the tests with:
$ elixir strain_test.exs
Pending tests
In the test suites, all but the first test have been skipped.
Once you get a test passing, you can unskip the next one by
commenting out the relevant @tag :pending
with a #
symbol.
For example:
# @tag :pending
test "shouting" do
assert Bob.hey("WATCH OUT!") == "Whoa, chill out!"
end
Or, you can enable all the tests by commenting out the
ExUnit.configure
line in the test suite.
# ExUnit.configure exclude: :pending, trace: true
For more detailed information about the Elixir track, please see the help page.
Source
Conversation with James Edward Gray II 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.