trackler 2.2.1.60 → 2.2.1.61

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/beer-song/canonical-data.json +366 -31
  4. data/problem-specifications/exercises/beer-song/description.md +1 -1
  5. data/problem-specifications/exercises/pascals-triangle/canonical-data.json +19 -1
  6. data/problem-specifications/exercises/proverb/canonical-data.json +91 -0
  7. data/problem-specifications/exercises/proverb/description.md +5 -3
  8. data/tracks/c/README.md +0 -10
  9. data/tracks/c/config/maintainers.json +45 -0
  10. data/tracks/c/config.json +1 -2
  11. data/tracks/c/docs/TESTS.md +43 -44
  12. data/tracks/d/docs/INSTALLATION.md +1 -1
  13. data/tracks/delphi/exercises/beer-song/README.md +1 -1
  14. data/tracks/delphi/exercises/beer-song/inputdata.txt +3 -1
  15. data/tracks/delphi/exercises/beer-song/uBeerSongExample.pas +14 -5
  16. data/tracks/delphi/exercises/beer-song/uBeerSongTests.pas +58 -42
  17. data/tracks/delphi/exercises/nucleotide-count/README.md +2 -2
  18. data/tracks/ecmascript/config.json +14 -0
  19. data/tracks/ecmascript/exercises/house/README.md +146 -0
  20. data/tracks/ecmascript/exercises/house/example.js +62 -0
  21. data/tracks/ecmascript/exercises/house/house.spec.js +292 -0
  22. data/tracks/ecmascript/exercises/house/package.json +71 -0
  23. data/tracks/go/exercises/allergies/example.go +3 -2
  24. data/tracks/go/exercises/custom-set/cases_test.go +7 -2
  25. data/tracks/go/exercises/isogram/.meta/gen.go +55 -0
  26. data/tracks/go/exercises/isogram/cases_test.go +57 -0
  27. data/tracks/go/exercises/isogram/isogram_test.go +4 -20
  28. data/tracks/java/config.json +7 -1
  29. data/tracks/java/exercises/luhn/src/test/java/LuhnValidatorTest.java +6 -1
  30. data/tracks/javascript/.eslintignore +0 -3
  31. data/tracks/javascript/exercises/acronym/example.js +2 -1
  32. data/tracks/javascript/exercises/diamond/diamond.spec.js +3 -3
  33. data/tracks/javascript/exercises/diamond/example.js +2 -2
  34. data/tracks/javascript/exercises/sum-of-multiples/sum-of-multiples.spec.js +9 -9
  35. data/tracks/python/config.json +33 -11
  36. data/tracks/python/exercises/dominoes/README.md +28 -0
  37. data/tracks/python/exercises/dominoes/dominoes.py +2 -0
  38. data/tracks/python/exercises/dominoes/dominoes_test.py +114 -0
  39. data/tracks/python/exercises/dominoes/example.py +30 -0
  40. data/tracks/python/exercises/grains/grains_test.py +5 -7
  41. data/tracks/python/exercises/phone-number/example.py +7 -13
  42. data/tracks/python/exercises/phone-number/phone_number_test.py +15 -15
  43. data/tracks/python/exercises/poker/poker_test.py +93 -52
  44. data/tracks/python/exercises/react/README.md +30 -0
  45. data/tracks/python/exercises/react/example.py +65 -0
  46. data/tracks/python/exercises/react/react.py +17 -0
  47. data/tracks/python/exercises/react/react_test.py +136 -0
  48. data/tracks/rust/exercises/pascals-triangle/Cargo.toml +1 -1
  49. data/tracks/rust/exercises/pascals-triangle/tests/pascals-triangle.rs +56 -0
  50. data/tracks/swift/Package.swift +1 -1
  51. data/tracks/swift/config.json +11 -0
  52. data/tracks/swift/exercises/atbash-cipher/Sources/AtbashExample.swift +1 -1
  53. data/tracks/swift/exercises/bracket-push/Sources/BracketPushExample.swift +1 -1
  54. data/tracks/swift/exercises/collatz-conjecture/Package.swift +5 -0
  55. data/tracks/swift/exercises/collatz-conjecture/README.md +41 -0
  56. data/tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjecture.swift +1 -0
  57. data/tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjectureExample.swift +27 -0
  58. data/tracks/swift/exercises/collatz-conjecture/Tests/CollatzConjectureTests/CollatzConjectureTests.swift +40 -0
  59. data/tracks/swift/exercises/collatz-conjecture/Tests/LinuxMain.swift +6 -0
  60. data/tracks/swift/exercises/dominoes/Sources/DominoesExample.swift +3 -3
  61. data/tracks/swift/exercises/grains/Tests/GrainsTests/GrainsTests.swift +3 -3
  62. data/tracks/swift/exercises/kindergarten-garden/Sources/KindergartenGardenExample.swift +2 -2
  63. data/tracks/swift/exercises/meetup/Sources/MeetupExample.swift +1 -1
  64. data/tracks/swift/exercises/nucleotide-count/Sources/NucleotideCountExample.swift +2 -2
  65. data/tracks/swift/exercises/poker/Sources/PokerExample.swift +137 -131
  66. data/tracks/swift/exercises/rna-transcription/Sources/RnaTranscriptionExample.swift +2 -2
  67. data/tracks/swift/exercises/rotational-cipher/Sources/RotationalCipherExample.swift +12 -12
  68. metadata +24 -2
@@ -88,15 +88,15 @@ enum HandRank {
88
88
  let first = sorted[0].rank.rawValue
89
89
  for (index, each) in sorted.enumerated() {
90
90
  guard each.rank.rawValue != index + first else { continue }
91
- // checks for Ace as the lowest card
92
- guard let aceIndex = inputHand.hand.index(where: { $0.rank.rawValue == 14 })else { return (false, .ace) }
93
- var replacedAced = inputHand.hand.map({ $0.rank.rawValue })
94
- replacedAced[aceIndex] = 1 // swaps ace value to lowest
95
- replacedAced.sort()
96
- let firstVal = replacedAced[0]
97
- for (idx, eachVal) in replacedAced.enumerated() {
98
- guard eachVal == firstVal + idx else { return (false, .ace) }
99
- }
91
+ // checks for Ace as the lowest card
92
+ guard let aceIndex = inputHand.hand.index(where: { $0.rank.rawValue == 14 })else { return (false, .ace) }
93
+ var replacedAced = inputHand.hand.map({ $0.rank.rawValue })
94
+ replacedAced[aceIndex] = 1 // swaps ace value to lowest
95
+ replacedAced.sort()
96
+ let firstVal = replacedAced[0]
97
+ for (idx, eachVal) in replacedAced.enumerated() {
98
+ guard eachVal == firstVal + idx else { return (false, .ace) }
99
+ }
100
100
  }
101
101
  let last = sorted[sorted.count - 1].rank
102
102
  return (true, last)
@@ -144,104 +144,103 @@ enum HandRank {
144
144
  }
145
145
  }
146
146
 
147
- extension HandRank : Equatable, Comparable {}
148
-
149
- func == (lhs: HandRank, rhs: HandRank) -> Bool {
150
- switch (lhs, rhs) {
151
- //straightFlush(Rank,Suit)
152
- case (HandRank.straightFlush(let lRank, let lSuit), HandRank.straightFlush(let rRank, let rSuit)):
153
- return lRank == rRank && lSuit == rSuit
154
- //fourOfAKind(four:Rank)
155
- case (HandRank.fourOfAKind(four: let lFour),
156
- HandRank.fourOfAKind(four: let rFour)):
157
- return lFour == rFour
158
- //fullHouse(three:Rank)
159
- case (HandRank.fullHouse(three: let lThree),
160
- HandRank.fullHouse(three: let rThree)):
161
- return lThree == rThree
162
- //flush(Suit)
163
- case (HandRank.flush(let lRank, let lSuit), HandRank.flush(let rRank, let rSuit)):
164
- return lSuit == rSuit && lRank == rRank
165
- //straight(high:Rank)
166
- case (HandRank.straight(high: let lRank),
167
- HandRank.straight(high: let rRank)):
168
- return lRank == rRank
169
- //threeOfAKind(three:Rank)
170
- case (HandRank.threeOfAKind(three: let lRank),
171
- HandRank.threeOfAKind(three: let rRank)):
172
- return lRank == rRank
173
- //twoPair(high:Rank,low:Rank, highCard:PlayingCard)
174
- case (HandRank.twoPair(high: let lHigh, low: let lLow, highCard: let lCard), HandRank.twoPair(high: let rHigh, low: let rLow, highCard: let rCard)):
175
- return lHigh == rHigh && lLow == rLow && lCard == rCard
176
- //onePair(Rank)
177
- case (HandRank.onePair(let lPairRank, card1: let lCard1, card2: let lCard2, card3: let lCard3),
178
- HandRank.onePair(let rPairRank, card1: let rCard1, card2: let rCard2, card3: let rCard3)):
179
- return lPairRank == rPairRank && lCard1 == rCard1 && lCard2 == rCard2 && lCard3 == rCard3
180
- //highCard(PlayingCard)
181
- case (HandRank.highCard(let lCard), HandRank.highCard(let rCard)):
182
- return lCard == rCard
183
- default:
184
- return false
147
+ extension HandRank: Equatable {
148
+ static func == (lhs: HandRank, rhs: HandRank) -> Bool {
149
+ switch (lhs, rhs) {
150
+ //straightFlush(Rank,Suit)
151
+ case (HandRank.straightFlush(let lRank, let lSuit), HandRank.straightFlush(let rRank, let rSuit)):
152
+ return lRank == rRank && lSuit == rSuit
153
+ //fourOfAKind(four:Rank)
154
+ case (HandRank.fourOfAKind(four: let lFour),
155
+ HandRank.fourOfAKind(four: let rFour)):
156
+ return lFour == rFour
157
+ //fullHouse(three:Rank)
158
+ case (HandRank.fullHouse(three: let lThree),
159
+ HandRank.fullHouse(three: let rThree)):
160
+ return lThree == rThree
161
+ //flush(Suit)
162
+ case (HandRank.flush(let lRank, let lSuit), HandRank.flush(let rRank, let rSuit)):
163
+ return lSuit == rSuit && lRank == rRank
164
+ //straight(high:Rank)
165
+ case (HandRank.straight(high: let lRank),
166
+ HandRank.straight(high: let rRank)):
167
+ return lRank == rRank
168
+ //threeOfAKind(three:Rank)
169
+ case (HandRank.threeOfAKind(three: let lRank),
170
+ HandRank.threeOfAKind(three: let rRank)):
171
+ return lRank == rRank
172
+ //twoPair(high:Rank,low:Rank, highCard:PlayingCard)
173
+ case (HandRank.twoPair(high: let lHigh, low: let lLow, highCard: let lCard), HandRank.twoPair(high: let rHigh, low: let rLow, highCard: let rCard)):
174
+ return lHigh == rHigh && lLow == rLow && lCard == rCard
175
+ //onePair(Rank)
176
+ case (HandRank.onePair(let lPairRank, card1: let lCard1, card2: let lCard2, card3: let lCard3),
177
+ HandRank.onePair(let rPairRank, card1: let rCard1, card2: let rCard2, card3: let rCard3)):
178
+ return lPairRank == rPairRank && lCard1 == rCard1 && lCard2 == rCard2 && lCard3 == rCard3
179
+ //highCard(PlayingCard)
180
+ case (HandRank.highCard(let lCard), HandRank.highCard(let rCard)):
181
+ return lCard == rCard
182
+ default:
183
+ return false
184
+ }
185
185
  }
186
186
  }
187
- // swiftlint:disable:next cyclomatic_complexity
188
- // swiftlint:disable:next empty_enum_arguments
189
- func < (lhs: HandRank, rhs: HandRank) -> Bool {
190
- switch (lhs, rhs) {
191
- case (_, _) where lhs == rhs:
192
- return false
193
-
194
- //straightFlush(Rank,Suit)
195
- case (HandRank.straightFlush(let lRank, let lSuit), HandRank.straightFlush(let rRank, let rSuit)):
196
- return lRank == rRank ? lSuit < rSuit : lRank < rRank
197
-
198
- //fourOfAKind(four:Rank)
199
- case (HandRank.fourOfAKind(four: let lFour),
200
- HandRank.fourOfAKind(four: let rFour)):
201
- return lFour < rFour
202
-
203
- //fullHouse(three:Rank)
204
- case (HandRank.fullHouse(three: let lRank),
205
- HandRank.fullHouse(three: let rRank)):
206
- return lRank < rRank
207
-
208
- //flush(Suit)
209
- case (HandRank.flush(let lRank, let lSuit), HandRank.flush(let rRank, let rSuit)):
210
- return lRank == rRank ? lSuit < rSuit : lRank < rRank
211
-
212
- //straight(high:Rank)
213
- case (HandRank.straight(high: let lRank),
214
- HandRank.straight(high: let rRank)):
215
- return lRank < rRank
216
-
217
- //threeOfAKind(three:Rank)
218
- case (HandRank.threeOfAKind(three: let lRank),
219
- HandRank.threeOfAKind(three: let rRank)):
220
- return lRank < rRank
221
-
222
- //twoPair(high:Rank,low:Rank, highCard:PlayingCard)
223
- case (HandRank.twoPair(high: let lHigh, low: let lLow, highCard: let lCard), HandRank.twoPair(high: let rHigh, low: let rLow, highCard: let rCard)):
224
- if lHigh == rHigh && lLow == rLow {
225
- return lCard < rCard
226
- } else {
227
- return lHigh < rHigh
228
- }
229
187
 
230
- //onePair(Rank)
231
- case (HandRank.onePair(let lPairRank, card1: let lCard1, card2: let lCard2, card3: let lCard3),
232
- HandRank.onePair(let rPairRank, card1: let rCard1, card2: let rCard2, card3: let rCard3)):
233
- return lPairRank == rPairRank ? (lCard1 == rCard1 ? (lCard2 == rCard2 ? lCard3 < rCard3 :lCard2 < rCard2):lCard1 < rCard1):lPairRank < rPairRank
188
+ extension HandRank: Comparable {
189
+ static func < (lhs: HandRank, rhs: HandRank) -> Bool {
190
+ switch (lhs, rhs) {
191
+ case (_, _) where lhs == rhs:
192
+ return false
193
+
194
+ //straightFlush(Rank,Suit)
195
+ case (HandRank.straightFlush(let lRank, let lSuit), HandRank.straightFlush(let rRank, let rSuit)):
196
+ return lRank == rRank ? lSuit < rSuit : lRank < rRank
197
+
198
+ //fourOfAKind(four:Rank)
199
+ case (HandRank.fourOfAKind(four: let lFour),
200
+ HandRank.fourOfAKind(four: let rFour)):
201
+ return lFour < rFour
202
+
203
+ //fullHouse(three:Rank)
204
+ case (HandRank.fullHouse(three: let lRank),
205
+ HandRank.fullHouse(three: let rRank)):
206
+ return lRank < rRank
207
+
208
+ //flush(Suit)
209
+ case (HandRank.flush(let lRank, let lSuit), HandRank.flush(let rRank, let rSuit)):
210
+ return lRank == rRank ? lSuit < rSuit : lRank < rRank
211
+
212
+ //straight(high:Rank)
213
+ case (HandRank.straight(high: let lRank),
214
+ HandRank.straight(high: let rRank)):
215
+ return lRank < rRank
216
+
217
+ //threeOfAKind(three:Rank)
218
+ case (HandRank.threeOfAKind(three: let lRank),
219
+ HandRank.threeOfAKind(three: let rRank)):
220
+ return lRank < rRank
221
+
222
+ //twoPair(high:Rank,low:Rank, highCard:PlayingCard)
223
+ case (HandRank.twoPair(high: let lHigh, low: let lLow, highCard: let lCard), HandRank.twoPair(high: let rHigh, low: let rLow, highCard: let rCard)):
224
+ if lHigh == rHigh && lLow == rLow {
225
+ return lCard < rCard
226
+ } else {
227
+ return lHigh < rHigh
228
+ }
234
229
 
235
- //highCard(PlayingCard)
236
- case (HandRank.highCard(let lCard), HandRank.highCard(let rCard)):
237
- return lCard < rCard
230
+ //onePair(Rank)
231
+ case (HandRank.onePair(let lPairRank, card1: let lCard1, card2: let lCard2, card3: let lCard3),
232
+ HandRank.onePair(let rPairRank, card1: let rCard1, card2: let rCard2, card3: let rCard3)):
233
+ return lPairRank == rPairRank ? (lCard1 == rCard1 ? (lCard2 == rCard2 ? lCard3 < rCard3 :lCard2 < rCard2):lCard1 < rCard1):lPairRank < rPairRank
238
234
 
239
- default:
240
- return lhs.order() < rhs.order()
241
- }
235
+ //highCard(PlayingCard)
236
+ case (HandRank.highCard(let lCard), HandRank.highCard(let rCard)):
237
+ return lCard < rCard
242
238
 
239
+ default:
240
+ return lhs.order() < rhs.order()
241
+ }
242
+ }
243
243
  }
244
- // swiftlint:enable:next empty_enum_arguments
245
244
 
246
245
  struct PokerHand {
247
246
  let hand: [PlayingCard]
@@ -262,15 +261,19 @@ struct PokerHand {
262
261
  if handParsed.count == 5 { self.hand = handParsed } else { return nil }
263
262
  }
264
263
  }
265
- extension PokerHand : Equatable, Comparable {}
266
264
 
267
- func == (lhs: PokerHand, rhs: PokerHand) -> Bool {
268
- return lhs.hand == rhs.hand
265
+ extension PokerHand: Equatable {
266
+ static func == (lhs: PokerHand, rhs: PokerHand) -> Bool {
267
+ return lhs.hand == rhs.hand
268
+ }
269
269
  }
270
270
 
271
- func < (lhs: PokerHand, rhs: PokerHand) -> Bool {
272
- return lhs.handRank() < rhs.handRank()
271
+ extension PokerHand: Comparable {
272
+ static func < (lhs: PokerHand, rhs: PokerHand) -> Bool {
273
+ return lhs.handRank() < rhs.handRank()
274
+ }
273
275
  }
276
+
274
277
  struct PlayingCard {
275
278
  let rank: Rank
276
279
  let suit: Suit
@@ -290,15 +293,18 @@ struct PlayingCard {
290
293
  }
291
294
  }
292
295
 
293
- extension PlayingCard : Equatable, Comparable {}
294
-
295
- func == (lhs: PlayingCard, rhs: PlayingCard) -> Bool {
296
- return lhs.rank == rhs.rank && lhs.suit == rhs.suit
296
+ extension PlayingCard: Equatable {
297
+ static func == (lhs: PlayingCard, rhs: PlayingCard) -> Bool {
298
+ return lhs.rank == rhs.rank && lhs.suit == rhs.suit
299
+ }
297
300
  }
298
301
 
299
- func < (lhs: PlayingCard, rhs: PlayingCard) -> Bool {
300
- return lhs.rank == rhs.rank ? lhs.suit < rhs.suit : lhs.rank < rhs.rank
302
+ extension PlayingCard: Comparable {
303
+ static func < (lhs: PlayingCard, rhs: PlayingCard) -> Bool {
304
+ return lhs.rank == rhs.rank ? lhs.suit < rhs.suit : lhs.rank < rhs.rank
305
+ }
301
306
  }
307
+
302
308
  enum Rank: Int {
303
309
  case two = 2
304
310
  case three, four, five, six, seven, eight, nine, ten
@@ -333,28 +339,28 @@ enum Suit: String {
333
339
  }
334
340
  }
335
341
 
336
- extension Rank : Comparable {}
337
-
338
- func < (lhs: Rank, rhs: Rank) -> Bool {
339
- switch (lhs, rhs) {
340
- case (_, _) where lhs == rhs:
341
- return false
342
- default:
343
- return lhs.rawValue < rhs.rawValue
342
+ extension Rank: Comparable {
343
+ static func < (lhs: Rank, rhs: Rank) -> Bool {
344
+ switch (lhs, rhs) {
345
+ case (_, _) where lhs == rhs:
346
+ return false
347
+ default:
348
+ return lhs.rawValue < rhs.rawValue
349
+ }
344
350
  }
345
351
  }
346
352
 
347
- extension Suit: Comparable {}
348
-
349
- func < (lhs: Suit, rhs: Suit) -> Bool {
350
- switch (lhs, rhs) {
351
- case (_, _) where lhs == rhs:
352
- return false
353
- case (.spades, _),
354
- (.hearts, .diamonds), (.hearts, .clubs),
355
- (.diamonds, .clubs):
356
- return false
357
- default:
358
- return true
353
+ extension Suit: Comparable {
354
+ static func < (lhs: Suit, rhs: Suit) -> Bool {
355
+ switch (lhs, rhs) {
356
+ case (_, _) where lhs == rhs:
357
+ return false
358
+ case (.spades, _),
359
+ (.hearts, .diamonds), (.hearts, .clubs),
360
+ (.diamonds, .clubs):
361
+ return false
362
+ default:
363
+ return true
364
+ }
359
365
  }
360
366
  }
@@ -13,9 +13,9 @@ struct Nucleotide {
13
13
  self.value = nucleotide
14
14
  }
15
15
 
16
- private let dnaToRna: [Character:String] = [ "G": "C", "C": "G", "T": "A", "A": "U" ]
16
+ private let dnaToRna: [Character: String] = [ "G": "C", "C": "G", "T": "A", "A": "U" ]
17
17
 
18
- private func transcribe(_ dict: [Character : String]) throws -> String {
18
+ private func transcribe(_ dict: [Character: String]) throws -> String {
19
19
  var tempText = ""
20
20
  for each in self.value.characters {
21
21
  if dict[each] == nil {
@@ -7,18 +7,18 @@ struct RotationalCipher {
7
7
  target.unicodeScalars.forEach { unicode in
8
8
 
9
9
  switch unicode.value {
10
- case 65...90: // A to Z
11
- var scalar = unicode.value + UInt32(ROT)
12
- if scalar > 90 { scalar -= 26 }
13
- result.append(Character(UnicodeScalar(scalar)!))
14
-
15
- case 97...122: // a to z
16
- var scalar = unicode.value + UInt32(ROT)
17
- if scalar > 122 { scalar -= 26 }
18
- result.append(Character(UnicodeScalar(scalar)!))
19
-
20
- default:
21
- result.append(Character(unicode))
10
+ case 65...90: // A to Z
11
+ var scalar = unicode.value + UInt32(ROT)
12
+ if scalar > 90 { scalar -= 26 }
13
+ result.append(Character(UnicodeScalar(scalar)!))
14
+
15
+ case 97...122: // a to z
16
+ var scalar = unicode.value + UInt32(ROT)
17
+ if scalar > 122 { scalar -= 26 }
18
+ result.append(Character(UnicodeScalar(scalar)!))
19
+
20
+ default:
21
+ result.append(Character(unicode))
22
22
  }
23
23
 
24
24
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trackler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1.60
4
+ version: 2.2.1.61
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katrina Owen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-05 00:00:00.000000000 Z
11
+ date: 2017-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -454,6 +454,7 @@ files:
454
454
  - problem-specifications/exercises/prime-factors/metadata.yml
455
455
  - problem-specifications/exercises/protein-translation/description.md
456
456
  - problem-specifications/exercises/protein-translation/metadata.yml
457
+ - problem-specifications/exercises/proverb/canonical-data.json
457
458
  - problem-specifications/exercises/proverb/description.md
458
459
  - problem-specifications/exercises/proverb/metadata.yml
459
460
  - problem-specifications/exercises/pythagorean-triplet/description.md
@@ -652,6 +653,7 @@ files:
652
653
  - tracks/c/bin/verify-indent
653
654
  - tracks/c/config.json
654
655
  - tracks/c/config/exercise_readme.go.tmpl
656
+ - tracks/c/config/maintainers.json
655
657
  - tracks/c/docs/ABOUT.md
656
658
  - tracks/c/docs/CONTRIBUTING.md
657
659
  - tracks/c/docs/C_STYLE_GUIDE.md
@@ -3464,6 +3466,10 @@ files:
3464
3466
  - tracks/ecmascript/exercises/hexadecimal/example.js
3465
3467
  - tracks/ecmascript/exercises/hexadecimal/hexadecimal.spec.js
3466
3468
  - tracks/ecmascript/exercises/hexadecimal/package.json
3469
+ - tracks/ecmascript/exercises/house/README.md
3470
+ - tracks/ecmascript/exercises/house/example.js
3471
+ - tracks/ecmascript/exercises/house/house.spec.js
3472
+ - tracks/ecmascript/exercises/house/package.json
3467
3473
  - tracks/ecmascript/exercises/isbn-verifier/README.md
3468
3474
  - tracks/ecmascript/exercises/isbn-verifier/example.js
3469
3475
  - tracks/ecmascript/exercises/isbn-verifier/isbn-verifier.spec.js
@@ -5774,7 +5780,9 @@ files:
5774
5780
  - tracks/go/exercises/isbn-verifier/README.md
5775
5781
  - tracks/go/exercises/isbn-verifier/example.go
5776
5782
  - tracks/go/exercises/isbn-verifier/isbn_verifier_test.go
5783
+ - tracks/go/exercises/isogram/.meta/gen.go
5777
5784
  - tracks/go/exercises/isogram/README.md
5785
+ - tracks/go/exercises/isogram/cases_test.go
5778
5786
  - tracks/go/exercises/isogram/example.go
5779
5787
  - tracks/go/exercises/isogram/isogram_test.go
5780
5788
  - tracks/go/exercises/kindergarten-garden/README.md
@@ -10564,6 +10572,10 @@ files:
10564
10572
  - tracks/python/exercises/diffie-hellman/diffie_hellman.py
10565
10573
  - tracks/python/exercises/diffie-hellman/diffie_hellman_test.py
10566
10574
  - tracks/python/exercises/diffie-hellman/example.py
10575
+ - tracks/python/exercises/dominoes/README.md
10576
+ - tracks/python/exercises/dominoes/dominoes.py
10577
+ - tracks/python/exercises/dominoes/dominoes_test.py
10578
+ - tracks/python/exercises/dominoes/example.py
10567
10579
  - tracks/python/exercises/error-handling/.meta/hints.md
10568
10580
  - tracks/python/exercises/error-handling/README.md
10569
10581
  - tracks/python/exercises/error-handling/error_handling.py
@@ -10741,6 +10753,10 @@ files:
10741
10753
  - tracks/python/exercises/raindrops/example.py
10742
10754
  - tracks/python/exercises/raindrops/raindrops.py
10743
10755
  - tracks/python/exercises/raindrops/raindrops_test.py
10756
+ - tracks/python/exercises/react/README.md
10757
+ - tracks/python/exercises/react/example.py
10758
+ - tracks/python/exercises/react/react.py
10759
+ - tracks/python/exercises/react/react_test.py
10744
10760
  - tracks/python/exercises/rectangles/README.md
10745
10761
  - tracks/python/exercises/rectangles/example.py
10746
10762
  - tracks/python/exercises/rectangles/rectangles.py
@@ -13053,6 +13069,12 @@ files:
13053
13069
  - tracks/swift/exercises/clock/Sources/ClockExample.swift
13054
13070
  - tracks/swift/exercises/clock/Tests/ClockTests/ClockTests.swift
13055
13071
  - tracks/swift/exercises/clock/Tests/LinuxMain.swift
13072
+ - tracks/swift/exercises/collatz-conjecture/Package.swift
13073
+ - tracks/swift/exercises/collatz-conjecture/README.md
13074
+ - tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjecture.swift
13075
+ - tracks/swift/exercises/collatz-conjecture/Sources/CollatzConjectureExample.swift
13076
+ - tracks/swift/exercises/collatz-conjecture/Tests/CollatzConjectureTests/CollatzConjectureTests.swift
13077
+ - tracks/swift/exercises/collatz-conjecture/Tests/LinuxMain.swift
13056
13078
  - tracks/swift/exercises/crypto-square/.gitignore
13057
13079
  - tracks/swift/exercises/crypto-square/Package.swift
13058
13080
  - tracks/swift/exercises/crypto-square/README.md