trackler 2.1.0.26 → 2.1.0.27

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.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/common/CONTRIBUTING.md +0 -15
  3. data/common/exercises/secret-handshake/canonical-data.json +14 -7
  4. data/lib/trackler/version.rb +1 -1
  5. data/tracks/dlang/config.json +18 -0
  6. data/tracks/dlang/exercises/leap/leap.d +8 -0
  7. data/tracks/dlang/exercises/leap/leap_example.d +15 -0
  8. data/tracks/dlang/exercises/react/react.d +211 -0
  9. data/tracks/dlang/exercises/react/react_example.d +291 -0
  10. data/tracks/factor/README.md +7 -7
  11. data/tracks/factor/config.json +13 -4
  12. data/tracks/factor/exercises/hello-world/hello-world-example.factor +2 -3
  13. data/tracks/factor/exercises/hello-world/hello-world-tests.factor +1 -5
  14. data/tracks/factor/exercises/hello-world/hello-world.factor +1 -1
  15. data/tracks/factor/exercises/two-fer/two-fer-example.factor +6 -0
  16. data/tracks/factor/exercises/two-fer/two-fer-tests.factor +8 -0
  17. data/tracks/fortran/Makefile +1 -2
  18. data/tracks/fortran/config.json +6 -0
  19. data/tracks/fortran/exercises/bob/bob.fun +18 -18
  20. data/tracks/fortran/exercises/hamming/example.f90 +25 -0
  21. data/tracks/fortran/exercises/hamming/hamming.fun +75 -0
  22. data/tracks/go/exercises/poker/.meta/gen.go +76 -0
  23. data/tracks/go/exercises/poker/cases_test.go +240 -0
  24. data/tracks/go/exercises/poker/example.go +10 -1
  25. data/tracks/go/exercises/poker/poker_test.go +1 -224
  26. data/tracks/go/exercises/sum-of-multiples/.meta/gen.go +43 -0
  27. data/tracks/go/exercises/sum-of-multiples/cases_test.go +24 -0
  28. data/tracks/go/exercises/sum-of-multiples/example.go +1 -1
  29. data/tracks/go/exercises/sum-of-multiples/sum_of_multiples_test.go +1 -18
  30. data/tracks/groovy/exercises/robot-name/RobotSpec.groovy +38 -0
  31. data/tracks/kotlin/config.json +10 -0
  32. data/tracks/kotlin/exercises/collatz-conjecture/build.gradle +28 -0
  33. data/tracks/kotlin/exercises/collatz-conjecture/src/example/kotlin/CollatzCalculator.kt +12 -0
  34. data/tracks/kotlin/exercises/collatz-conjecture/src/main/kotlin/.keep +0 -0
  35. data/tracks/kotlin/exercises/collatz-conjecture/src/test/kotlin/CollatzCalculatorTest.kt +51 -0
  36. data/tracks/kotlin/exercises/diamond/build.gradle +28 -0
  37. data/tracks/kotlin/exercises/diamond/src/example/kotlin/DiamondPrinter.kt +35 -0
  38. data/tracks/kotlin/exercises/diamond/src/main/kotlin/DiamondPrinter.kt +5 -0
  39. data/tracks/kotlin/exercises/diamond/src/test/kotlin/DiamondPrinterTest.kt +121 -0
  40. data/tracks/kotlin/exercises/settings.gradle +2 -0
  41. data/tracks/ocaml/.gitignore +1 -0
  42. data/tracks/ocaml/.vscode/launch.json +14 -0
  43. data/tracks/ocaml/tools/test-generator/src/controller.ml +15 -16
  44. data/tracks/ocaml/tools/test-generator/src/languages.ml +30 -0
  45. data/tracks/ocaml/tools/test-generator/src/ocaml_special_cases.ml +137 -0
  46. data/tracks/ocaml/tools/test-generator/src/purescript_special_cases.ml +13 -0
  47. data/tracks/ocaml/tools/test-generator/src/special_cases.ml +7 -132
  48. data/tracks/ocaml/tools/test-generator/src/template.ml +3 -3
  49. data/tracks/ocaml/tools/test-generator/src/test_gen.ml +13 -3
  50. data/tracks/ocaml/tools/test-generator/templates/{acronym → ocaml/acronym}/template.ml +0 -0
  51. data/tracks/ocaml/tools/test-generator/templates/{all-your-base → ocaml/all-your-base}/template.ml +0 -0
  52. data/tracks/ocaml/tools/test-generator/templates/{anagram → ocaml/anagram}/template.ml +0 -0
  53. data/tracks/ocaml/tools/test-generator/templates/{atbash-cipher → ocaml/atbash-cipher}/template.ml +0 -0
  54. data/tracks/ocaml/tools/test-generator/templates/{beer-song → ocaml/beer-song}/template.ml +0 -0
  55. data/tracks/ocaml/tools/test-generator/templates/{binary-search → ocaml/binary-search}/template.ml +0 -0
  56. data/tracks/ocaml/tools/test-generator/templates/{bob → ocaml/bob}/template.ml +0 -0
  57. data/tracks/ocaml/tools/test-generator/templates/{bowling → ocaml/bowling}/template.ml +0 -0
  58. data/tracks/ocaml/tools/test-generator/templates/{bracket-push → ocaml/bracket-push}/template.ml +0 -0
  59. data/tracks/ocaml/tools/test-generator/templates/{change → ocaml/change}/template.ml +0 -0
  60. data/tracks/ocaml/tools/test-generator/templates/{connect → ocaml/connect}/template.ml +0 -0
  61. data/tracks/ocaml/tools/test-generator/templates/{difference-of-squares → ocaml/difference-of-squares}/template.ml +0 -0
  62. data/tracks/ocaml/tools/test-generator/templates/{dominoes → ocaml/dominoes}/template.ml +0 -0
  63. data/tracks/ocaml/tools/test-generator/templates/{etl → ocaml/etl}/template.ml +0 -0
  64. data/tracks/ocaml/tools/test-generator/templates/{forth → ocaml/forth}/template.ml +0 -0
  65. data/tracks/ocaml/tools/test-generator/templates/{hamming → ocaml/hamming}/template.ml +0 -0
  66. data/tracks/ocaml/tools/test-generator/templates/{hello-world → ocaml/hello-world}/template.ml +0 -0
  67. data/tracks/ocaml/tools/test-generator/templates/{leap → ocaml/leap}/template.ml +0 -0
  68. data/tracks/ocaml/tools/test-generator/templates/{luhn → ocaml/luhn}/template.ml +0 -0
  69. data/tracks/ocaml/tools/test-generator/templates/{minesweeper → ocaml/minesweeper}/template.ml +0 -0
  70. data/tracks/ocaml/tools/test-generator/templates/{pangram → ocaml/pangram}/template.ml +0 -0
  71. data/tracks/ocaml/tools/test-generator/templates/{phone-number → ocaml/phone-number}/template.ml +0 -0
  72. data/tracks/ocaml/tools/test-generator/templates/{prime-factors → ocaml/prime-factors}/template.ml +0 -0
  73. data/tracks/ocaml/tools/test-generator/templates/{raindrops → ocaml/raindrops}/template.ml +0 -0
  74. data/tracks/ocaml/tools/test-generator/templates/{roman-numerals → ocaml/roman-numerals}/template.ml +0 -0
  75. data/tracks/ocaml/tools/test-generator/templates/{run-length-encoding → ocaml/run-length-encoding}/template.ml +0 -0
  76. data/tracks/ocaml/tools/test-generator/templates/{say → ocaml/say}/template.ml +0 -0
  77. data/tracks/ocaml/tools/test-generator/templates/{space-age → ocaml/space-age}/template.ml +0 -0
  78. data/tracks/ocaml/tools/test-generator/templates/{triangle → ocaml/triangle}/template.ml +0 -0
  79. data/tracks/ocaml/tools/test-generator/templates/{word-count → ocaml/word-count}/template.ml +0 -0
  80. data/tracks/ocaml/tools/test-generator/templates/purescript/hamming/Main.purs +18 -0
  81. data/tracks/ocaml/tools/test-generator/test/all_tests.ml +2 -2
  82. data/tracks/ocaml/tools/test-generator/test/{special_cases_test.ml → ocaml_special_cases_test.ml} +3 -3
  83. data/tracks/ocaml/tools/test-generator/test/template_test.ml +1 -0
  84. metadata +59 -34
  85. data/tracks/groovy/exercises/robot-name/RobotTest.groovy +0 -34
@@ -7,7 +7,7 @@ import (
7
7
  "unicode/utf8"
8
8
  )
9
9
 
10
- const testVersion = 4
10
+ const testVersion = 5
11
11
 
12
12
  const (
13
13
  Jack = 11
@@ -168,6 +168,15 @@ func evalHand(counts []rankCount, cards []card) handValue {
168
168
  discrs = append(discrs, card.rank)
169
169
  }
170
170
  sort.Sort(sort.Reverse(sort.IntSlice(discrs)))
171
+ } else if (kind == straight || kind == straightFlush) &&
172
+ counts[0].rank == Ace && counts[1].rank == 5 {
173
+ // For a straight with an Ace through 5,
174
+ // adjust down the discrs value of the Ace to be 1.
175
+ for i := 1; i < len(cards); i++ {
176
+ discrs = append(discrs, counts[i].rank)
177
+ }
178
+ // Ace becomes a 1 in a low straight with Ace.
179
+ discrs = append(discrs, 1)
171
180
  } else {
172
181
  for _, rc := range counts {
173
182
  discrs = append(discrs, rc.rank)
@@ -10,230 +10,7 @@ import (
10
10
  // Also define a testVersion with a value that matches
11
11
  // the targetTestVersion here.
12
12
 
13
- const targetTestVersion = 4
14
-
15
- var validTestCases = []struct {
16
- name string
17
- hands []string
18
- best []string
19
- }{
20
- {
21
- name: "single hand is always best",
22
- hands: []string{"3♡ 10♢ 7♧ 8♤ A♢"},
23
- best: []string{"3♡ 10♢ 7♧ 8♤ A♢"},
24
- },
25
- {
26
- name: "highest card",
27
- hands: []string{"3♢ 2♢ 5♤ 6♤ 9♡", "3♡ 2♡ 5♧ 6♢ 10♡"},
28
- best: []string{"3♡ 2♡ 5♧ 6♢ 10♡"},
29
- },
30
- {
31
- name: "highest card with mostly same cards",
32
- hands: []string{"4♢ 2♢ 5♤ 6♤ 9♡", "4♡ 3♤ 5♧ 6♢ 9♢"},
33
- best: []string{"4♡ 3♤ 5♧ 6♢ 9♢"},
34
- },
35
- {
36
- name: "pair beats lower",
37
- hands: []string{"4♢ 3♤ 4♤ J♤ K♤", "A♡ K♡ J♢ 10♧ 9♡"},
38
- best: []string{"4♢ 3♤ 4♤ J♤ K♤"},
39
- },
40
- {
41
- name: "best pair",
42
- hands: []string{"4♡ 2♡ 5♧ 4♢ 10♡", "3♢ 3♡ 5♤ 6♤ 9♡"},
43
- best: []string{"4♡ 2♡ 5♧ 4♢ 10♡"},
44
- },
45
- {
46
- name: "best pair with same pair and highest cards",
47
- hands: []string{"4♡ 2♡ 5♧ 4♢ 10♡", "4♤ 4♧ 5♡ 10♢ 3♡"},
48
- best: []string{"4♤ 4♧ 5♡ 10♢ 3♡"},
49
- },
50
- {
51
- name: "two pair beats lower",
52
- hands: []string{
53
- "4♢ 3♤ 4♤ J♤ K♤",
54
- "A♡ K♡ J♢ 10♧ 9♡",
55
- "2♢ 8♡ 5♢ 2♡ 8♧",
56
- },
57
- best: []string{"2♢ 8♡ 5♢ 2♡ 8♧"},
58
- },
59
- {
60
- name: "best two pair",
61
- hands: []string{
62
- "4♢ J♧ 4♤ J♤ K♤",
63
- "A♡ K♡ J♢ 10♧ 9♡",
64
- "2♢ 8♡ 5♢ 2♡ 8♧",
65
- },
66
- best: []string{"4♢ J♧ 4♤ J♤ K♤"},
67
- },
68
- {
69
- name: "best two pair with equal highest pair",
70
- hands: []string{
71
- "4♢ J♧ 4♤ J♤ K♤",
72
- "A♡ K♡ J♢ 10♧ 9♡",
73
- "3♢ J♡ 5♢ 3♡ J♢",
74
- },
75
- best: []string{"4♢ J♧ 4♤ J♤ K♤"},
76
- },
77
- {
78
- name: "best two pair with equal pairs",
79
- hands: []string{
80
- "4♢ J♧ 4♤ J♤ 2♤",
81
- "A♡ K♡ J♢ 10♧ 9♡",
82
- "4♧ J♡ 5♢ 4♡ J♢",
83
- },
84
- best: []string{"4♧ J♡ 5♢ 4♡ J♢"},
85
- },
86
- {
87
- name: "three of a kind beats lower",
88
- hands: []string{
89
- "4♢ 3♤ 4♤ J♤ K♤",
90
- "A♡ K♡ J♢ 10♧ 9♡",
91
- "3♢ 8♡ 3♡ 3♧ 9♧",
92
- "2♢ 8♡ 5♢ 2♡ 8♧",
93
- },
94
- best: []string{"3♢ 8♡ 3♡ 3♧ 9♧"},
95
- },
96
- {
97
- name: "best three of a kind",
98
- hands: []string{
99
- "4♢ 3♤ 4♤ J♤ 4♡",
100
- "A♡ K♡ J♢ 10♧ 9♡",
101
- "3♢ 8♡ 3♡ 3♧ 9♧",
102
- "2♢ 8♡ 5♢ 2♡ 8♧",
103
- },
104
- best: []string{"4♢ 3♤ 4♤ J♤ 4♡"},
105
- },
106
- {
107
- name: "straight beats lower",
108
- hands: []string{
109
- "4♢ 3♤ 4♤ J♤ K♤",
110
- "Q♡ K♡ J♢ 10♧ 9♡",
111
- "3♢ 8♡ 3♡ 3♧ 9♧",
112
- "2♢ 8♡ 5♢ 2♡ 8♧",
113
- },
114
- best: []string{"Q♡ K♡ J♢ 10♧ 9♡"},
115
- },
116
- {
117
- name: "straight includes ace as one",
118
- hands: []string{
119
- "4♢ 3♤ 4♤ J♤ K♤",
120
- "2♤ 3♡ A♤ 5♤ 4♤",
121
- "3♢ 8♡ 3♡ 3♧ 9♧",
122
- "2♢ 8♡ 5♢ 2♡ 8♧",
123
- },
124
- best: []string{"2♤ 3♡ A♤ 5♤ 4♤"},
125
- },
126
- {
127
- name: "best straight",
128
- hands: []string{
129
- "4♢ 3♤ 4♤ J♤ K♤",
130
- "Q♡ K♡ J♢ 10♧ 9♡",
131
- "A♢ K♧ 10♢ J♢ Q♢",
132
- "2♢ 8♡ 5♢ 2♡ 8♧",
133
- },
134
- best: []string{"A♢ K♧ 10♢ J♢ Q♢"},
135
- },
136
- {
137
- name: "flush beats lower",
138
- hands: []string{
139
- "4♤ 3♤ 8♤ J♤ K♤",
140
- "Q♡ K♡ J♢ 10♧ 9♡",
141
- "3♢ 8♡ 3♡ 3♧ 9♧",
142
- "2♢ 8♡ 5♢ 2♡ 8♧",
143
- },
144
- best: []string{"4♤ 3♤ 8♤ J♤ K♤"},
145
- },
146
- {
147
- name: "best flush",
148
- hands: []string{
149
- "4♤ 3♤ 8♤ J♤ K♤",
150
- "Q♡ K♡ J♢ 10♧ 9♡",
151
- "3♢ 8♢ A♢ 4♢ 7♢",
152
- "2♢ 8♡ 5♢ 2♡ 8♧",
153
- },
154
- best: []string{"3♢ 8♢ A♢ 4♢ 7♢"},
155
- },
156
- {
157
- name: "full house beats lower",
158
- hands: []string{
159
- "4♤ 3♤ 8♤ J♤ K♤",
160
- "2♢ 8♡ 8♢ 2♡ 8♧",
161
- "Q♡ K♡ J♢ 10♧ 9♡",
162
- "3♢ A♡ 3♡ 3♧ A♧",
163
- },
164
- best: []string{"2♢ 8♡ 8♢ 2♡ 8♧"},
165
- },
166
- {
167
- name: "best full house",
168
- hands: []string{
169
- "4♤ 3♤ 8♤ J♤ K♤",
170
- "2♢ 8♡ 8♢ 2♡ 8♧",
171
- "5♡ 5♢ A♧ 5♧ A♢",
172
- "3♢ A♡ 3♡ 3♧ A♧",
173
- },
174
- best: []string{"2♢ 8♡ 8♢ 2♡ 8♧"},
175
- },
176
- {
177
- name: "four of a kind beats lower",
178
- hands: []string{
179
- "4♤ 5♤ 8♤ J♤ K♤",
180
- "2♢ 8♡ 8♢ 2♡ 8♧",
181
- "Q♡ K♡ J♢ 10♧ 9♡",
182
- "3♢ 3♡ 3♤ 3♧ A♧",
183
- },
184
- best: []string{"3♢ 3♡ 3♤ 3♧ A♧"},
185
- },
186
- {
187
- name: "best four of a kind",
188
- hands: []string{
189
- "4♤ 5♤ 8♤ J♤ K♤",
190
- "2♢ 2♧ 8♢ 2♡ 2♤",
191
- "Q♡ K♡ J♢ 10♧ 9♡",
192
- "3♢ 3♡ 3♤ 3♧ A♧",
193
- },
194
- best: []string{"3♢ 3♡ 3♤ 3♧ A♧"},
195
- },
196
- {
197
- name: "straight flush beats lower",
198
- hands: []string{
199
- "4♤ 5♢ 8♤ J♤ K♤",
200
- "2♢ 8♡ 8♢ 2♡ 8♧",
201
- "Q♡ K♡ 8♡ 10♡ 9♡",
202
- "3♢ 3♡ 3♤ 3♧ A♧",
203
- "2♤ 3♤ A♤ 5♤ 4♤",
204
- },
205
- best: []string{"2♤ 3♤ A♤ 5♤ 4♤"},
206
- },
207
- {
208
- name: "best straight flush is royal flush",
209
- hands: []string{
210
- "4♤ 5♤ 8♤ J♤ K♤",
211
- "2♢ 8♡ 8♢ 2♡ 8♧",
212
- "Q♡ K♡ J♡ 10♡ 9♡",
213
- "Q♢ K♢ J♢ 10♢ A♢",
214
- },
215
- best: []string{"Q♢ K♢ J♢ 10♢ A♢"},
216
- },
217
- {
218
- name: "tie for best pair",
219
- hands: []string{"4♡ 2♡ 5♧ 4♢ 10♡", "4♧ 10♢ 5♤ 2♤ 4♤"},
220
- best: []string{"4♡ 2♡ 5♧ 4♢ 10♡", "4♧ 10♢ 5♤ 2♤ 4♤"},
221
- },
222
- {
223
- name: "tie of three",
224
- hands: []string{
225
- "A♡ 2♡ 3♡ 4♡ 5♡",
226
- "A♤ 2♤ 3♤ 4♤ 5♤",
227
- "5♧ 4♧ 3♧ 2♧ A♧",
228
- "A♢ 2♢ 6♢ 4♢ 5♢",
229
- },
230
- best: []string{
231
- "A♡ 2♡ 3♡ 4♡ 5♡",
232
- "A♤ 2♤ 3♤ 4♤ 5♤",
233
- "5♧ 4♧ 3♧ 2♧ A♧",
234
- },
235
- },
236
- }
13
+ const targetTestVersion = 5
237
14
 
238
15
  var invalidTestCases = []struct {
239
16
  name string
@@ -0,0 +1,43 @@
1
+ package main
2
+
3
+ import (
4
+ "log"
5
+ "text/template"
6
+
7
+ "../../../gen"
8
+ )
9
+
10
+ func main() {
11
+ t, err := template.New("").Parse(tmpl)
12
+ if err != nil {
13
+ log.Fatal(err)
14
+ }
15
+ var j js
16
+ if err := gen.Gen("sum-of-multiples", &j, t); err != nil {
17
+ log.Fatal(err)
18
+ }
19
+ }
20
+
21
+ // The JSON structure we expect to be able to unmarshal into
22
+ type js struct {
23
+ Cases []struct {
24
+ Description string
25
+ Factors []int
26
+ Limit int
27
+ Expected int
28
+ }
29
+ }
30
+
31
+ // template applied to above data structure generates the Go test cases
32
+ var tmpl = `package summultiples
33
+
34
+ {{.Header}}
35
+
36
+ var varTests = []struct {
37
+ divisors []int
38
+ limit int
39
+ sum int
40
+ }{
41
+ {{range .J.Cases}}{ {{.Factors | printf "%#v"}}, {{.Limit}}, {{.Expected}}}, // {{.Description}}
42
+ {{end}}}
43
+ `
@@ -0,0 +1,24 @@
1
+ package summultiples
2
+
3
+ // Source: exercism/x-common
4
+ // Commit: 72b1496 sum-of-multiples: Fix canonical-data.json formatting
5
+ // x-common version: 1.0.0
6
+
7
+ var varTests = []struct {
8
+ divisors []int
9
+ limit int
10
+ sum int
11
+ }{
12
+ {[]int{3, 5}, 1, 0}, // multiples of 3 or 5 up to 1
13
+ {[]int{3, 5}, 4, 3}, // multiples of 3 or 5 up to 4
14
+ {[]int{3, 5}, 10, 23}, // multiples of 3 or 5 up to 10
15
+ {[]int{3, 5}, 100, 2318}, // multiples of 3 or 5 up to 100
16
+ {[]int{3, 5}, 1000, 233168}, // multiples of 3 or 5 up to 1000
17
+ {[]int{7, 13, 17}, 20, 51}, // multiples of 7, 13 or 17 up to 20
18
+ {[]int{4, 6}, 15, 30}, // multiples of 4 or 6 up to 15
19
+ {[]int{5, 6, 8}, 150, 4419}, // multiples of 5, 6 or 8 up to 150
20
+ {[]int{5, 25}, 51, 275}, // multiples of 5 or 25 up to 51
21
+ {[]int{43, 47}, 10000, 2203160}, // multiples of 43 or 47 up to 10000
22
+ {[]int{1}, 100, 4950}, // multiples of 1 up to 100
23
+ {[]int{}, 10000, 0}, // multiples of an empty list up to 10000
24
+ }
@@ -1,6 +1,6 @@
1
1
  package summultiples
2
2
 
3
- const testVersion = 1
3
+ const testVersion = 2
4
4
 
5
5
  // SumMultiples returns the sum of the multiples of the given divisors
6
6
  // up to, but not including, the given limit.
@@ -2,24 +2,7 @@ package summultiples
2
2
 
3
3
  import "testing"
4
4
 
5
- const targetTestVersion = 1
6
-
7
- var varTests = []struct {
8
- divisors []int
9
- limit int
10
- sum int
11
- }{
12
- {[]int{3, 5}, 1, 0},
13
- {[]int{3, 5}, 4, 3},
14
- {[]int{3, 5}, 10, 23},
15
- {[]int{3, 5}, 100, 2318},
16
- {[]int{3, 5}, 1000, 233168},
17
- {[]int{7, 13, 17}, 20, 51},
18
- {[]int{43, 47}, 10000, 2203160},
19
- {[]int{5, 10, 12}, 10000, 13331672},
20
- {[]int{1, 1}, 10000, 49995000},
21
- {[]int{}, 10000, 0},
22
- }
5
+ const targetTestVersion = 2
23
6
 
24
7
  func TestTestVersion(t *testing.T) {
25
8
  if testVersion != targetTestVersion {
@@ -0,0 +1,38 @@
1
+ @Grab('org.spockframework:spock-core:1.0-groovy-2.4')
2
+ import spock.lang.*
3
+
4
+ class RobotSpec extends Specification {
5
+
6
+ def 'generates a name'() {
7
+ expect: new Robot().name =~ /^[a-zA-Z]{2}\d{3}$/
8
+ }
9
+
10
+ @Ignore
11
+ def 'generates the same name when called again'() {
12
+ given:
13
+ def robot = new Robot()
14
+ expect:
15
+ robot.name == robot.name
16
+ }
17
+
18
+ @Ignore
19
+ def 'different robots generate different names'() {
20
+ given:
21
+ def robot = new Robot()
22
+ def other_robot = new Robot()
23
+ expect:
24
+ robot.name != other_robot.name
25
+ }
26
+
27
+ @Ignore
28
+ def 'can be reset to generate another name'() {
29
+ given:
30
+ def robot = new Robot()
31
+ def name_before_reset = robot.name
32
+ robot.reset()
33
+ def name_after_reset = robot.name
34
+ expect:
35
+ name_before_reset != name_after_reset
36
+ }
37
+
38
+ }
@@ -252,6 +252,16 @@
252
252
  "slug": "all-your-base",
253
253
  "topics": []
254
254
  },
255
+ {
256
+ "difficulty": 1,
257
+ "slug": "collatz-conjecture",
258
+ "topics": []
259
+ },
260
+ {
261
+ "difficulty": 1,
262
+ "slug": "diamond",
263
+ "topics": []
264
+ },
255
265
  {
256
266
  "difficulty": 2,
257
267
  "slug": "bank-account",
@@ -0,0 +1,28 @@
1
+ buildscript {
2
+ ext.kotlin_version = '1.1.1'
3
+ repositories {
4
+ mavenCentral()
5
+ }
6
+ dependencies {
7
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
8
+ }
9
+ }
10
+
11
+ apply plugin: 'kotlin'
12
+
13
+ repositories {
14
+ mavenCentral()
15
+ }
16
+
17
+ dependencies {
18
+ compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
19
+
20
+ testCompile 'junit:junit:4.12'
21
+ testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
22
+ }
23
+ test {
24
+ testLogging {
25
+ exceptionFormat = 'full'
26
+ events = ["passed", "failed", "skipped"]
27
+ }
28
+ }