Initial Commit

This commit is contained in:
2016-08-13 18:20:14 -05:00
commit 50f4a86fd8
408 changed files with 15301 additions and 0 deletions

33
go/raindrops/README.md Normal file
View File

@@ -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://help.exercism.io/getting-started-with-go.html).
## Source
A variation on a famous interview question intended to weed out potential candidates. [view source](http://jumpstartlab.com)

View File

@@ -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"},
}

26
go/raindrops/raindrops.go Normal file
View File

@@ -0,0 +1,26 @@
package raindrops
import "fmt"
// TestVersion
const TestVersion = 1
// Convert takes a number and returns Raindrop-speak
func Convert(i int) string {
var ret string
if i%3 == 0 {
ret += "Pling"
}
if i%5 == 0 {
ret += "Plang"
}
if i%7 == 0 {
ret += "Plong"
}
if ret != "" {
return ret
}
return fmt.Sprintf("%d", i)
}
// The test program has a benchmark too. How fast does your Convert convert?

View File

@@ -0,0 +1,28 @@
package raindrops
import "testing"
const testVersion = 1
// Retired testVersions
// (none) 52fb31c169bc1b540109028f33f4f61b5f429753
func TestConvert(t *testing.T) {
if TestVersion != testVersion {
t.Fatalf("Found TestVersion = %v, want %v", TestVersion, testVersion)
}
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)
}
}
}