82 lines
1.7 KiB
Markdown
82 lines
1.7 KiB
Markdown
# Scrabble Score
|
|
|
|
Given a word, compute the scrabble score for that word.
|
|
|
|
## Letter Values
|
|
|
|
You'll need these:
|
|
|
|
```text
|
|
Letter Value
|
|
A, E, I, O, U, L, N, R, S, T 1
|
|
D, G 2
|
|
B, C, M, P 3
|
|
F, H, V, W, Y 4
|
|
K 5
|
|
J, X 8
|
|
Q, Z 10
|
|
```
|
|
|
|
## Examples
|
|
|
|
"cabbage" should be scored as worth 14 points:
|
|
|
|
- 3 points for C
|
|
- 1 point for A, twice
|
|
- 3 points for B, twice
|
|
- 2 points for G
|
|
- 1 point for E
|
|
|
|
And to total:
|
|
|
|
- `3 + 2*1 + 2*3 + 2 + 1`
|
|
- = `3 + 2 + 6 + 3`
|
|
- = `5 + 9`
|
|
- = 14
|
|
|
|
## Extensions
|
|
|
|
- You can play a double or a triple letter.
|
|
- You can play a double or a triple word.
|
|
|
|
## Running tests
|
|
|
|
Execute the tests with:
|
|
|
|
```bash
|
|
$ elixir scrabble_score_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:
|
|
|
|
```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
|
|
|
|
Inspired by the Extreme Startup game [https://github.com/rchatley/extreme_startup](https://github.com/rchatley/extreme_startup)
|
|
|
|
## Submitting Incomplete Solutions
|
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|