Browse Source

Initial commit

master
Jim Infield 9 years ago
committed by jimi
commit
c1a022867d
  1. 33
      README.md
  2. 25
      cases_test.go
  3. 9
      raindrops.go
  4. 25
      raindrops_test.go

33
README.md

@ -0,0 +1,33 @@
# Raindrops
Write a program that converts a number to a string, the contents of which depends on the number's prime factors.
- If the number contains 3 as a prime factor, output 'Pling'.
- If the number contains 5 as a prime factor, output 'Plang'.
- If the number contains 7 as a prime factor, output 'Plong'.
- If the number does not contain 3, 5, or 7 as a prime factor,
just pass the number's digits straight through.
## Examples
- 28's prime-factorization is 2, 2, 7.
- In raindrop-speak, this would be a simple "Plong".
- 1755 prime-factorization is 3, 3, 3, 5, 13.
- In raindrop-speak, this would be a "PlingPlang".
- The prime factors of 34 are 2 and 17.
- Raindrop-speak doesn't know what to make of that,
so it just goes with the straightforward "34".
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
A variation on a famous interview question intended to weed out potential candidates. [view source](http://jumpstartlab.com)

25
cases_test.go

@ -0,0 +1,25 @@
package raindrops
// Source: exercism/x-common
// Commit: 3b07e53 Merge pull request #117 from mikeyjcat/add-raindrops-json
var tests = []struct {
input int
expected string
}{
{1, "1"},
{3, "Pling"},
{5, "Plang"},
{7, "Plong"},
{6, "Pling"},
{9, "Pling"},
{10, "Plang"},
{14, "Plong"},
{15, "PlingPlang"},
{21, "PlingPlong"},
{25, "Plang"},
{35, "PlangPlong"},
{49, "Plong"},
{52, "52"},
{105, "PlingPlangPlong"},
}

9
raindrops.go

@ -0,0 +1,9 @@
// +build !example
package raindrops
const testVersion = 2
func Convert(int) string
// The test program has a benchmark too. How fast does your Convert convert?

25
raindrops_test.go

@ -0,0 +1,25 @@
package raindrops
import "testing"
const targetTestVersion = 2
func TestConvert(t *testing.T) {
if testVersion != targetTestVersion {
t.Fatalf("Found testVersion = %v, want %v", testVersion, targetTestVersion)
}
for _, test := range tests {
if actual := Convert(test.input); actual != test.expected {
t.Errorf("Convert(%d) = %q, expected %q.",
test.input, actual, test.expected)
}
}
}
func BenchmarkConvert(b *testing.B) {
for i := 0; i < b.N; i++ {
for _, test := range tests {
Convert(test.input)
}
}
}
Loading…
Cancel
Save