summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-08-26 11:50:58 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-08-26 11:50:58 +0200
commit588c3ca21ac7501dc96c74826ffbf19b7f8ca2ba (patch)
tree0077948e1346373b0dea79a44479cc9b2ffbbb3f
parent8d1a961e86996d6fa838b467e4e4d75ccdd46e93 (diff)
Add scrible problem
-rw-r--r--go/scrabble-score/README.md56
-rw-r--r--go/scrabble-score/scrabble_score.go7
-rw-r--r--go/scrabble-score/scrabble_score_test.go39
3 files changed, 102 insertions, 0 deletions
diff --git a/go/scrabble-score/README.md b/go/scrabble-score/README.md
new file mode 100644
index 0000000..96bf9c7
--- /dev/null
+++ b/go/scrabble-score/README.md
@@ -0,0 +1,56 @@
+# Scrabble Score
+
+Write a program that, given a word, computes the scrabble score for that word.
+
+## Letter Values
+
+You'll need these:
+
+```plain
+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.
+
+To run the tests simply run the command `go test` in the exercise directory.
+
+If the test suite contains benchmarks, you can run these with the `-bench`
+flag:
+
+ go test -bench .
+
+For more detailed info about the Go track see the [help
+page](http://exercism.io/languages/go).
+
+## Source
+
+Inspired by the Extreme Startup game [https://github.com/rchatley/extreme_startup](https://github.com/rchatley/extreme_startup)
+
+## Submitting Incomplete Problems
+It's possible to submit an incomplete solution so you can see how others have completed the exercise.
+
diff --git a/go/scrabble-score/scrabble_score.go b/go/scrabble-score/scrabble_score.go
new file mode 100644
index 0000000..7cb4479
--- /dev/null
+++ b/go/scrabble-score/scrabble_score.go
@@ -0,0 +1,7 @@
+package scrabble
+
+const testVersion = 4
+
+func Score(s string) int {
+ return 0
+}
diff --git a/go/scrabble-score/scrabble_score_test.go b/go/scrabble-score/scrabble_score_test.go
new file mode 100644
index 0000000..ca4466f
--- /dev/null
+++ b/go/scrabble-score/scrabble_score_test.go
@@ -0,0 +1,39 @@
+package scrabble
+
+import "testing"
+
+const targetTestVersion = 4
+
+var tests = []struct {
+ input string
+ expected int
+}{
+ {"", 0},
+ {" \t\n", 0},
+ {"a", 1},
+ {"f", 4},
+ {"street", 6},
+ {"quirky", 22},
+ {"OXYPHENBUTAZONE", 41},
+ {"alacrity", 13},
+}
+
+func TestScore(t *testing.T) {
+ for _, test := range tests {
+ if actual := Score(test.input); actual != test.expected {
+ t.Errorf("Score(%q) expected %d, Actual %d", test.input, test.expected, actual)
+ }
+ }
+
+ if testVersion != targetTestVersion {
+ t.Fatalf("Found testVersion = %v, want %v.", testVersion, targetTestVersion)
+ }
+}
+
+func BenchmarkScore(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ for _, test := range tests {
+ Score(test.input)
+ }
+ }
+}