From 588c3ca21ac7501dc96c74826ffbf19b7f8ca2ba Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Fri, 26 Aug 2016 11:50:58 +0200 Subject: Add scrible problem --- go/scrabble-score/README.md | 56 ++++++++++++++++++++++++++++++++ go/scrabble-score/scrabble_score.go | 7 ++++ go/scrabble-score/scrabble_score_test.go | 39 ++++++++++++++++++++++ 3 files changed, 102 insertions(+) create mode 100644 go/scrabble-score/README.md create mode 100644 go/scrabble-score/scrabble_score.go create mode 100644 go/scrabble-score/scrabble_score_test.go (limited to 'go') 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) + } + } +} -- cgit v1.2.3