71 lines
1.8 KiB
Markdown
71 lines
1.8 KiB
Markdown
# Accumulate
|
|
|
|
Implement the `accumulate` operation, which, given a collection and an operation to perform on each element of the collection, returns a new collection containing the result of applying that operation to each element of the input collection.
|
|
|
|
Given the collection of numbers:
|
|
|
|
- 1, 2, 3, 4, 5
|
|
|
|
And the operation:
|
|
|
|
- square a number (`x => x * x`)
|
|
|
|
Your code should be able to produce the collection of squares:
|
|
|
|
- 1, 4, 9, 16, 25
|
|
|
|
Check out the test suite to see the expected function signature.
|
|
|
|
## Restrictions
|
|
|
|
Keep your hands off that collect/map/fmap/whatchamacallit functionality
|
|
provided by your standard library!
|
|
Solve this one yourself using other basic tools instead.
|
|
|
|
Lisp specific: it's perfectly fine to use `MAPCAR` or the equivalent,
|
|
as this is idiomatic Lisp, not a library function.
|
|
|
|
## Running tests
|
|
|
|
Execute the tests with:
|
|
|
|
```bash
|
|
$ elixir bob_test.exs
|
|
```
|
|
|
|
(Replace `bob_test.exs` with the name of the test file.)
|
|
|
|
|
|
### 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:
|
|
|
|
```elixir
|
|
# @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.
|
|
|
|
```elixir
|
|
# ExUnit.configure exclude: :pending, trace: true
|
|
```
|
|
|
|
For more detailed information about the Elixir track, please
|
|
see the [help page](http://exercism.io/languages/elixir).
|
|
|
|
## 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.
|
|
|