mirror of
https://github.com/correl/elm.git
synced 2024-11-24 19:19:53 +00:00
100 lines
2.2 KiB
Markdown
100 lines
2.2 KiB
Markdown
|
# Say
|
||
|
|
||
|
Given a number from 0 to 999,999,999,999, spell out that number in English.
|
||
|
|
||
|
## Step 1
|
||
|
|
||
|
Handle the basic case of 0 through 99.
|
||
|
|
||
|
If the input to the program is `22`, then the output should be
|
||
|
`'twenty-two'`.
|
||
|
|
||
|
Your program should complain loudly if given a number outside the
|
||
|
blessed range.
|
||
|
|
||
|
Some good test cases for this program are:
|
||
|
|
||
|
- 0
|
||
|
- 14
|
||
|
- 50
|
||
|
- 98
|
||
|
- -1
|
||
|
- 100
|
||
|
|
||
|
### Extension
|
||
|
|
||
|
If you're on a Mac, shell out to Mac OS X's `say` program to talk out
|
||
|
loud.
|
||
|
|
||
|
## Step 2
|
||
|
|
||
|
Implement breaking a number up into chunks of thousands.
|
||
|
|
||
|
So `1234567890` should yield a list like 1, 234, 567, and 890, while the
|
||
|
far simpler `1000` should yield just 1 and 0.
|
||
|
|
||
|
The program must also report any values that are out of range.
|
||
|
|
||
|
## Step 3
|
||
|
|
||
|
Now handle inserting the appropriate scale word between those chunks.
|
||
|
|
||
|
So `1234567890` should yield `'1 billion 234 million 567 thousand 890'`
|
||
|
|
||
|
The program must also report any values that are out of range. It's
|
||
|
fine to stop at "trillion".
|
||
|
|
||
|
## Step 4
|
||
|
|
||
|
Put it all together to get nothing but plain English.
|
||
|
|
||
|
`12345` should give `twelve thousand three hundred forty-five`.
|
||
|
|
||
|
The program must also report any values that are out of range.
|
||
|
|
||
|
### Extensions
|
||
|
|
||
|
Use _and_ (correctly) when spelling out the number in English:
|
||
|
|
||
|
- 14 becomes "fourteen".
|
||
|
- 100 becomes "one hundred".
|
||
|
- 120 becomes "one hundred and twenty".
|
||
|
- 1002 becomes "one thousand and two".
|
||
|
- 1323 becomes "one thousand three hundred and twenty-three".
|
||
|
|
||
|
## Elm Installation
|
||
|
|
||
|
Refer to the [Exercism help page](http://exercism.io/languages/elm) for Elm
|
||
|
installation and learning resources.
|
||
|
|
||
|
## Writing the Code
|
||
|
|
||
|
The first time you start an exercise, you'll need to ensure you have the
|
||
|
appropriate dependencies installed.
|
||
|
|
||
|
```bash
|
||
|
$ npm install
|
||
|
```
|
||
|
|
||
|
Execute the tests with:
|
||
|
|
||
|
```bash
|
||
|
$ npm test
|
||
|
```
|
||
|
|
||
|
Automatically run tests again when you save changes:
|
||
|
|
||
|
```bash
|
||
|
$ npm run watch
|
||
|
```
|
||
|
|
||
|
As you work your way through the test suite, be sure to remove the `skip <|`
|
||
|
calls from each test until you get them all passing!
|
||
|
|
||
|
## Source
|
||
|
|
||
|
A variation on JavaRanch CattleDrive, exercise 4a [http://www.javaranch.com/say.jsp](http://www.javaranch.com/say.jsp)
|
||
|
|
||
|
## Submitting Incomplete Solutions
|
||
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|