trackler 2.2.1.96 → 2.2.1.97
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
`
|