55 lines
2.3 KiB
Markdown
55 lines
2.3 KiB
Markdown
# Raindrops
|
|
|
|
Your task is to convert a number into a string that contains raindrop sounds corresponding to certain potential factors. A factor is a number that evenly divides into another number, leaving no remainder. The simplest way to test if a one number is a factor of another is to use the [modulo operation](https://en.wikipedia.org/wiki/Modulo_operation).
|
|
|
|
The rules of `raindrops` are that if a given number:
|
|
|
|
- has 3 as a factor, add 'Pling' to the result.
|
|
- has 5 as a factor, add 'Plang' to the result.
|
|
- has 7 as a factor, add 'Plong' to the result.
|
|
- _does not_ have any of 3, 5, or 7 as a factor, the result should be the digits of the number.
|
|
|
|
## Examples
|
|
|
|
- 28 has 7 as a factor, but not 3 or 5, so the result would be "Plong".
|
|
- 30 has both 3 and 5 as factors, but not 7, so the result would be "PlingPlang".
|
|
- 34 is not factored by 3, 5, or 7, so the result would be "34".
|
|
|
|
## Getting Started
|
|
|
|
Make sure you have read the "Guides" section of the
|
|
[C track][c-track] on the Exercism site. This covers
|
|
the basic information on setting up the development environment expected
|
|
by the exercises.
|
|
|
|
## Passing the Tests
|
|
|
|
Get the first test compiling, linking and passing by following the [three
|
|
rules of test-driven development][3-tdd-rules].
|
|
|
|
The included makefile can be used to create and run the tests using the `test`
|
|
task.
|
|
|
|
make test
|
|
|
|
Create just the functions you need to satisfy any compiler errors and get the
|
|
test to fail. Then write just enough code to get the test to pass. Once you've
|
|
done that, move onto the next test.
|
|
|
|
As you progress through the tests, take the time to refactor your
|
|
implementation for readability and expressiveness and then go on to the next
|
|
test.
|
|
|
|
Try to use standard C99 facilities in preference to writing your own
|
|
low-level algorithms or facilities by hand.
|
|
|
|
## Source
|
|
|
|
A variation on FizzBuzz, a famous technical interview question that is intended to weed out potential candidates. That question is itself derived from Fizz Buzz, a popular children's game for teaching division. [https://en.wikipedia.org/wiki/Fizz_buzz](https://en.wikipedia.org/wiki/Fizz_buzz)
|
|
|
|
## Submitting Incomplete Solutions
|
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
|
|
[c-track]: https://exercism.io/my/tracks/c
|
|
[3-tdd-rules]: http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd
|