trackler 2.2.1.127 → 2.2.1.128

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 (37) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/c/docs/RESOURCES.md +0 -1
  4. data/tracks/delphi/exercises/isbn-verifier/uTestISBNVerifier.pas +2 -2
  5. data/tracks/ecmascript/config.json +2 -2
  6. data/tracks/elm/config/maintainers.json +11 -11
  7. data/tracks/elm/config.json +170 -245
  8. data/tracks/fsharp/exercises/pov/PovTest.fs +1 -1
  9. data/tracks/java/exercises/queen-attack/.meta/src/reference/java/Queen.java +38 -0
  10. data/tracks/java/exercises/queen-attack/.meta/src/reference/java/QueenAttackCalculator.java +11 -12
  11. data/tracks/java/exercises/queen-attack/.meta/version +1 -1
  12. data/tracks/java/exercises/queen-attack/src/test/java/QueenAttackCalculatorTest.java +50 -44
  13. data/tracks/python/config.json +26 -0
  14. data/tracks/python/exercises/bank-account/README.md +53 -0
  15. data/tracks/python/exercises/bank-account/bank_account.py +18 -0
  16. data/tracks/python/exercises/bank-account/bank_account_test.py +120 -0
  17. data/tracks/python/exercises/bank-account/example.py +35 -0
  18. data/tracks/python/exercises/go-counting/example.py +6 -6
  19. data/tracks/python/exercises/go-counting/go_counting.py +3 -2
  20. data/tracks/python/exercises/go-counting/go_counting_test.py +58 -51
  21. data/tracks/python/exercises/house/example.py +7 -13
  22. data/tracks/python/exercises/house/house_test.py +79 -204
  23. data/tracks/python/exercises/meetup/example.py +10 -1
  24. data/tracks/python/exercises/meetup/meetup_test.py +1 -6
  25. data/tracks/python/exercises/pascals-triangle/example.py +12 -14
  26. data/tracks/python/exercises/pascals-triangle/pascals_triangle.py +1 -9
  27. data/tracks/python/exercises/pascals-triangle/pascals_triangle_test.py +43 -29
  28. data/tracks/python/exercises/sgf-parsing/README.md +110 -0
  29. data/tracks/python/exercises/sgf-parsing/example.py +100 -0
  30. data/tracks/python/exercises/sgf-parsing/sgf_parsing.py +26 -0
  31. data/tracks/python/exercises/sgf-parsing/sgf_parsing_test.py +94 -0
  32. data/tracks/typescript/config.json +1 -1
  33. data/tracks/typescript/exercises/pangram/pangram.example.ts +2 -2
  34. data/tracks/typescript/exercises/pangram/pangram.test.ts +0 -2
  35. data/tracks/typescript/exercises/pangram/pangram.ts +0 -11
  36. metadata +11 -3
  37. data/tracks/java/exercises/queen-attack/.meta/src/reference/java/BoardCoordinate.java +0 -39
@@ -1,419 +1,344 @@
1
1
  {
2
- "language": "Elm",
3
2
  "active": true,
4
3
  "exercises": [
5
4
  {
6
- "uuid": "2c3902df-93e1-48d1-829d-4daa93a1f06f",
7
- "slug": "hello-world",
8
5
  "core": false,
9
- "unlocked_by": null,
10
6
  "difficulty": 1,
11
- "topics": [
12
-
13
- ]
7
+ "slug": "hello-world",
8
+ "topics": null,
9
+ "unlocked_by": null,
10
+ "uuid": "2c3902df-93e1-48d1-829d-4daa93a1f06f"
14
11
  },
15
12
  {
16
- "uuid": "11ce2a73-3f43-4b14-b755-6c52dc71bdda",
17
- "slug": "bob",
18
13
  "core": false,
19
- "unlocked_by": null,
20
14
  "difficulty": 1,
21
- "topics": [
22
-
23
- ]
15
+ "slug": "bob",
16
+ "topics": null,
17
+ "unlocked_by": null,
18
+ "uuid": "11ce2a73-3f43-4b14-b755-6c52dc71bdda"
24
19
  },
25
20
  {
26
- "uuid": "50770287-c734-46ba-b3a1-c36d31b6cc3c",
27
- "slug": "twelve-days",
28
21
  "core": false,
29
- "unlocked_by": null,
30
22
  "difficulty": 1,
31
- "topics": [
32
- ]
23
+ "slug": "twelve-days",
24
+ "topics": null,
25
+ "unlocked_by": null,
26
+ "uuid": "50770287-c734-46ba-b3a1-c36d31b6cc3c"
33
27
  },
34
28
  {
35
- "uuid": "e943e3bf-920e-4541-95c3-be7bf6024afe",
36
- "slug": "leap",
37
29
  "core": false,
38
- "unlocked_by": null,
39
30
  "difficulty": 1,
40
- "topics": [
41
-
42
- ]
31
+ "slug": "leap",
32
+ "topics": null,
33
+ "unlocked_by": null,
34
+ "uuid": "e943e3bf-920e-4541-95c3-be7bf6024afe"
43
35
  },
44
36
  {
45
- "uuid": "e3e73171-c3d1-49f7-9511-d1f4a08e7a69",
46
- "slug": "raindrops",
47
37
  "core": false,
48
- "unlocked_by": null,
49
38
  "difficulty": 1,
50
- "topics": [
51
-
52
- ]
39
+ "slug": "raindrops",
40
+ "topics": null,
41
+ "unlocked_by": null,
42
+ "uuid": "e3e73171-c3d1-49f7-9511-d1f4a08e7a69"
53
43
  },
54
44
  {
55
- "uuid": "a70503ba-f1f3-4583-9226-c3ada98e9500",
56
- "slug": "pangram",
57
45
  "core": false,
58
- "unlocked_by": null,
59
46
  "difficulty": 1,
60
- "topics": [
61
-
62
- ]
47
+ "slug": "pangram",
48
+ "topics": null,
49
+ "unlocked_by": null,
50
+ "uuid": "a70503ba-f1f3-4583-9226-c3ada98e9500"
63
51
  },
64
52
  {
65
- "uuid": "0b4561f3-59a7-4463-a733-c7fa8f9f332a",
66
- "slug": "accumulate",
67
53
  "core": false,
68
- "unlocked_by": null,
69
54
  "difficulty": 1,
70
- "topics": [
71
-
72
- ]
55
+ "slug": "accumulate",
56
+ "topics": null,
57
+ "unlocked_by": null,
58
+ "uuid": "0b4561f3-59a7-4463-a733-c7fa8f9f332a"
73
59
  },
74
60
  {
75
- "uuid": "767f6825-8736-4307-85c7-090a9a327fd9",
76
- "slug": "triangle",
77
61
  "core": false,
78
- "unlocked_by": null,
79
62
  "difficulty": 1,
80
- "topics": [
81
-
82
- ]
63
+ "slug": "triangle",
64
+ "topics": null,
65
+ "unlocked_by": null,
66
+ "uuid": "767f6825-8736-4307-85c7-090a9a327fd9"
83
67
  },
84
68
  {
85
- "uuid": "16ccc1fa-34b0-4a7e-b3cf-33a711e857ea",
86
- "slug": "scrabble-score",
87
69
  "core": false,
88
- "unlocked_by": null,
89
70
  "difficulty": 1,
90
- "topics": [
91
-
92
- ]
71
+ "slug": "scrabble-score",
72
+ "topics": null,
73
+ "unlocked_by": null,
74
+ "uuid": "16ccc1fa-34b0-4a7e-b3cf-33a711e857ea"
93
75
  },
94
76
  {
95
- "uuid": "5845a108-d8b2-41dd-b371-cf9eff7a2230",
96
- "slug": "anagram",
97
77
  "core": false,
98
- "unlocked_by": null,
99
78
  "difficulty": 1,
100
- "topics": [
101
-
102
- ]
79
+ "slug": "anagram",
80
+ "topics": null,
81
+ "unlocked_by": null,
82
+ "uuid": "5845a108-d8b2-41dd-b371-cf9eff7a2230"
103
83
  },
104
84
  {
105
- "uuid": "2ce5bcba-c708-4da0-ae11-4654b3e0d0a5",
106
- "slug": "space-age",
107
85
  "core": false,
108
- "unlocked_by": null,
109
86
  "difficulty": 1,
110
- "topics": [
111
-
112
- ]
87
+ "slug": "space-age",
88
+ "topics": null,
89
+ "unlocked_by": null,
90
+ "uuid": "2ce5bcba-c708-4da0-ae11-4654b3e0d0a5"
113
91
  },
114
92
  {
115
- "uuid": "992c5ed1-9127-42a4-b508-61c9487612c5",
116
- "slug": "strain",
117
93
  "core": false,
118
- "unlocked_by": null,
119
94
  "difficulty": 1,
120
- "topics": [
121
-
122
- ]
95
+ "slug": "strain",
96
+ "topics": null,
97
+ "unlocked_by": null,
98
+ "uuid": "992c5ed1-9127-42a4-b508-61c9487612c5"
123
99
  },
124
100
  {
125
- "uuid": "646c7164-cfa4-42c3-9af5-2f672e6ec81e",
126
- "slug": "difference-of-squares",
127
101
  "core": false,
128
- "unlocked_by": null,
129
102
  "difficulty": 1,
130
- "topics": [
131
-
132
- ]
103
+ "slug": "difference-of-squares",
104
+ "topics": null,
105
+ "unlocked_by": null,
106
+ "uuid": "646c7164-cfa4-42c3-9af5-2f672e6ec81e"
133
107
  },
134
108
  {
135
- "uuid": "9c9507a6-8187-4ce6-b0bc-b4765effb74c",
136
- "slug": "word-count",
137
109
  "core": false,
138
- "unlocked_by": null,
139
110
  "difficulty": 1,
140
- "topics": [
141
-
142
- ]
111
+ "slug": "word-count",
112
+ "topics": null,
113
+ "unlocked_by": null,
114
+ "uuid": "9c9507a6-8187-4ce6-b0bc-b4765effb74c"
143
115
  },
144
116
  {
145
- "uuid": "75859d00-8772-4471-97a7-d6fe432edc5e",
146
- "slug": "sum-of-multiples",
147
117
  "core": false,
148
- "unlocked_by": null,
149
118
  "difficulty": 1,
150
- "topics": [
151
-
152
- ]
119
+ "slug": "sum-of-multiples",
120
+ "topics": null,
121
+ "unlocked_by": null,
122
+ "uuid": "75859d00-8772-4471-97a7-d6fe432edc5e"
153
123
  },
154
124
  {
155
- "uuid": "472c2e13-6608-4862-b884-a7e458e0bcdd",
156
- "slug": "hamming",
157
125
  "core": false,
158
- "unlocked_by": null,
159
126
  "difficulty": 1,
160
- "topics": [
161
-
162
- ]
127
+ "slug": "hamming",
128
+ "topics": null,
129
+ "unlocked_by": null,
130
+ "uuid": "472c2e13-6608-4862-b884-a7e458e0bcdd"
163
131
  },
164
132
  {
165
- "uuid": "3af96d19-87d7-4d8b-aecb-f63122815501",
166
- "slug": "rna-transcription",
167
133
  "core": false,
168
- "unlocked_by": null,
169
134
  "difficulty": 1,
170
- "topics": [
171
-
172
- ]
135
+ "slug": "rna-transcription",
136
+ "topics": null,
137
+ "unlocked_by": null,
138
+ "uuid": "3af96d19-87d7-4d8b-aecb-f63122815501"
173
139
  },
174
140
  {
175
- "uuid": "0b2ac079-f7ed-4e90-a566-00c9fe0d5c88",
176
- "slug": "run-length-encoding",
177
141
  "core": false,
178
- "unlocked_by": null,
179
142
  "difficulty": 1,
180
- "topics": [
181
-
182
- ]
143
+ "slug": "run-length-encoding",
144
+ "topics": null,
145
+ "unlocked_by": null,
146
+ "uuid": "0b2ac079-f7ed-4e90-a566-00c9fe0d5c88"
183
147
  },
184
148
  {
185
- "uuid": "8e1cb827-2fa9-46a4-ac50-7f8b3ba66809",
186
- "slug": "sublist",
187
149
  "core": false,
188
- "unlocked_by": null,
189
150
  "difficulty": 1,
190
- "topics": [
191
-
192
- ]
151
+ "slug": "sublist",
152
+ "topics": null,
153
+ "unlocked_by": null,
154
+ "uuid": "8e1cb827-2fa9-46a4-ac50-7f8b3ba66809"
193
155
  },
194
156
  {
195
- "uuid": "c9e00708-3d18-4a0b-a3de-cae4d979a981",
196
- "slug": "nucleotide-count",
197
157
  "core": false,
198
- "unlocked_by": null,
199
158
  "difficulty": 1,
200
- "topics": [
201
-
202
- ]
159
+ "slug": "nucleotide-count",
160
+ "topics": null,
161
+ "unlocked_by": null,
162
+ "uuid": "c9e00708-3d18-4a0b-a3de-cae4d979a981"
203
163
  },
204
164
  {
205
- "uuid": "1e17ed2b-57b4-4cad-a684-ce7070d5023b",
206
- "slug": "series",
207
165
  "core": false,
208
- "unlocked_by": null,
209
166
  "difficulty": 1,
210
- "topics": [
211
-
212
- ]
167
+ "slug": "series",
168
+ "topics": null,
169
+ "unlocked_by": null,
170
+ "uuid": "1e17ed2b-57b4-4cad-a684-ce7070d5023b"
213
171
  },
214
172
  {
215
- "uuid": "1071ec57-5527-4eb1-b297-77355ed64547",
216
- "slug": "phone-number",
217
173
  "core": false,
218
- "unlocked_by": null,
219
174
  "difficulty": 1,
220
- "topics": [
221
-
222
- ]
175
+ "slug": "phone-number",
176
+ "topics": null,
177
+ "unlocked_by": null,
178
+ "uuid": "1071ec57-5527-4eb1-b297-77355ed64547"
223
179
  },
224
180
  {
225
- "uuid": "c7749c5a-529e-4e46-8bdb-e33519f6d176",
226
- "slug": "grade-school",
227
181
  "core": false,
228
- "unlocked_by": null,
229
182
  "difficulty": 1,
230
- "topics": [
231
-
232
- ]
183
+ "slug": "grade-school",
184
+ "topics": null,
185
+ "unlocked_by": null,
186
+ "uuid": "c7749c5a-529e-4e46-8bdb-e33519f6d176"
233
187
  },
234
188
  {
235
- "uuid": "29b5a28a-417a-4cee-ba6f-9dd942ceffaa",
236
- "slug": "allergies",
237
189
  "core": false,
238
- "unlocked_by": null,
239
190
  "difficulty": 1,
240
- "topics": [
241
-
242
- ]
191
+ "slug": "allergies",
192
+ "topics": null,
193
+ "unlocked_by": null,
194
+ "uuid": "29b5a28a-417a-4cee-ba6f-9dd942ceffaa"
243
195
  },
244
196
  {
245
- "uuid": "6b8f952e-94ea-4264-accf-cdb28b3b4529",
246
- "slug": "robot-simulator",
247
197
  "core": false,
248
- "unlocked_by": null,
249
198
  "difficulty": 1,
250
- "topics": [
251
-
252
- ]
199
+ "slug": "robot-simulator",
200
+ "topics": null,
201
+ "unlocked_by": null,
202
+ "uuid": "6b8f952e-94ea-4264-accf-cdb28b3b4529"
253
203
  },
254
204
  {
255
- "uuid": "114b5717-0d82-459e-90c4-f00d8b6beb5b",
256
- "slug": "list-ops",
257
205
  "core": false,
258
- "unlocked_by": null,
259
206
  "difficulty": 1,
260
- "topics": [
261
-
262
- ]
207
+ "slug": "list-ops",
208
+ "topics": null,
209
+ "unlocked_by": null,
210
+ "uuid": "114b5717-0d82-459e-90c4-f00d8b6beb5b"
263
211
  },
264
212
  {
265
- "uuid": "8322872b-e020-4a9e-9206-015c0fdacb62",
266
- "slug": "atbash-cipher",
267
213
  "core": false,
268
- "unlocked_by": null,
269
214
  "difficulty": 1,
270
- "topics": [
271
-
272
- ]
215
+ "slug": "atbash-cipher",
216
+ "topics": null,
217
+ "unlocked_by": null,
218
+ "uuid": "8322872b-e020-4a9e-9206-015c0fdacb62"
273
219
  },
274
220
  {
275
- "uuid": "ea41b90d-3ff5-43c0-94e5-6b436feb99e5",
276
- "slug": "say",
277
221
  "core": false,
278
- "unlocked_by": null,
279
222
  "difficulty": 1,
280
- "topics": [
281
-
282
- ]
223
+ "slug": "say",
224
+ "topics": null,
225
+ "unlocked_by": null,
226
+ "uuid": "ea41b90d-3ff5-43c0-94e5-6b436feb99e5"
283
227
  },
284
228
  {
285
- "uuid": "1902d726-5a62-475b-b7d3-7188a50e717f",
286
- "slug": "largest-series-product",
287
229
  "core": false,
288
- "unlocked_by": null,
289
230
  "difficulty": 1,
290
- "topics": [
291
-
292
- ]
231
+ "slug": "largest-series-product",
232
+ "topics": null,
233
+ "unlocked_by": null,
234
+ "uuid": "1902d726-5a62-475b-b7d3-7188a50e717f"
293
235
  },
294
236
  {
295
- "uuid": "c1461035-6abe-4f17-a818-7a3ac6642c18",
296
- "slug": "roman-numerals",
297
237
  "core": false,
298
- "unlocked_by": null,
299
238
  "difficulty": 1,
300
- "topics": [
301
-
302
- ]
239
+ "slug": "roman-numerals",
240
+ "topics": null,
241
+ "unlocked_by": null,
242
+ "uuid": "c1461035-6abe-4f17-a818-7a3ac6642c18"
303
243
  },
304
244
  {
305
- "uuid": "5ddfed31-b787-48f9-b3bf-4a8d157d1c3d",
306
- "slug": "gigasecond",
307
245
  "core": false,
308
- "unlocked_by": null,
309
246
  "difficulty": 1,
310
- "topics": [
311
-
312
- ]
247
+ "slug": "gigasecond",
248
+ "topics": null,
249
+ "unlocked_by": null,
250
+ "uuid": "5ddfed31-b787-48f9-b3bf-4a8d157d1c3d"
313
251
  },
314
252
  {
315
- "uuid": "41518694-4293-49f6-8af5-1cdad84acf78",
316
- "slug": "grains",
317
253
  "core": false,
318
- "unlocked_by": null,
319
254
  "difficulty": 1,
320
- "topics": [
321
-
322
- ]
255
+ "slug": "grains",
256
+ "topics": null,
257
+ "unlocked_by": null,
258
+ "uuid": "41518694-4293-49f6-8af5-1cdad84acf78"
323
259
  },
324
260
  {
325
- "uuid": "1f39d315-324c-4e2f-bf48-ce8432836596",
326
- "slug": "etl",
327
261
  "core": false,
328
- "unlocked_by": null,
329
262
  "difficulty": 1,
330
- "topics": [
331
-
332
- ]
263
+ "slug": "etl",
264
+ "topics": null,
265
+ "unlocked_by": null,
266
+ "uuid": "1f39d315-324c-4e2f-bf48-ce8432836596"
333
267
  },
334
268
  {
335
- "uuid": "0edd5fa2-f1db-4572-9810-55a2c6729753",
336
- "slug": "collatz-conjecture",
337
269
  "core": false,
338
- "unlocked_by": null,
339
270
  "difficulty": 1,
340
- "topics": [
341
-
342
- ]
271
+ "slug": "collatz-conjecture",
272
+ "topics": null,
273
+ "unlocked_by": null,
274
+ "uuid": "0edd5fa2-f1db-4572-9810-55a2c6729753"
343
275
  },
344
276
  {
345
- "uuid": "851ddd78-13a0-4d8f-adda-41abde670687",
346
- "slug": "acronym",
347
277
  "core": false,
348
- "unlocked_by": null,
349
278
  "difficulty": 1,
350
- "topics": [
351
-
352
- ]
279
+ "slug": "acronym",
280
+ "topics": null,
281
+ "unlocked_by": null,
282
+ "uuid": "851ddd78-13a0-4d8f-adda-41abde670687"
353
283
  },
354
284
  {
355
- "uuid": "bdb8364b-d8b2-4d58-a824-1035cddedb42",
356
- "slug": "all-your-base",
357
285
  "core": false,
358
- "unlocked_by": null,
359
286
  "difficulty": 2,
360
- "topics": [
361
-
362
- ]
287
+ "slug": "all-your-base",
288
+ "topics": null,
289
+ "unlocked_by": null,
290
+ "uuid": "bdb8364b-d8b2-4d58-a824-1035cddedb42"
363
291
  },
364
292
  {
365
- "uuid": "b7e456d7-e383-4e03-9126-c9b57c1287e1",
366
- "slug": "pascals-triangle",
367
293
  "core": false,
368
- "unlocked_by": null,
369
294
  "difficulty": 4,
295
+ "slug": "pascals-triangle",
370
296
  "topics": [
371
- "Lists",
372
- "Control-flow"
373
- ]
297
+ "control_flow",
298
+ "lists"
299
+ ],
300
+ "unlocked_by": null,
301
+ "uuid": "b7e456d7-e383-4e03-9126-c9b57c1287e1"
374
302
  },
375
303
  {
376
- "uuid": "5f540090-061e-2f80-40a8-d9782700ed2efdf8965",
377
- "slug": "isogram",
378
304
  "core": false,
379
- "unlocked_by": null,
380
305
  "difficulty": 3,
306
+ "slug": "isogram",
381
307
  "topics": [
382
- "Lists"
383
- ]
308
+ "lists"
309
+ ],
310
+ "unlocked_by": null,
311
+ "uuid": "5f540090-061e-2f80-40a8-d9782700ed2efdf8965"
384
312
  },
385
313
  {
386
- "uuid": "39464d44-1475-47c1-8f08-2aba9e6b2d85",
387
- "slug": "luhn",
388
314
  "core": false,
389
- "unlocked_by": null,
390
315
  "difficulty": 5,
391
- "topics": [
392
- ]
316
+ "slug": "luhn",
317
+ "topics": null,
318
+ "unlocked_by": null,
319
+ "uuid": "39464d44-1475-47c1-8f08-2aba9e6b2d85"
393
320
  },
394
321
  {
395
- "uuid": "66fef1df-aa12-40eb-b572-7ea9b6a920ed",
396
- "slug": "transpose",
397
322
  "core": false,
398
- "unlocked_by": null,
399
323
  "difficulty": 5,
400
- "topics": [
401
- ]
324
+ "slug": "transpose",
325
+ "topics": null,
326
+ "unlocked_by": null,
327
+ "uuid": "66fef1df-aa12-40eb-b572-7ea9b6a920ed"
402
328
  },
403
329
  {
404
- "uuid": "1F9FE5BC-8213-44FD-B7D1-5D4CC7F3A475",
405
- "slug": "binary-search",
406
330
  "core": false,
407
- "unlocked_by": null,
408
331
  "difficulty": 7,
332
+ "slug": "binary-search",
409
333
  "topics": [
410
334
  "algorithms",
411
335
  "arrays",
412
336
  "recursion"
413
- ]
337
+ ],
338
+ "unlocked_by": null,
339
+ "uuid": "1F9FE5BC-8213-44FD-B7D1-5D4CC7F3A475"
414
340
  }
415
341
  ],
416
- "foregone": [
417
-
418
- ]
419
- }
342
+ "foregone": [],
343
+ "language": "Elm"
344
+ }
@@ -7,7 +7,7 @@ open Xunit
7
7
 
8
8
  open Pov
9
9
 
10
- let rec graphToList graph =
10
+ let rec graphToList (graph: Graph<'a>) =
11
11
  let right =
12
12
  graph.children
13
13
  |> List.sortBy (fun x -> x.value)
@@ -0,0 +1,38 @@
1
+ final class Queen {
2
+
3
+ private final int row;
4
+
5
+ private final int column;
6
+
7
+ Queen(final int row, final int column) {
8
+ this.row = row;
9
+ this.column = column;
10
+
11
+ validatePosition();
12
+ }
13
+
14
+ int getRow() {
15
+ return row;
16
+ }
17
+
18
+ int getColumn() {
19
+ return column;
20
+ }
21
+
22
+ private void validatePosition() {
23
+ validatePositionComponent(row, "row");
24
+ validatePositionComponent(column, "column");
25
+ }
26
+
27
+ private void validatePositionComponent(final int value, final String componentName) {
28
+
29
+ if (value < 0) {
30
+ throw new IllegalArgumentException("Queen position must have positive " + componentName + ".");
31
+ }
32
+
33
+ if (value > 7) {
34
+ throw new IllegalArgumentException("Queen position must have " + componentName + " <= 7.");
35
+ }
36
+ }
37
+
38
+ }