trackler 2.2.1.96 → 2.2.1.97
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/lib/trackler/version.rb +1 -1
- data/tracks/fsharp/exercises/bowling/BowlingTest.fs +77 -42
- data/tracks/fsharp/generators/Generators.fs +24 -0
- data/tracks/go/exercises/acronym/cases_test.go +2 -6
- data/tracks/go/exercises/anagram/cases_test.go +2 -40
- data/tracks/go/exercises/hamming/.meta/gen.go +7 -5
- data/tracks/go/exercises/hamming/cases_test.go +2 -2
- data/tracks/go/exercises/largest-series-product/.meta/gen.go +6 -4
- data/tracks/go/exercises/largest-series-product/cases_test.go +2 -2
- data/tracks/go/exercises/leap/.meta/gen.go +5 -3
- data/tracks/go/exercises/leap/cases_test.go +2 -2
- data/tracks/go/exercises/nth-prime/.meta/gen.go +5 -3
- data/tracks/go/exercises/nth-prime/cases_test.go +2 -2
- data/tracks/java/exercises/allergies/.meta/hints.md +58 -0
- data/tracks/java/exercises/allergies/README.md +62 -0
- data/tracks/java/exercises/atbash-cipher/.meta/hints.md +58 -0
- data/tracks/java/exercises/atbash-cipher/README.md +62 -0
- data/tracks/java/exercises/bob/.meta/hints.md +58 -0
- data/tracks/java/exercises/bob/README.md +62 -0
- data/tracks/java/exercises/bracket-push/.meta/hints.md +58 -0
- data/tracks/java/exercises/bracket-push/README.md +62 -0
- data/tracks/java/exercises/hello-world/.meta/version +1 -0
- data/tracks/java/exercises/pascals-triangle/.meta/hints.md +58 -0
- data/tracks/java/exercises/pascals-triangle/README.md +62 -0
- data/tracks/java/exercises/series/.meta/hints.md +58 -0
- data/tracks/java/exercises/series/README.md +62 -0
- data/tracks/python/exercises/grep/grep_test.py +142 -79
- data/tracks/python/exercises/house/example.py +3 -3
- data/tracks/python/exercises/house/house.py +1 -1
- data/tracks/python/exercises/luhn/example.py +4 -4
- data/tracks/python/exercises/luhn/luhn.py +1 -1
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a879165bbaf3374166c71dc34a41c6aec1bb4810
|
4
|
+
data.tar.gz: c2523fd9d3a926cc23467b989899bdf68f0fa565
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1cc0663e27885b9b49fe12f96d9157edd8e461124f5dec5d6e6cd80e479086938f1064cd8bc14eaba7e81b52d491f1e2332c3d754f8c81b31063939d2a541d3d
|
7
|
+
data.tar.gz: a0dac94954516db51e090848ee10285b9303d1e5b6f0fb3ad23a1a4e465c50cadab72b7d98503922a9c8e1c5a2cf768ed6411e69513a1c34fb0b16f52621d5b8
|
data/lib/trackler/version.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
+
// This file was auto-generated based on version 1.1.0 of the canonical data.
|
2
|
+
|
1
3
|
module BowlingTest
|
2
4
|
|
3
|
-
open Xunit
|
4
5
|
open FsUnit.Xunit
|
6
|
+
open Xunit
|
5
7
|
|
6
8
|
open Bowling
|
7
9
|
|
@@ -12,141 +14,174 @@ let ``Should be able to score a game with all zeros`` () =
|
|
12
14
|
let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
|
13
15
|
let game = rollMany rolls (newGame())
|
14
16
|
score game |> should equal <| Some 0
|
15
|
-
|
17
|
+
|
16
18
|
[<Fact(Skip = "Remove to run test")>]
|
17
19
|
let ``Should be able to score a game with no strikes or spares`` () =
|
18
20
|
let rolls = [3; 6; 3; 6; 3; 6; 3; 6; 3; 6; 3; 6; 3; 6; 3; 6; 3; 6; 3; 6]
|
19
21
|
let game = rollMany rolls (newGame())
|
20
22
|
score game |> should equal <| Some 90
|
21
|
-
|
23
|
+
|
22
24
|
[<Fact(Skip = "Remove to run test")>]
|
23
25
|
let ``A spare followed by zeros is worth ten points`` () =
|
24
26
|
let rolls = [6; 4; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
|
25
27
|
let game = rollMany rolls (newGame())
|
26
28
|
score game |> should equal <| Some 10
|
27
|
-
|
29
|
+
|
28
30
|
[<Fact(Skip = "Remove to run test")>]
|
29
31
|
let ``Points scored in the roll after a spare are counted twice`` () =
|
30
32
|
let rolls = [6; 4; 3; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
|
31
33
|
let game = rollMany rolls (newGame())
|
32
34
|
score game |> should equal <| Some 16
|
33
|
-
|
35
|
+
|
34
36
|
[<Fact(Skip = "Remove to run test")>]
|
35
37
|
let ``Consecutive spares each get a one roll bonus`` () =
|
36
38
|
let rolls = [5; 5; 3; 7; 4; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
|
37
39
|
let game = rollMany rolls (newGame())
|
38
40
|
score game |> should equal <| Some 31
|
39
|
-
|
41
|
+
|
40
42
|
[<Fact(Skip = "Remove to run test")>]
|
41
43
|
let ``A spare in the last frame gets a one roll bonus that is counted once`` () =
|
42
44
|
let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 7; 3; 7]
|
43
45
|
let game = rollMany rolls (newGame())
|
44
46
|
score game |> should equal <| Some 17
|
45
|
-
|
47
|
+
|
46
48
|
[<Fact(Skip = "Remove to run test")>]
|
47
|
-
let ``A strike earns ten points in frame with a single roll`` () =
|
49
|
+
let ``A strike earns ten points in a frame with a single roll`` () =
|
48
50
|
let rolls = [10; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
|
49
51
|
let game = rollMany rolls (newGame())
|
50
52
|
score game |> should equal <| Some 10
|
51
|
-
|
53
|
+
|
52
54
|
[<Fact(Skip = "Remove to run test")>]
|
53
55
|
let ``Points scored in the two rolls after a strike are counted twice as a bonus`` () =
|
54
56
|
let rolls = [10; 5; 3; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
|
55
57
|
let game = rollMany rolls (newGame())
|
56
58
|
score game |> should equal <| Some 26
|
57
|
-
|
59
|
+
|
58
60
|
[<Fact(Skip = "Remove to run test")>]
|
59
61
|
let ``Consecutive strikes each get the two roll bonus`` () =
|
60
62
|
let rolls = [10; 10; 10; 5; 3; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
|
61
63
|
let game = rollMany rolls (newGame())
|
62
64
|
score game |> should equal <| Some 81
|
63
|
-
|
65
|
+
|
64
66
|
[<Fact(Skip = "Remove to run test")>]
|
65
67
|
let ``A strike in the last frame gets a two roll bonus that is counted once`` () =
|
66
68
|
let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 10; 7; 1]
|
67
69
|
let game = rollMany rolls (newGame())
|
68
70
|
score game |> should equal <| Some 18
|
69
|
-
|
71
|
+
|
70
72
|
[<Fact(Skip = "Remove to run test")>]
|
71
73
|
let ``Rolling a spare with the two roll bonus does not get a bonus roll`` () =
|
72
74
|
let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 10; 7; 3]
|
73
75
|
let game = rollMany rolls (newGame())
|
74
76
|
score game |> should equal <| Some 20
|
75
|
-
|
77
|
+
|
76
78
|
[<Fact(Skip = "Remove to run test")>]
|
77
79
|
let ``Strikes with the two roll bonus do not get bonus rolls`` () =
|
78
80
|
let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 10; 10; 10]
|
79
81
|
let game = rollMany rolls (newGame())
|
80
82
|
score game |> should equal <| Some 30
|
81
|
-
|
83
|
+
|
82
84
|
[<Fact(Skip = "Remove to run test")>]
|
83
85
|
let ``A strike with the one roll bonus after a spare in the last frame does not get a bonus`` () =
|
84
86
|
let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 7; 3; 10]
|
85
87
|
let game = rollMany rolls (newGame())
|
86
88
|
score game |> should equal <| Some 20
|
87
|
-
|
89
|
+
|
88
90
|
[<Fact(Skip = "Remove to run test")>]
|
89
91
|
let ``All strikes is a perfect game`` () =
|
90
92
|
let rolls = [10; 10; 10; 10; 10; 10; 10; 10; 10; 10; 10; 10]
|
91
93
|
let game = rollMany rolls (newGame())
|
92
94
|
score game |> should equal <| Some 300
|
93
|
-
|
95
|
+
|
94
96
|
[<Fact(Skip = "Remove to run test")>]
|
95
|
-
let ``Rolls
|
96
|
-
let rolls = [
|
97
|
-
let
|
97
|
+
let ``Rolls cannot score negative points`` () =
|
98
|
+
let rolls = []
|
99
|
+
let startingRolls = rollMany rolls (newGame())
|
100
|
+
let game = roll -1 startingRolls
|
98
101
|
score game |> should equal None
|
99
|
-
|
102
|
+
|
100
103
|
[<Fact(Skip = "Remove to run test")>]
|
101
|
-
let ``A roll
|
102
|
-
let rolls = [
|
103
|
-
let
|
104
|
+
let ``A roll cannot score more than 10 points`` () =
|
105
|
+
let rolls = []
|
106
|
+
let startingRolls = rollMany rolls (newGame())
|
107
|
+
let game = roll 11 startingRolls
|
104
108
|
score game |> should equal None
|
105
|
-
|
109
|
+
|
106
110
|
[<Fact(Skip = "Remove to run test")>]
|
107
|
-
let ``Two rolls in a frame
|
108
|
-
let rolls = [5
|
109
|
-
let
|
111
|
+
let ``Two rolls in a frame cannot score more than 10 points`` () =
|
112
|
+
let rolls = [5]
|
113
|
+
let startingRolls = rollMany rolls (newGame())
|
114
|
+
let game = roll 6 startingRolls
|
110
115
|
score game |> should equal None
|
111
|
-
|
116
|
+
|
112
117
|
[<Fact(Skip = "Remove to run test")>]
|
113
|
-
let ``
|
114
|
-
let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 10
|
118
|
+
let ``Bonus roll after a strike in the last frame cannot score more than 10 points`` () =
|
119
|
+
let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 10]
|
120
|
+
let startingRolls = rollMany rolls (newGame())
|
121
|
+
let game = roll 11 startingRolls
|
122
|
+
score game |> should equal None
|
123
|
+
|
124
|
+
[<Fact(Skip = "Remove to run test")>]
|
125
|
+
let ``Two bonus rolls after a strike in the last frame cannot score more than 10 points`` () =
|
126
|
+
let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 10; 5]
|
127
|
+
let startingRolls = rollMany rolls (newGame())
|
128
|
+
let game = roll 6 startingRolls
|
129
|
+
score game |> should equal None
|
130
|
+
|
131
|
+
[<Fact(Skip = "Remove to run test")>]
|
132
|
+
let ``Two bonus rolls after a strike in the last frame can score more than 10 points if one is a strike`` () =
|
133
|
+
let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 10; 10; 6]
|
115
134
|
let game = rollMany rolls (newGame())
|
135
|
+
score game |> should equal <| Some 26
|
136
|
+
|
137
|
+
[<Fact(Skip = "Remove to run test")>]
|
138
|
+
let ``The second bonus rolls after a strike in the last frame cannot be a strike if the first one is not a strike`` () =
|
139
|
+
let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 10; 6]
|
140
|
+
let startingRolls = rollMany rolls (newGame())
|
141
|
+
let game = roll 10 startingRolls
|
142
|
+
score game |> should equal None
|
143
|
+
|
144
|
+
[<Fact(Skip = "Remove to run test")>]
|
145
|
+
let ``Second bonus roll after a strike in the last frame cannot score more than 10 points`` () =
|
146
|
+
let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 10; 10]
|
147
|
+
let startingRolls = rollMany rolls (newGame())
|
148
|
+
let game = roll 11 startingRolls
|
116
149
|
score game |> should equal None
|
117
|
-
|
150
|
+
|
118
151
|
[<Fact(Skip = "Remove to run test")>]
|
119
|
-
let ``An unstarted game
|
152
|
+
let ``An unstarted game cannot be scored`` () =
|
120
153
|
let rolls = []
|
121
154
|
let game = rollMany rolls (newGame())
|
122
155
|
score game |> should equal None
|
123
|
-
|
156
|
+
|
124
157
|
[<Fact(Skip = "Remove to run test")>]
|
125
|
-
let ``An incomplete game
|
158
|
+
let ``An incomplete game cannot be scored`` () =
|
126
159
|
let rolls = [0; 0]
|
127
160
|
let game = rollMany rolls (newGame())
|
128
161
|
score game |> should equal None
|
129
|
-
|
162
|
+
|
130
163
|
[<Fact(Skip = "Remove to run test")>]
|
131
|
-
let ``
|
132
|
-
let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0
|
133
|
-
let
|
164
|
+
let ``Cannot roll if game already has ten frames`` () =
|
165
|
+
let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
|
166
|
+
let startingRolls = rollMany rolls (newGame())
|
167
|
+
let game = roll 0 startingRolls
|
134
168
|
score game |> should equal None
|
135
|
-
|
169
|
+
|
136
170
|
[<Fact(Skip = "Remove to run test")>]
|
137
171
|
let ``Bonus rolls for a strike in the last frame must be rolled before score can be calculated`` () =
|
138
172
|
let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 10]
|
139
173
|
let game = rollMany rolls (newGame())
|
140
174
|
score game |> should equal None
|
141
|
-
|
175
|
+
|
142
176
|
[<Fact(Skip = "Remove to run test")>]
|
143
177
|
let ``Both bonus rolls for a strike in the last frame must be rolled before score can be calculated`` () =
|
144
178
|
let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 10; 10]
|
145
179
|
let game = rollMany rolls (newGame())
|
146
180
|
score game |> should equal None
|
147
|
-
|
181
|
+
|
148
182
|
[<Fact(Skip = "Remove to run test")>]
|
149
183
|
let ``Bonus roll for a spare in the last frame must be rolled before score can be calculated`` () =
|
150
184
|
let rolls = [0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 7; 3]
|
151
185
|
let game = rollMany rolls (newGame())
|
152
|
-
score game |> should equal None
|
186
|
+
score game |> should equal None
|
187
|
+
|
@@ -132,6 +132,30 @@ type BookStore() =
|
|
132
132
|
override __.PropertiesUsedAsSutParameter canonicalDataCase =
|
133
133
|
base.PropertiesUsedAsSutParameter canonicalDataCase |> List.except ["targetgrouping"]
|
134
134
|
|
135
|
+
type Bowling() =
|
136
|
+
inherit GeneratorExercise()
|
137
|
+
|
138
|
+
override __.RenderSut _ ="score game"
|
139
|
+
|
140
|
+
override __.RenderSetup canonicalDataCase =
|
141
|
+
"let rollMany rolls game = List.fold (fun game pins -> roll pins game) game rolls"
|
142
|
+
|
143
|
+
override __.RenderArrange canonicalDataCase =
|
144
|
+
seq {
|
145
|
+
let arr = (canonicalDataCase.Input.["previousRolls"] :?> JToken).ToObject<string[]>()
|
146
|
+
yield sprintf "let rolls = %s" (formatList arr)
|
147
|
+
if canonicalDataCase.Input.ContainsKey "roll" then
|
148
|
+
let roll = canonicalDataCase.Input.["roll"] :?> int64
|
149
|
+
yield sprintf "let startingRolls = rollMany rolls (newGame())"
|
150
|
+
yield sprintf "let game = roll %i startingRolls" roll
|
151
|
+
else
|
152
|
+
yield sprintf "let game = rollMany rolls (newGame())"
|
153
|
+
}
|
154
|
+
|> Seq.toList
|
155
|
+
|
156
|
+
override __.RenderExpected (_, _, value) =
|
157
|
+
if value :? JObject then "None" else sprintf "<| Some %s" (formatValue value)
|
158
|
+
|
135
159
|
type BracketPush() =
|
136
160
|
inherit GeneratorExercise()
|
137
161
|
|
@@ -1,8 +1,8 @@
|
|
1
1
|
package acronym
|
2
2
|
|
3
3
|
// Source: exercism/problem-specifications
|
4
|
-
// Commit:
|
5
|
-
// Problem Specifications Version: 1.
|
4
|
+
// Commit: 5ae1dba Acronym canonical-data: Remove redundant test case
|
5
|
+
// Problem Specifications Version: 1.3.0
|
6
6
|
|
7
7
|
type acronymTest struct {
|
8
8
|
input string
|
@@ -22,10 +22,6 @@ var stringTestCases = []acronymTest{
|
|
22
22
|
input: "First In, First Out",
|
23
23
|
expected: "FIFO",
|
24
24
|
},
|
25
|
-
{
|
26
|
-
input: "PHP: Hypertext Preprocessor",
|
27
|
-
expected: "PHP",
|
28
|
-
},
|
29
25
|
{
|
30
26
|
input: "GNU Image Manipulation Program",
|
31
27
|
expected: "GIMP",
|
@@ -1,8 +1,8 @@
|
|
1
1
|
package anagram
|
2
2
|
|
3
3
|
// Source: exercism/problem-specifications
|
4
|
-
// Commit:
|
5
|
-
// Problem Specifications Version: 1.
|
4
|
+
// Commit: b8359f9 Anagram canonical-data: Update version
|
5
|
+
// Problem Specifications Version: 1.2.0
|
6
6
|
|
7
7
|
var testCases = []struct {
|
8
8
|
description string
|
@@ -20,23 +20,6 @@ var testCases = []struct {
|
|
20
20
|
"pants"},
|
21
21
|
expected: []string{},
|
22
22
|
},
|
23
|
-
{
|
24
|
-
description: "detects simple anagram",
|
25
|
-
subject: "ant",
|
26
|
-
candidates: []string{
|
27
|
-
"tan",
|
28
|
-
"stand",
|
29
|
-
"at"},
|
30
|
-
expected: []string{
|
31
|
-
"tan"},
|
32
|
-
},
|
33
|
-
{
|
34
|
-
description: "does not detect false positives",
|
35
|
-
subject: "galea",
|
36
|
-
candidates: []string{
|
37
|
-
"eagle"},
|
38
|
-
expected: []string{},
|
39
|
-
},
|
40
23
|
{
|
41
24
|
description: "detects two anagrams",
|
42
25
|
subject: "master",
|
@@ -82,20 +65,6 @@ var testCases = []struct {
|
|
82
65
|
"regally",
|
83
66
|
"largely"},
|
84
67
|
},
|
85
|
-
{
|
86
|
-
description: "does not detect identical words",
|
87
|
-
subject: "corn",
|
88
|
-
candidates: []string{
|
89
|
-
"corn",
|
90
|
-
"dark",
|
91
|
-
"Corn",
|
92
|
-
"rank",
|
93
|
-
"CORN",
|
94
|
-
"cron",
|
95
|
-
"park"},
|
96
|
-
expected: []string{
|
97
|
-
"cron"},
|
98
|
-
},
|
99
68
|
{
|
100
69
|
description: "does not detect non-anagrams with identical checksum",
|
101
70
|
subject: "mass",
|
@@ -133,13 +102,6 @@ var testCases = []struct {
|
|
133
102
|
expected: []string{
|
134
103
|
"Carthorse"},
|
135
104
|
},
|
136
|
-
{
|
137
|
-
description: "does not detect a word as its own anagram",
|
138
|
-
subject: "banana",
|
139
|
-
candidates: []string{
|
140
|
-
"Banana"},
|
141
|
-
expected: []string{},
|
142
|
-
},
|
143
105
|
{
|
144
106
|
description: "does not detect a anagram if the original word is repeated",
|
145
107
|
subject: "go",
|
@@ -25,9 +25,11 @@ type js struct {
|
|
25
25
|
|
26
26
|
type oneCase struct {
|
27
27
|
Description string
|
28
|
-
|
29
|
-
|
30
|
-
|
28
|
+
Input struct {
|
29
|
+
Strand1 string
|
30
|
+
Strand2 string
|
31
|
+
}
|
32
|
+
Expected interface{}
|
31
33
|
}
|
32
34
|
|
33
35
|
func (o oneCase) Want() int {
|
@@ -49,8 +51,8 @@ var testCases = []struct {
|
|
49
51
|
want int
|
50
52
|
}{
|
51
53
|
{{range .J.Cases}}{ // {{.Description}}
|
52
|
-
{{printf "%q" .Strand1}},
|
53
|
-
{{printf "%q" .Strand2}},
|
54
|
+
{{printf "%q" .Input.Strand1}},
|
55
|
+
{{printf "%q" .Input.Strand2}},
|
54
56
|
{{.Want}},
|
55
57
|
},
|
56
58
|
{{end}}}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
package hamming
|
2
2
|
|
3
3
|
// Source: exercism/problem-specifications
|
4
|
-
// Commit:
|
5
|
-
// Problem Specifications Version: 2.0
|
4
|
+
// Commit: b5d154b hamming: move inputs (strand1, strand2) to input object
|
5
|
+
// Problem Specifications Version: 2.1.0
|
6
6
|
|
7
7
|
var testCases = []struct {
|
8
8
|
s1 string
|
@@ -22,9 +22,11 @@ func main() {
|
|
22
22
|
type js struct {
|
23
23
|
Cases []struct {
|
24
24
|
Description string
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
Input struct {
|
26
|
+
Digits string
|
27
|
+
Span int
|
28
|
+
}
|
29
|
+
Expected int64
|
28
30
|
}
|
29
31
|
}
|
30
32
|
|
@@ -39,6 +41,6 @@ var tests = []struct {
|
|
39
41
|
product int64
|
40
42
|
ok bool
|
41
43
|
}{
|
42
|
-
{{range .J.Cases}}{ "{{.Digits}}", {{.Span}}, {{.Expected}}, {{ge .Expected 0}}},
|
44
|
+
{{range .J.Cases}}{ "{{.Input.Digits}}", {{.Input.Span}}, {{.Expected}}, {{ge .Expected 0}}},
|
43
45
|
{{end}}}
|
44
46
|
`
|
@@ -1,8 +1,8 @@
|
|
1
1
|
package lsproduct
|
2
2
|
|
3
3
|
// Source: exercism/problem-specifications
|
4
|
-
// Commit:
|
5
|
-
// Problem Specifications Version: 1.
|
4
|
+
// Commit: 92b86a8 largest-series-product: Apply new "input" policy
|
5
|
+
// Problem Specifications Version: 1.1.0
|
6
6
|
|
7
7
|
var tests = []struct {
|
8
8
|
digits string
|
@@ -22,8 +22,10 @@ func main() {
|
|
22
22
|
type js struct {
|
23
23
|
Cases []struct {
|
24
24
|
Description string
|
25
|
-
Input
|
26
|
-
|
25
|
+
Input struct {
|
26
|
+
Year int
|
27
|
+
}
|
28
|
+
Expected bool
|
27
29
|
}
|
28
30
|
}
|
29
31
|
|
@@ -37,6 +39,6 @@ var testCases = []struct {
|
|
37
39
|
expected bool
|
38
40
|
description string
|
39
41
|
}{
|
40
|
-
{{range .J.Cases}}{ {{.Input}}, {{.Expected}}, {{printf "%q" .Description}}},
|
42
|
+
{{range .J.Cases}}{ {{.Input.Year}}, {{.Expected}}, {{printf "%q" .Description}}},
|
41
43
|
{{end}}}
|
42
44
|
`
|