trackler 2.2.1.127 → 2.2.1.128

Sign up to get free protection for your applications and to get access to all the features.
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
+ }