Started the kotlin track
This commit is contained in:
54
go/space-age/README.md
Normal file
54
go/space-age/README.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# Space Age
|
||||
|
||||
Given an age in seconds, calculate how old someone would be on:
|
||||
|
||||
- Earth: orbital period 365.25 Earth days, or 31557600 seconds
|
||||
- Mercury: orbital period 0.2408467 Earth years
|
||||
- Venus: orbital period 0.61519726 Earth years
|
||||
- Mars: orbital period 1.8808158 Earth years
|
||||
- Jupiter: orbital period 11.862615 Earth years
|
||||
- Saturn: orbital period 29.447498 Earth years
|
||||
- Uranus: orbital period 84.016846 Earth years
|
||||
- Neptune: orbital period 164.79132 Earth years
|
||||
|
||||
So if you were told someone were 1,000,000,000 seconds old, you should
|
||||
be able to say that they're 31.69 Earth-years old.
|
||||
|
||||
If you're wondering why Pluto didn't make the cut, go watch [this
|
||||
youtube video](http://www.youtube.com/watch?v=Z_2gbGXzFbs).
|
||||
|
||||
## No Stub
|
||||
|
||||
This may be the first Go track exercise you encounter without a stub: a
|
||||
pre-existing `space_age.go` file for your solution. You may not see stubs in
|
||||
the future and should begin to get comfortable with creating your own Go files
|
||||
for your solutions.
|
||||
|
||||
One way to figure out what the function signature(s) you would need is to look
|
||||
at the corresponding \*\_test.go file. It will show you what the package level
|
||||
functions(s) should be that the test will use to verify the solution.
|
||||
|
||||
|
||||
## Running the tests
|
||||
|
||||
To run the tests run the command `go test` from within the exercise directory.
|
||||
|
||||
If the test suite contains benchmarks, you can run these with the `-bench`
|
||||
flag:
|
||||
|
||||
go test -bench .
|
||||
|
||||
Keep in mind that each reviewer will run benchmarks on a different machine, with
|
||||
different specs, so the results from these benchmark tests may vary.
|
||||
|
||||
## Further information
|
||||
|
||||
For more detailed information about the Go track, including how to get help if
|
||||
you're having trouble, please visit the exercism.io [Go language page](http://exercism.io/languages/go/about).
|
||||
|
||||
## Source
|
||||
|
||||
Partially inspired by Chapter 1 in Chris Pine's online Learn to Program tutorial. [http://pine.fm/LearnToProgram/?Chapter=01](http://pine.fm/LearnToProgram/?Chapter=01)
|
||||
|
||||
## Submitting Incomplete Solutions
|
||||
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
61
go/space-age/cases_test.go
Normal file
61
go/space-age/cases_test.go
Normal file
@@ -0,0 +1,61 @@
|
||||
package space
|
||||
|
||||
// Source: exercism/problem-specifications
|
||||
// Commit: 8d4df79 space-age: Apply new "input" policy
|
||||
// Problem Specifications Version: 1.1.0
|
||||
|
||||
var testCases = []struct {
|
||||
description string
|
||||
planet Planet
|
||||
seconds float64
|
||||
expected float64
|
||||
}{
|
||||
{
|
||||
description: "age on Earth",
|
||||
planet: "Earth",
|
||||
seconds: 1000000000,
|
||||
expected: 31.69,
|
||||
},
|
||||
{
|
||||
description: "age on Mercury",
|
||||
planet: "Mercury",
|
||||
seconds: 2134835688,
|
||||
expected: 280.88,
|
||||
},
|
||||
{
|
||||
description: "age on Venus",
|
||||
planet: "Venus",
|
||||
seconds: 189839836,
|
||||
expected: 9.78,
|
||||
},
|
||||
{
|
||||
description: "age on Mars",
|
||||
planet: "Mars",
|
||||
seconds: 2329871239,
|
||||
expected: 39.25,
|
||||
},
|
||||
{
|
||||
description: "age on Jupiter",
|
||||
planet: "Jupiter",
|
||||
seconds: 901876382,
|
||||
expected: 2.41,
|
||||
},
|
||||
{
|
||||
description: "age on Saturn",
|
||||
planet: "Saturn",
|
||||
seconds: 3000000000,
|
||||
expected: 3.23,
|
||||
},
|
||||
{
|
||||
description: "age on Uranus",
|
||||
planet: "Uranus",
|
||||
seconds: 3210123456,
|
||||
expected: 1.21,
|
||||
},
|
||||
{
|
||||
description: "age on Neptune",
|
||||
planet: "Neptune",
|
||||
seconds: 8210123456,
|
||||
expected: 1.58,
|
||||
},
|
||||
}
|
25
go/space-age/space_age_test.go
Normal file
25
go/space-age/space_age_test.go
Normal file
@@ -0,0 +1,25 @@
|
||||
package space
|
||||
|
||||
import (
|
||||
"math"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestAge(t *testing.T) {
|
||||
const precision = 0.01
|
||||
for _, tc := range testCases {
|
||||
actual := Age(tc.seconds, tc.planet)
|
||||
if math.IsNaN(actual) || math.Abs(actual-tc.expected) > precision {
|
||||
t.Fatalf("FAIL: %s\nExpected: %#v\nActual: %#v", tc.description, tc.expected, actual)
|
||||
}
|
||||
t.Logf("PASS: %s", tc.description)
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkAge(b *testing.B) {
|
||||
for i := 0; i < b.N; i++ {
|
||||
for _, tc := range testCases {
|
||||
Age(tc.seconds, tc.planet)
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user