74 lines
1.6 KiB
Markdown
74 lines
1.6 KiB
Markdown
|
# Say
|
||
|
|
||
|
Welcome to Say on Exercism's Elixir Track.
|
||
|
If you need help running the tests or submitting your code, check out `HELP.md`.
|
||
|
|
||
|
## Instructions
|
||
|
|
||
|
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.
|
||
|
If you're on Linux or Windows, eSpeakNG may be available with the command `espeak`.
|
||
|
|
||
|
## 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.
|
||
|
|
||
|
## 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.
|
||
|
|
||
|
## Source
|
||
|
|
||
|
### Created by
|
||
|
|
||
|
- @zporter
|
||
|
|
||
|
### Contributed to by
|
||
|
|
||
|
- @aifrak
|
||
|
- @amencarini
|
||
|
- @angelikatyborska
|
||
|
- @Cohen-Carlisle
|
||
|
- @devonestes
|
||
|
- @neenjaw
|
||
|
- @parkerl
|
||
|
- @sotojuan
|
||
|
|
||
|
### Based on
|
||
|
|
||
|
A variation on the JavaRanch CattleDrive, Assignment 4 - https://coderanch.com/wiki/718804
|