trackler 2.0.8.9 → 2.0.8.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/common/exercises/change/canonical-data.json +6 -0
- data/lib/trackler/version.rb +1 -1
- data/tracks/elixir/exercises/all-your-base/all-your-base-test.exs +1 -1
- data/tracks/go/exercises/connect/example.go +7 -9
- data/tracks/go/exercises/error-handling/error_handling_test.go +2 -9
- data/tracks/go/exercises/hello-world/hello_test.go +22 -0
- data/tracks/go/exercises/leap/leap.go +0 -5
- data/tracks/go/exercises/leap/leap_test.go +2 -4
- data/tracks/go/exercises/paasio/example.go +1 -1
- data/tracks/go/exercises/parallel-letter-frequency/parallel_letter_frequency_test.go +19 -16
- data/tracks/go/exercises/perfect-numbers/perfect_numbers_test.go +8 -8
- data/tracks/go/exercises/poker/example.go +3 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9dceda62cf5804961190a45bdb1674e22beb903a
|
4
|
+
data.tar.gz: 1591edf17af892e711aecb9d1b2cabc1b472a5cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: abe7d5a9af5ae04d307b468618acb433fda74fb9266d8df78a6ca015cdcec513b95f47e39d584c8228f4785607b60bf4defcc3a08fa1569f9ffc069883a82a8f
|
7
|
+
data.tar.gz: 9294b813acecd5b4831e7585e3d7ce271b13da1cf49259b79a9ff188505c01820c2f8dea5c28ce0705ffa7a6d6df657a0012485bbd7841d453e4f400393b9789
|
@@ -36,6 +36,12 @@
|
|
36
36
|
"target": 999,
|
37
37
|
"expected": [2, 2, 5, 20, 20, 50, 100, 100, 100, 100, 100, 100, 100, 100, 100]
|
38
38
|
},
|
39
|
+
{
|
40
|
+
"description": "possible change without unit coins available",
|
41
|
+
"coins": [2, 5, 10, 20, 50],
|
42
|
+
"target": 21,
|
43
|
+
"expected": [2, 2, 2, 5, 10]
|
44
|
+
},
|
39
45
|
{
|
40
46
|
"description": "no coins make 0 change",
|
41
47
|
"coins": [1, 5, 10, 21, 25],
|
data/lib/trackler/version.rb
CHANGED
@@ -109,24 +109,22 @@ func (b board) startCoords(cf colorFlags) []coord {
|
|
109
109
|
if cf.color == white {
|
110
110
|
coords := make([]coord, b.width)
|
111
111
|
for i := 0; i < b.width; i++ {
|
112
|
-
coords[i] = coord{x: i
|
113
|
-
}
|
114
|
-
return coords
|
115
|
-
} else {
|
116
|
-
coords := make([]coord, b.height)
|
117
|
-
for i := 0; i < b.height; i++ {
|
118
|
-
coords[i] = coord{x: 0, y: i}
|
112
|
+
coords[i] = coord{x: i}
|
119
113
|
}
|
120
114
|
return coords
|
121
115
|
}
|
116
|
+
coords := make([]coord, b.height)
|
117
|
+
for i := 0; i < b.height; i++ {
|
118
|
+
coords[i] = coord{y: i}
|
119
|
+
}
|
120
|
+
return coords
|
122
121
|
}
|
123
122
|
|
124
123
|
func (b board) isTargetCoord(c coord, cf colorFlags) bool {
|
125
124
|
if cf.color == white {
|
126
125
|
return c.y == b.height-1
|
127
|
-
} else {
|
128
|
-
return c.x == b.width-1
|
129
126
|
}
|
127
|
+
return c.x == b.width-1
|
130
128
|
}
|
131
129
|
|
132
130
|
func (b board) evaluate(c coord, cf colorFlags) bool {
|
@@ -9,9 +9,6 @@ import (
|
|
9
9
|
// opens a resource, calls Frob(input) and closes the resource
|
10
10
|
// (in all cases). The function should properly handle errors,
|
11
11
|
// as defined by the expectations of this test suite.
|
12
|
-
//
|
13
|
-
// Also define a testVersion with a value that matches
|
14
|
-
// the targetTestVersion here.
|
15
12
|
|
16
13
|
const targetTestVersion = 2
|
17
14
|
|
@@ -27,8 +24,6 @@ func (mr mockResource) Close() error { return mr.close() }
|
|
27
24
|
func (mr mockResource) Frob(input string) { mr.frob(input) }
|
28
25
|
func (mr mockResource) Defrob(tag string) { mr.defrob(tag) }
|
29
26
|
|
30
|
-
// If this test fails and you've properly defined testVersion the requirements
|
31
|
-
// of the tests have changed since you wrote your submission.
|
32
27
|
func TestTestVersion(t *testing.T) {
|
33
28
|
if testVersion != targetTestVersion {
|
34
29
|
t.Fatalf("Found testVersion = %v, want %v", testVersion, targetTestVersion)
|
@@ -69,9 +64,8 @@ func TestKeepTryOpenOnTransient(t *testing.T) {
|
|
69
64
|
if nthCall < 3 {
|
70
65
|
nthCall++
|
71
66
|
return mockResource{}, TransientError{errors.New("some error")}
|
72
|
-
} else {
|
73
|
-
return mr, nil
|
74
67
|
}
|
68
|
+
return mr, nil
|
75
69
|
}
|
76
70
|
inp := "hello"
|
77
71
|
err := Use(opener, inp)
|
@@ -90,9 +84,8 @@ func TestFailOpenOnNonTransient(t *testing.T) {
|
|
90
84
|
if nthCall < 3 {
|
91
85
|
nthCall++
|
92
86
|
return mockResource{}, TransientError{errors.New("some error")}
|
93
|
-
} else {
|
94
|
-
return nil, errors.New("too awesome")
|
95
87
|
}
|
88
|
+
return nil, errors.New("too awesome")
|
96
89
|
}
|
97
90
|
inp := "hello"
|
98
91
|
err := Use(opener, inp)
|
@@ -33,3 +33,25 @@ func TestHelloWorld(t *testing.T) {
|
|
33
33
|
t.Fatalf("HelloWorld() = %v, want %v", observed, expected)
|
34
34
|
}
|
35
35
|
}
|
36
|
+
|
37
|
+
// BenchmarkHelloWorld() is a benchmarking function. These functions follow the
|
38
|
+
// form `func BenchmarkXxx(*testing.B)` and can be used to test the performance
|
39
|
+
// of your implementation. They may not be present in every exercise, but when
|
40
|
+
// they are you can run them by including the `-bench` flag with the `go test`
|
41
|
+
// command, like so: `go test -bench .`
|
42
|
+
//
|
43
|
+
// You will see output similar to the following:
|
44
|
+
//
|
45
|
+
// BenchmarkHelloWorld 2000000000 0.46 ns/op
|
46
|
+
//
|
47
|
+
// This means that the loop ran 2000000000 times at a speed of 0.46 ns per loop.
|
48
|
+
//
|
49
|
+
// While benchmarking can be useful to compare different iterations of the same
|
50
|
+
// exercise, keep in mind that others will run the same benchmarks on different
|
51
|
+
// machines, with different specs, so the results from these benchmark tests may
|
52
|
+
// vary.
|
53
|
+
func BenchmarkHelloWorld(b *testing.B) {
|
54
|
+
for i := 0; i < b.N; i++ {
|
55
|
+
HelloWorld()
|
56
|
+
}
|
57
|
+
}
|
@@ -1,12 +1,7 @@
|
|
1
|
-
// Leap stub file
|
2
|
-
|
3
|
-
// The package name is expected by the test program.
|
4
1
|
package leap
|
5
2
|
|
6
|
-
// testVersion should match the targetTestVersion in the test file.
|
7
3
|
const testVersion = 3
|
8
4
|
|
9
|
-
// It's good style to write a comment here documenting IsLeapYear.
|
10
5
|
func IsLeapYear(int) bool {
|
11
6
|
// Write some code here to pass the test suite.
|
12
7
|
}
|
@@ -2,10 +2,8 @@ package leap
|
|
2
2
|
|
3
3
|
import "testing"
|
4
4
|
|
5
|
-
// Define a function
|
6
|
-
//
|
7
|
-
// Also define a testVersion with a value that matches
|
8
|
-
// the targetTestVersion here.
|
5
|
+
// Define a function with the following signature:
|
6
|
+
// IsLeapYear(int) bool
|
9
7
|
|
10
8
|
const targetTestVersion = 3
|
11
9
|
|
@@ -5,27 +5,12 @@ import (
|
|
5
5
|
"testing"
|
6
6
|
)
|
7
7
|
|
8
|
-
const targetTestVersion = 1
|
9
|
-
|
10
|
-
func TestTestVersion(t *testing.T) {
|
11
|
-
if testVersion != targetTestVersion {
|
12
|
-
t.Fatalf("Found testVersion = %v, want %v", testVersion, targetTestVersion)
|
13
|
-
}
|
14
|
-
}
|
15
|
-
|
16
8
|
// In the separate file frequency.go, you are given a function, Frequency(),
|
17
9
|
// to sequentially count letter frequencies in a single text.
|
10
|
+
//
|
18
11
|
// Perform this exercise on parallelism using Go concurrency features.
|
19
12
|
// Make concurrent calls to Frequency and combine results to obtain the answer.
|
20
13
|
|
21
|
-
func TestConcurrentFrequency(t *testing.T) {
|
22
|
-
seq := Frequency(euro + dutch + us)
|
23
|
-
con := ConcurrentFrequency([]string{euro, dutch, us})
|
24
|
-
if !reflect.DeepEqual(con, seq) {
|
25
|
-
t.Fatal("ConcurrentFrequency wrong result")
|
26
|
-
}
|
27
|
-
}
|
28
|
-
|
29
14
|
var (
|
30
15
|
euro = `Freude schöner Götterfunken
|
31
16
|
Tochter aus Elysium,
|
@@ -35,6 +20,7 @@ Deine Zauber binden wieder
|
|
35
20
|
Was die Mode streng geteilt;
|
36
21
|
Alle Menschen werden Brüder,
|
37
22
|
Wo dein sanfter Flügel weilt.`
|
23
|
+
|
38
24
|
dutch = `Wilhelmus van Nassouwe
|
39
25
|
ben ik, van Duitsen bloed,
|
40
26
|
den vaderland getrouwe
|
@@ -43,6 +29,7 @@ Een Prinse van Oranje
|
|
43
29
|
ben ik, vrij, onverveerd,
|
44
30
|
den Koning van Hispanje
|
45
31
|
heb ik altijd geëerd.`
|
32
|
+
|
46
33
|
us = `O say can you see by the dawn's early light,
|
47
34
|
What so proudly we hailed at the twilight's last gleaming,
|
48
35
|
Whose broad stripes and bright stars through the perilous fight,
|
@@ -53,6 +40,22 @@ O say does that star-spangled banner yet wave,
|
|
53
40
|
O'er the land of the free and the home of the brave?`
|
54
41
|
)
|
55
42
|
|
43
|
+
const targetTestVersion = 1
|
44
|
+
|
45
|
+
func TestTestVersion(t *testing.T) {
|
46
|
+
if testVersion != targetTestVersion {
|
47
|
+
t.Fatalf("Found testVersion = %v, want %v", testVersion, targetTestVersion)
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
func TestConcurrentFrequency(t *testing.T) {
|
52
|
+
seq := Frequency(euro + dutch + us)
|
53
|
+
con := ConcurrentFrequency([]string{euro, dutch, us})
|
54
|
+
if !reflect.DeepEqual(con, seq) {
|
55
|
+
t.Fatal("ConcurrentFrequency wrong result")
|
56
|
+
}
|
57
|
+
}
|
58
|
+
|
56
59
|
func BenchmarkSequentialFrequency(b *testing.B) {
|
57
60
|
for i := 0; i < b.N; i++ {
|
58
61
|
Frequency(euro + dutch + us)
|
@@ -4,6 +4,14 @@ import "testing"
|
|
4
4
|
|
5
5
|
var _ error = ErrOnlyPositive
|
6
6
|
|
7
|
+
const targetTestVersion = 1
|
8
|
+
|
9
|
+
func TestTestVersion(t *testing.T) {
|
10
|
+
if testVersion != targetTestVersion {
|
11
|
+
t.Fatalf("Found testVersion = %v, want %v.", testVersion, targetTestVersion)
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
7
15
|
func TestGivesPositiveRequiredError(t *testing.T) {
|
8
16
|
if _, err := Classify(0); err != ErrOnlyPositive {
|
9
17
|
t.Errorf("Expected error %q but got %q", ErrOnlyPositive, err)
|
@@ -31,11 +39,3 @@ func TestClassifiesCorrectly(t *testing.T) {
|
|
31
39
|
}
|
32
40
|
}
|
33
41
|
}
|
34
|
-
|
35
|
-
const targetTestVersion = 1
|
36
|
-
|
37
|
-
func TestTestVersion(t *testing.T) {
|
38
|
-
if testVersion != targetTestVersion {
|
39
|
-
t.Errorf("Found testVersion = %v, want %v.", testVersion, targetTestVersion)
|
40
|
-
}
|
41
|
-
}
|
@@ -60,9 +60,8 @@ func (s rankCountSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
|
|
60
60
|
func (s rankCountSlice) Less(i, j int) bool {
|
61
61
|
if s[i].count != s[j].count {
|
62
62
|
return s[i].count < s[j].count
|
63
|
-
} else {
|
64
|
-
return s[i].rank < s[j].rank
|
65
63
|
}
|
64
|
+
return s[i].rank < s[j].rank
|
66
65
|
}
|
67
66
|
|
68
67
|
// The strength of a hand in a way that's easily comparable.
|
@@ -86,17 +85,15 @@ func (hv handValue) Compare(other handValue) ordering {
|
|
86
85
|
if hv.discrs[i] != other.discrs[i] {
|
87
86
|
if hv.discrs[i] < other.discrs[i] {
|
88
87
|
return lessThan
|
89
|
-
} else {
|
90
|
-
return greaterThan
|
91
88
|
}
|
89
|
+
return greaterThan
|
92
90
|
}
|
93
91
|
}
|
94
92
|
return equalTo
|
95
93
|
} else if hv.kind < other.kind {
|
96
94
|
return lessThan
|
97
|
-
} else {
|
98
|
-
return greaterThan
|
99
95
|
}
|
96
|
+
return greaterThan
|
100
97
|
}
|
101
98
|
|
102
99
|
func BestHand(hands []string) ([]string, error) {
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trackler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.8.
|
4
|
+
version: 2.0.8.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Katrina Owen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
11
|
+
date: 2017-03-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyzip
|