trackler 2.0.3.8 → 2.0.3.9

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 (136) hide show
  1. checksums.yaml +4 -4
  2. data/common/exercises/book-store/description.md +67 -0
  3. data/common/exercises/book-store/metadata.yml +4 -0
  4. data/lib/trackler/version.rb +1 -1
  5. data/tracks/crystal/exercises/difference-of-squares/src/difference_of_squares.cr +1 -0
  6. data/tracks/ecmascript/exercises/custom-set/package.json +1 -0
  7. data/tracks/ecmascript/exercises/palindrome-products/palindrome-products.js +18 -18
  8. data/tracks/fsharp/docs/INSTALLATION.md +2 -3
  9. data/tracks/fsharp/docs/TESTS.md +1 -1
  10. data/tracks/fsharp/exercises/accumulate/HINTS.md +3 -0
  11. data/tracks/fsharp/exercises/diamond/HINTS.md +2 -0
  12. data/tracks/fsharp/exercises/grains/HINTS.md +1 -1
  13. data/tracks/fsharp/exercises/hello-world/HINTS.md +1 -1
  14. data/tracks/fsharp/exercises/parallel-letter-frequency/HINTS.md +3 -0
  15. data/tracks/fsharp/exercises/poker/HINTS.md +2 -0
  16. data/tracks/fsharp/exercises/raindrops/HINTS.md +2 -0
  17. data/tracks/fsharp/exercises/space-age/HINTS.md +3 -0
  18. data/tracks/javascript/exercises/bowling/bowling.spec.js +83 -63
  19. data/tracks/ocaml/config.json +5 -0
  20. data/tracks/ocaml/exercises/leap/test.ml +7 -13
  21. data/tracks/ocaml/exercises/robot-name/.merlin +3 -0
  22. data/tracks/ocaml/exercises/robot-name/Makefile +11 -0
  23. data/tracks/ocaml/exercises/robot-name/example.ml +26 -0
  24. data/tracks/ocaml/exercises/robot-name/robot_name.mli +7 -0
  25. data/tracks/ocaml/exercises/robot-name/test.ml +64 -0
  26. data/tracks/ocaml/tools/test-generator/Makefile +3 -0
  27. data/tracks/ocaml/tools/test-generator/README.md +1 -0
  28. data/tracks/ocaml/tools/test-generator/src/canonical_data_checker.ml +23 -0
  29. data/tracks/ocaml/tools/test-generator/src/controller.ml +12 -0
  30. data/tracks/ocaml/tools/test-generator/src/parser.ml +29 -22
  31. data/tracks/ocaml/tools/test-generator/src/utils.ml +8 -0
  32. data/tracks/ocaml/tools/test-generator/test/clock.json +437 -0
  33. data/tracks/ocaml/tools/test-generator/test/parser_test.ml +18 -4
  34. data/tracks/ocaml/tools/test-generator/test/with-methods-key.json +22 -0
  35. data/tracks/perl6/config.json +5 -0
  36. data/tracks/perl6/exercises/wordy/Example.p6 +16 -0
  37. data/tracks/perl6/exercises/wordy/cases.json +89 -0
  38. data/tracks/perl6/exercises/wordy/wordy.t +29 -0
  39. data/tracks/ruby/exercises/acronym/{.version → .meta/.version} +0 -0
  40. data/tracks/ruby/exercises/alphametics/{.version → .meta/.version} +0 -0
  41. data/tracks/ruby/exercises/anagram/{.version → .meta/.version} +0 -0
  42. data/tracks/ruby/exercises/binary/{.version → .meta/.version} +0 -0
  43. data/tracks/ruby/exercises/bowling/{.version → .meta/.version} +0 -0
  44. data/tracks/ruby/exercises/bracket-push/{.version → .meta/.version} +0 -0
  45. data/tracks/ruby/exercises/clock/{.version → .meta/.version} +0 -0
  46. data/tracks/ruby/exercises/connect/{.version → .meta/.version} +0 -0
  47. data/tracks/ruby/exercises/custom-set/{.version → .meta/.version} +0 -0
  48. data/tracks/ruby/exercises/difference-of-squares/{.version → .meta/.version} +0 -0
  49. data/tracks/ruby/exercises/dominoes/{.version → .meta/.version} +0 -0
  50. data/tracks/ruby/exercises/gigasecond/{.version → .meta/.version} +0 -0
  51. data/tracks/ruby/exercises/hamming/{.version → .meta/.version} +0 -0
  52. data/tracks/ruby/exercises/hello-world/{.version → .meta/.version} +0 -0
  53. data/tracks/ruby/exercises/isogram/{.version → .meta/.version} +0 -0
  54. data/tracks/ruby/exercises/largest-series-product/{.version → .meta/.version} +0 -0
  55. data/tracks/ruby/exercises/leap/{.version → .meta/.version} +0 -0
  56. data/tracks/ruby/exercises/nth-prime/{.version → .meta/.version} +0 -0
  57. data/tracks/ruby/exercises/pangram/{.version → .meta/.version} +0 -0
  58. data/tracks/ruby/exercises/queen-attack/{.version → .meta/.version} +0 -0
  59. data/tracks/ruby/exercises/raindrops/{.version → .meta/.version} +0 -0
  60. data/tracks/ruby/exercises/rna-transcription/{.version → .meta/.version} +0 -0
  61. data/tracks/ruby/exercises/roman-numerals/{.version → .meta/.version} +0 -0
  62. data/tracks/ruby/exercises/run-length-encoding/{.version → .meta/.version} +0 -0
  63. data/tracks/ruby/exercises/sieve/{.version → .meta/.version} +0 -0
  64. data/tracks/ruby/exercises/tournament/{.version → .meta/.version} +0 -0
  65. data/tracks/ruby/exercises/transpose/{.version → .meta/.version} +0 -0
  66. data/tracks/ruby/exercises/triangle/{.version → .meta/.version} +0 -0
  67. data/tracks/ruby/exercises/two-bucket/{.version → .meta/.version} +0 -0
  68. data/tracks/ruby/exercises/word-count/{.version → .meta/.version} +0 -0
  69. data/tracks/ruby/lib/generator.rb +15 -4
  70. data/tracks/rust/config.json +1 -0
  71. data/tracks/rust/exercises/largest-series-product/.gitignore +7 -0
  72. data/tracks/rust/exercises/largest-series-product/Cargo.toml +3 -0
  73. data/tracks/rust/exercises/largest-series-product/HINTS.md +6 -0
  74. data/tracks/rust/exercises/largest-series-product/example.rs +22 -0
  75. data/tracks/rust/exercises/largest-series-product/tests/largest-series-product.rs +105 -0
  76. data/tracks/rust/problems.md +1 -0
  77. data/tracks/scala/.gitignore +1 -0
  78. data/tracks/scala/exercises/accumulate/src/test/scala/{accumulate_test.scala → AccumulateTest.scala} +0 -0
  79. data/tracks/scala/exercises/allergies/src/test/scala/{allergies_test.scala → AllergiesTest.scala} +0 -0
  80. data/tracks/scala/exercises/anagram/src/test/scala/{anagram_test.scala → AnagramTest.scala} +0 -0
  81. data/tracks/scala/exercises/binary/src/test/scala/{binary_test.scala → BinaryTest.scala} +0 -0
  82. data/tracks/scala/exercises/bob/src/test/scala/{bob_test.scala → BobTest.scala} +0 -0
  83. data/tracks/scala/exercises/difference-of-squares/src/test/scala/{squares_test.scala → SquaresTest.scala} +0 -0
  84. data/tracks/scala/exercises/etl/src/test/scala/{etl_test.scala → EtlTest.scala} +0 -0
  85. data/tracks/scala/exercises/gigasecond/src/test/scala/{gigasecond_test.scala → GigasecondTest.scala} +0 -0
  86. data/tracks/scala/exercises/grade-school/src/test/scala/{grade_school_test.scala → GradeSchoolTest.scala} +0 -0
  87. data/tracks/scala/exercises/grains/src/test/scala/{grains_test.scala → GrainsTest.scala} +0 -0
  88. data/tracks/scala/exercises/hamming/src/test/scala/{hamming_test.scala → HammingTest.scala} +0 -0
  89. data/tracks/scala/exercises/hello-world/src/test/scala/HelloWorldTest.scala +2 -0
  90. data/tracks/scala/exercises/leap/src/test/scala/{leap_test.scala → LeapTest.scala} +0 -0
  91. data/tracks/scala/exercises/meetup/src/test/scala/{meetup_test.scala → MeetupTest.scala} +0 -0
  92. data/tracks/scala/exercises/nth-prime/example.scala +3 -1
  93. data/tracks/scala/exercises/nth-prime/src/test/scala/PrimeTest.scala +11 -6
  94. data/tracks/scala/exercises/nucleotide-count/src/test/scala/{nucleotide_count_test.scala → NucleotideCountTest.scala} +0 -0
  95. data/tracks/scala/exercises/palindrome-products/src/test/scala/PalindromeProductsTest.scala +7 -0
  96. data/tracks/scala/exercises/pangram/src/test/scala/{PangramsTest.scala → PangramTest.scala} +0 -0
  97. data/tracks/scala/exercises/parallel-letter-frequency/HINTS.md +26 -0
  98. data/tracks/scala/exercises/phone-number/src/test/scala/{phone_number_test.scala → PhoneNumberTest.scala} +0 -0
  99. data/tracks/scala/exercises/prime-factors/src/test/scala/{primefactors_test.scala → PrimefactorsTest.scala} +10 -0
  100. data/tracks/scala/exercises/raindrops/src/test/scala/{raindrops_test.scala → RaindropsTest.scala} +15 -0
  101. data/tracks/scala/exercises/rna-transcription/src/test/scala/{transcription_test.scala → RnaTranscriptionTest.scala} +8 -0
  102. data/tracks/scala/exercises/robot-name/src/test/scala/{robot_name_test.scala → RobotNameTest.scala} +0 -0
  103. data/tracks/scala/exercises/roman-numerals/src/test/scala/{roman_numerals_test.scala → RomanNumeralsTest.scala} +17 -0
  104. data/tracks/scala/exercises/saddle-points/src/test/scala/{SaddlePointsSpecs.scala → SaddlePointsTest.scala} +3 -0
  105. data/tracks/scala/exercises/scrabble-score/src/test/scala/{scrabble_score_test.scala → ScrabbleScoreTest.scala} +0 -0
  106. data/tracks/scala/exercises/sgf-parsing/src/test/scala/SgfTest.scala +1 -0
  107. data/tracks/scala/exercises/space-age/src/test/scala/{space_age_test.scala → SpaceAgeTest.scala} +0 -0
  108. data/tracks/scala/exercises/sublist/src/test/scala/{sublist_test.scala → SublistTest.scala} +0 -0
  109. data/tracks/scala/exercises/triangle/src/test/scala/{triangle_test.scala → TriangleTest.scala} +7 -0
  110. data/tracks/scala/exercises/word-count/src/test/scala/{word_count_test.scala → WordCountTest.scala} +0 -0
  111. data/tracks/scala/exercises/zipper/src/test/scala/ZipperTest.scala +7 -0
  112. data/tracks/swift/config.json +19 -0
  113. data/tracks/swift/docs/TESTS.md +114 -23
  114. data/tracks/swift/exercises/beer-song/BeerSongExample.swift +32 -0
  115. data/tracks/swift/exercises/beer-song/BeerSongTest.swift +44 -0
  116. data/tracks/swift/exercises/hello-world/{helloWorldExample.swift → HelloWorldExample.swift} +4 -0
  117. data/tracks/swift/exercises/hello-world/{helloWorldTest/helloWorldTest.swift → helloWorldTest.swift} +1 -1
  118. data/tracks/swift/exercises/sublist/SubListTest.swift +95 -0
  119. data/tracks/swift/exercises/sublist/SublistExample.swift +72 -0
  120. data/tracks/swift/img/page_assets/001-splash.png +0 -0
  121. data/tracks/swift/img/page_assets/002-templateChooser.png +0 -0
  122. data/tracks/swift/img/page_assets/003-nameProject.jpg +0 -0
  123. data/tracks/swift/img/page_assets/004-saveProject.jpg +0 -0
  124. data/tracks/swift/img/page_assets/005-folderLayout.png +0 -0
  125. data/tracks/swift/img/page_assets/006-newProjectInitial.jpg +0 -0
  126. data/tracks/swift/img/page_assets/007-fileInspectorUpdate.png +0 -0
  127. data/tracks/swift/img/page_assets/008-templateChooserSwift.png +0 -0
  128. data/tracks/swift/img/page_assets/009-importTestSource.png +0 -0
  129. data/tracks/swift/img/page_assets/010-testsImportExample.png +0 -0
  130. data/tracks/swift/img/page_assets/011-finalLayoutExample.png +0 -0
  131. data/tracks/swift/xcodeProject/xSwift.xcodeproj/project.pbxproj +36 -56
  132. metadata +103 -65
  133. data/tracks/swift/exercises/hello-world/helloWorld.swift +0 -1
  134. data/tracks/swift/exercises/hello-world/helloWorld.xcodeproj/project.pbxproj +0 -256
  135. data/tracks/swift/exercises/hello-world/helloWorld.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  136. data/tracks/swift/exercises/hello-world/helloWorldTest/Info.plist +0 -24
@@ -0,0 +1,72 @@
1
+ import Foundation
2
+
3
+ enum SublistKind {
4
+
5
+ case sublist
6
+ case superlist
7
+ case equal
8
+ case unequal
9
+
10
+ }
11
+ func classifier(listOne: [Int], listTwo: [Int]) -> SublistKind {
12
+
13
+ if listOne == listTwo {
14
+
15
+ return .equal
16
+ } else if listOne.isEmpty || listTwo.isEmpty {
17
+
18
+ if listOne.isEmpty {
19
+
20
+ return .sublist
21
+ }
22
+ return .superlist
23
+
24
+ } else if listOne.count != listTwo.count {
25
+
26
+ var i = 0
27
+ var count = 0
28
+ var smallerList = [Int]()
29
+
30
+ var iterations = 0
31
+ iterations = max(listOne.count, listTwo.count) - (min(listOne.count, listTwo.count) - 1)
32
+
33
+ while iterations > 0 {
34
+
35
+ var j = i
36
+ while count <= min(listOne.count, listTwo.count) - 1 {
37
+
38
+ if listOne.count > listTwo.count {
39
+
40
+ smallerList.append(listOne[j])
41
+
42
+ } else {
43
+
44
+ smallerList.append(listTwo[j])
45
+ }
46
+
47
+ j+=1
48
+ count+=1
49
+ }
50
+
51
+ if smallerList == listTwo {
52
+
53
+ return .superlist
54
+
55
+ } else if smallerList == listOne {
56
+
57
+ return .sublist
58
+
59
+ } else {
60
+
61
+ smallerList.removeAll()
62
+ i+=1
63
+ count = 0
64
+ }
65
+
66
+ iterations-=1
67
+
68
+ }
69
+
70
+ }
71
+ return .unequal
72
+ }
@@ -42,10 +42,7 @@
42
42
  1E9A63A51C506EFD00E28AE1 /* GrainsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E9A63151C506EFC00E28AE1 /* GrainsTest.swift */; };
43
43
  1E9A63A61C506EFD00E28AE1 /* HammingExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E9A63171C506EFC00E28AE1 /* HammingExample.swift */; };
44
44
  1E9A63A71C506EFD00E28AE1 /* HammingTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E9A63181C506EFC00E28AE1 /* HammingTest.swift */; };
45
- 1E9A63A81C506EFD00E28AE1 /* helloWorld.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E9A631A1C506EFC00E28AE1 /* helloWorld.swift */; };
46
45
  1E9A63A91C506EFD00E28AE1 /* helloWorldExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E9A631E1C506EFC00E28AE1 /* helloWorldExample.swift */; };
47
- 1E9A63AA1C506EFD00E28AE1 /* helloWorldTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E9A63201C506EFC00E28AE1 /* helloWorldTest.swift */; };
48
- 1E9A63AB1C506EFD00E28AE1 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1E9A63211C506EFC00E28AE1 /* Info.plist */; };
49
46
  1E9A63AC1C506EFD00E28AE1 /* KindergartenGardenExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E9A63231C506EFC00E28AE1 /* KindergartenGardenExample.swift */; };
50
47
  1E9A63AD1C506EFD00E28AE1 /* KindergartenGardenTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E9A63241C506EFC00E28AE1 /* KindergartenGardenTest.swift */; };
51
48
  1E9A63AE1C506EFD00E28AE1 /* LeapExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E9A63261C506EFC00E28AE1 /* LeapExample.swift */; };
@@ -115,6 +112,11 @@
115
112
  1E9A63EE1C506EFD00E28AE1 /* WordyExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E9A63861C506EFC00E28AE1 /* WordyExample.swift */; };
116
113
  1E9A63EF1C506EFD00E28AE1 /* WordyTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E9A63871C506EFC00E28AE1 /* WordyTest.swift */; };
117
114
  1EAF95E11C90C587009DDCB6 /* DominoesTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EAF95E01C90C587009DDCB6 /* DominoesTest.swift */; };
115
+ A004DFC31DF8068A00800271 /* BeerSongExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = A004DFC11DF8068A00800271 /* BeerSongExample.swift */; };
116
+ A004DFC41DF8068A00800271 /* BeerSongTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A004DFC21DF8068A00800271 /* BeerSongTest.swift */; };
117
+ A0DBCBF81E0000B800E0DFBF /* helloWorldTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0DBCBF71E0000B800E0DFBF /* helloWorldTest.swift */; };
118
+ A0DBCBFB1E00017E00E0DFBF /* SublistExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0DBCBF91E00017E00E0DFBF /* SublistExample.swift */; };
119
+ A0DBCBFC1E00017E00E0DFBF /* SubListTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0DBCBFA1E00017E00E0DFBF /* SubListTest.swift */; };
118
120
  E908CD461C6AD05F005D081E /* FoodChainExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = E908CD451C6AD05F005D081E /* FoodChainExample.swift */; };
119
121
  E908CD481C6AD076005D081E /* FoodChainTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E908CD471C6AD076005D081E /* FoodChainTest.swift */; };
120
122
  E908CD541C6D7AD1005D081E /* PascalsTriangleExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = E908CD531C6D7AD1005D081E /* PascalsTriangleExample.swift */; };
@@ -155,16 +157,6 @@
155
157
  E9AFA1871C624FD5006AD72D /* MinesweeperTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9AFA1861C624FD5006AD72D /* MinesweeperTest.swift */; };
156
158
  /* End PBXBuildFile section */
157
159
 
158
- /* Begin PBXContainerItemProxy section */
159
- 1E9A63F11C506EFD00E28AE1 /* PBXContainerItemProxy */ = {
160
- isa = PBXContainerItemProxy;
161
- containerPortal = 1E9A631B1C506EFC00E28AE1 /* helloWorld.xcodeproj */;
162
- proxyType = 2;
163
- remoteGlobalIDString = 9DCE807D1BA747050024C69D;
164
- remoteInfo = helloWorldTest;
165
- };
166
- /* End PBXContainerItemProxy section */
167
-
168
160
  /* Begin PBXFileReference section */
169
161
  1E167A0F1C8AA5D7001EAD90 /* PokerExample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PokerExample.swift; sourceTree = "<group>"; };
170
162
  1E167A101C8AA5D7001EAD90 /* PokerTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = PokerTest.swift; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
@@ -201,11 +193,7 @@
201
193
  1E9A63151C506EFC00E28AE1 /* GrainsTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = GrainsTest.swift; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
202
194
  1E9A63171C506EFC00E28AE1 /* HammingExample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HammingExample.swift; sourceTree = "<group>"; };
203
195
  1E9A63181C506EFC00E28AE1 /* HammingTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = HammingTest.swift; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
204
- 1E9A631A1C506EFC00E28AE1 /* helloWorld.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = helloWorld.swift; sourceTree = "<group>"; };
205
- 1E9A631B1C506EFC00E28AE1 /* helloWorld.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = helloWorld.xcodeproj; sourceTree = "<group>"; };
206
196
  1E9A631E1C506EFC00E28AE1 /* helloWorldExample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = helloWorldExample.swift; sourceTree = "<group>"; };
207
- 1E9A63201C506EFC00E28AE1 /* helloWorldTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = helloWorldTest.swift; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
208
- 1E9A63211C506EFC00E28AE1 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
209
197
  1E9A63231C506EFC00E28AE1 /* KindergartenGardenExample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = KindergartenGardenExample.swift; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
210
198
  1E9A63241C506EFC00E28AE1 /* KindergartenGardenTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = KindergartenGardenTest.swift; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
211
199
  1E9A63261C506EFC00E28AE1 /* LeapExample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LeapExample.swift; sourceTree = "<group>"; };
@@ -277,6 +265,11 @@
277
265
  1EAF95E01C90C587009DDCB6 /* DominoesTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = DominoesTest.swift; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
278
266
  9D3155D21BA12FB1009A3991 /* xSwiftTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = xSwiftTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
279
267
  9D3155D51BA12FB1009A3991 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
268
+ A004DFC11DF8068A00800271 /* BeerSongExample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BeerSongExample.swift; path = "beer-song/BeerSongExample.swift"; sourceTree = "<group>"; };
269
+ A004DFC21DF8068A00800271 /* BeerSongTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BeerSongTest.swift; path = "beer-song/BeerSongTest.swift"; sourceTree = "<group>"; };
270
+ A0DBCBF71E0000B800E0DFBF /* helloWorldTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = helloWorldTest.swift; sourceTree = "<group>"; };
271
+ A0DBCBF91E00017E00E0DFBF /* SublistExample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SublistExample.swift; path = "sublist/SublistExample.swift"; sourceTree = "<group>"; };
272
+ A0DBCBFA1E00017E00E0DFBF /* SubListTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SubListTest.swift; path = "sublist/SubListTest.swift"; sourceTree = "<group>"; };
280
273
  E908CD451C6AD05F005D081E /* FoodChainExample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = FoodChainExample.swift; path = "food-chain/FoodChainExample.swift"; sourceTree = "<group>"; };
281
274
  E908CD471C6AD076005D081E /* FoodChainTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; name = FoodChainTest.swift; path = "food-chain/FoodChainTest.swift"; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
282
275
  E908CD531C6D7AD1005D081E /* PascalsTriangleExample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PascalsTriangleExample.swift; path = "pascals-triangle/PascalsTriangleExample.swift"; sourceTree = "<group>"; };
@@ -347,6 +340,7 @@
347
340
  1E9A62F21C506EFC00E28AE1 /* anagram */,
348
341
  1E9A62F51C506EFC00E28AE1 /* atbash-cipher */,
349
342
  1E9A62F81C506EFC00E28AE1 /* binary */,
343
+ A016F7A31DF0418D005640FF /* beer-song */,
350
344
  E94BDECB1C510DF4009318BB /* binary-search */,
351
345
  E9B4BE511C585B510080E585 /* binary-search-tree */,
352
346
  1E9A62FB1C506EFC00E28AE1 /* bob */,
@@ -404,6 +398,7 @@
404
398
  1E9A636A1C506EFC00E28AE1 /* simple-linked-list */,
405
399
  1E9A636D1C506EFC00E28AE1 /* space-age */,
406
400
  1E9A63701C506EFC00E28AE1 /* strain */,
401
+ A039F3BF1DFECAAC0091A2DF /* sublist */,
407
402
  1E9A63731C506EFC00E28AE1 /* sum-of-multiples */,
408
403
  1E9A63761C506EFC00E28AE1 /* tournament */,
409
404
  E9443F201DF5BFBF00A468B7 /* transpose */,
@@ -564,31 +559,12 @@
564
559
  1E9A63191C506EFC00E28AE1 /* hello-world */ = {
565
560
  isa = PBXGroup;
566
561
  children = (
567
- 1E9A631A1C506EFC00E28AE1 /* helloWorld.swift */,
568
- 1E9A631B1C506EFC00E28AE1 /* helloWorld.xcodeproj */,
569
562
  1E9A631E1C506EFC00E28AE1 /* helloWorldExample.swift */,
570
- 1E9A631F1C506EFC00E28AE1 /* helloWorldTest */,
563
+ A0DBCBF71E0000B800E0DFBF /* helloWorldTest.swift */,
571
564
  );
572
565
  path = "hello-world";
573
566
  sourceTree = "<group>";
574
567
  };
575
- 1E9A631C1C506EFC00E28AE1 /* Products */ = {
576
- isa = PBXGroup;
577
- children = (
578
- 1E9A63F21C506EFD00E28AE1 /* helloWorldTest.xctest */,
579
- );
580
- name = Products;
581
- sourceTree = "<group>";
582
- };
583
- 1E9A631F1C506EFC00E28AE1 /* helloWorldTest */ = {
584
- isa = PBXGroup;
585
- children = (
586
- 1E9A63201C506EFC00E28AE1 /* helloWorldTest.swift */,
587
- 1E9A63211C506EFC00E28AE1 /* Info.plist */,
588
- );
589
- path = helloWorldTest;
590
- sourceTree = "<group>";
591
- };
592
568
  1E9A63221C506EFC00E28AE1 /* kindergarten-garden */ = {
593
569
  isa = PBXGroup;
594
570
  children = (
@@ -938,6 +914,24 @@
938
914
  name = "Supporting Files";
939
915
  sourceTree = "<group>";
940
916
  };
917
+ A016F7A31DF0418D005640FF /* beer-song */ = {
918
+ isa = PBXGroup;
919
+ children = (
920
+ A004DFC11DF8068A00800271 /* BeerSongExample.swift */,
921
+ A004DFC21DF8068A00800271 /* BeerSongTest.swift */,
922
+ );
923
+ name = "beer-song";
924
+ sourceTree = "<group>";
925
+ };
926
+ A039F3BF1DFECAAC0091A2DF /* sublist */ = {
927
+ isa = PBXGroup;
928
+ children = (
929
+ A0DBCBF91E00017E00E0DFBF /* SublistExample.swift */,
930
+ A0DBCBFA1E00017E00E0DFBF /* SubListTest.swift */,
931
+ );
932
+ name = "sublist";
933
+ sourceTree = "<group>";
934
+ };
941
935
  E908CD431C6AD03C005D081E /* food-chain */ = {
942
936
  isa = PBXGroup;
943
937
  children = (
@@ -1162,12 +1156,6 @@
1162
1156
  mainGroup = 9D3155BB1BA12DC1009A3991;
1163
1157
  productRefGroup = 9D3155C51BA12DC2009A3991 /* Products */;
1164
1158
  projectDirPath = "";
1165
- projectReferences = (
1166
- {
1167
- ProductGroup = 1E9A631C1C506EFC00E28AE1 /* Products */;
1168
- ProjectRef = 1E9A631B1C506EFC00E28AE1 /* helloWorld.xcodeproj */;
1169
- },
1170
- );
1171
1159
  projectRoot = "";
1172
1160
  targets = (
1173
1161
  9D3155D11BA12FB1009A3991 /* xSwiftTests */,
@@ -1175,22 +1163,11 @@
1175
1163
  };
1176
1164
  /* End PBXProject section */
1177
1165
 
1178
- /* Begin PBXReferenceProxy section */
1179
- 1E9A63F21C506EFD00E28AE1 /* helloWorldTest.xctest */ = {
1180
- isa = PBXReferenceProxy;
1181
- fileType = wrapper.cfbundle;
1182
- path = helloWorldTest.xctest;
1183
- remoteRef = 1E9A63F11C506EFD00E28AE1 /* PBXContainerItemProxy */;
1184
- sourceTree = BUILT_PRODUCTS_DIR;
1185
- };
1186
- /* End PBXReferenceProxy section */
1187
-
1188
1166
  /* Begin PBXResourcesBuildPhase section */
1189
1167
  9D3155D01BA12FB1009A3991 /* Resources */ = {
1190
1168
  isa = PBXResourcesBuildPhase;
1191
1169
  buildActionMask = 2147483647;
1192
1170
  files = (
1193
- 1E9A63AB1C506EFD00E28AE1 /* Info.plist in Resources */,
1194
1171
  );
1195
1172
  runOnlyForDeploymentPostprocessing = 0;
1196
1173
  };
@@ -1231,6 +1208,7 @@
1231
1208
  E90D62081C653ADC00C266D3 /* PalindromeProductsTest.swift in Sources */,
1232
1209
  E90D62001C642EFB00C266D3 /* OcrNumbersTest.swift in Sources */,
1233
1210
  1E9A63EF1C506EFD00E28AE1 /* WordyTest.swift in Sources */,
1211
+ A0DBCBF81E0000B800E0DFBF /* helloWorldTest.swift in Sources */,
1234
1212
  1E9A63EA1C506EFD00E28AE1 /* TwelveDaysExample.swift in Sources */,
1235
1213
  E951B6BD1D466045009EB5B6 /* BracketPushExample.swift in Sources */,
1236
1214
  1E9A63BC1C506EFD00E28AE1 /* PerfectNumbersExample.swift in Sources */,
@@ -1249,6 +1227,7 @@
1249
1227
  E94BDED01C510E68009318BB /* BinarySearchTest.swift in Sources */,
1250
1228
  1E9A63961C506EFD00E28AE1 /* ClockExample.swift in Sources */,
1251
1229
  1E9A63BD1C506EFD00E28AE1 /* PerfectNumbersTest.swift in Sources */,
1230
+ A004DFC31DF8068A00800271 /* BeerSongExample.swift in Sources */,
1252
1231
  1E9A63E51C506EFD00E28AE1 /* TournamentTest.swift in Sources */,
1253
1232
  1E9A63A41C506EFD00E28AE1 /* GrainsExample.swift in Sources */,
1254
1233
  1E9A63DA1C506EFD00E28AE1 /* SimpleCipherExample.swift in Sources */,
@@ -1272,7 +1251,6 @@
1272
1251
  1E9A63DF1C506EFD00E28AE1 /* SpaceAgeTest.swift in Sources */,
1273
1252
  1E9A63B21C506EFD00E28AE1 /* LuhnExample.swift in Sources */,
1274
1253
  1E9A63991C506EFD00E28AE1 /* CryptoSquareTest.swift in Sources */,
1275
- 1E9A63A81C506EFD00E28AE1 /* helloWorld.swift in Sources */,
1276
1254
  1E9A63E81C506EFD00E28AE1 /* TrinaryExample.swift in Sources */,
1277
1255
  1E9A63C01C506EFD00E28AE1 /* PigLatinExample.swift in Sources */,
1278
1256
  1E9A63A21C506EFD00E28AE1 /* GradeSchoolExample.swift in Sources */,
@@ -1292,15 +1270,16 @@
1292
1270
  E9AFA1531C5945C9006AD72D /* HexadecimalTest.swift in Sources */,
1293
1271
  1E9A63AF1C506EFD00E28AE1 /* LeapTest.swift in Sources */,
1294
1272
  1E9A63901C506EFD00E28AE1 /* AtbashExample.swift in Sources */,
1273
+ A0DBCBFB1E00017E00E0DFBF /* SublistExample.swift in Sources */,
1295
1274
  1E9A63C61C506EFD00E28AE1 /* QueenAttackExample.swift in Sources */,
1296
1275
  E90DE39E1D3E818000F3B881 /* AllYourBaseTest.swift in Sources */,
1297
1276
  E908CD481C6AD076005D081E /* FoodChainTest.swift in Sources */,
1298
1277
  1E9A63D91C506EFD00E28AE1 /* SieveTest.swift in Sources */,
1299
- 1E9A63AA1C506EFD00E28AE1 /* helloWorldTest.swift in Sources */,
1300
1278
  1E9A63A71C506EFD00E28AE1 /* HammingTest.swift in Sources */,
1301
1279
  1E9A63D01C506EFD00E28AE1 /* RomanNumeralsExample.swift in Sources */,
1302
1280
  1E9A63971C506EFD00E28AE1 /* ClockTest.swift in Sources */,
1303
1281
  1E9A63C21C506EFD00E28AE1 /* PrimeFactorsExample.swift in Sources */,
1282
+ A004DFC41DF8068A00800271 /* BeerSongTest.swift in Sources */,
1304
1283
  1E9A63AD1C506EFD00E28AE1 /* KindergartenGardenTest.swift in Sources */,
1305
1284
  1E9A638D1C506EFD00E28AE1 /* AllergiesTest.swift in Sources */,
1306
1285
  E90D62061C653AC000C266D3 /* PalindromeProductsExample.swift in Sources */,
@@ -1313,6 +1292,7 @@
1313
1292
  1E9A63B51C506EFD00E28AE1 /* MeetupTest.swift in Sources */,
1314
1293
  1E9A639C1C506EFD00E28AE1 /* DifferenceOfSquaresExample.swift in Sources */,
1315
1294
  E94BDECF1C510E68009318BB /* BinarySearchExample.swift in Sources */,
1295
+ A0DBCBFC1E00017E00E0DFBF /* SubListTest.swift in Sources */,
1316
1296
  1E9A639F1C506EFD00E28AE1 /* EtlTest.swift in Sources */,
1317
1297
  E9AFA17E1C61B162006AD72D /* LargestSeriesProductTest.swift in Sources */,
1318
1298
  E9AFA1851C624FB7006AD72D /* MinesweeperExample.swift in Sources */,
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.0.3.8
4
+ version: 2.0.3.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katrina Owen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-12 00:00:00.000000000 Z
11
+ date: 2016-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -147,6 +147,8 @@ files:
147
147
  - common/exercises/bob/canonical-data.json
148
148
  - common/exercises/bob/description.md
149
149
  - common/exercises/bob/metadata.yml
150
+ - common/exercises/book-store/description.md
151
+ - common/exercises/book-store/metadata.yml
150
152
  - common/exercises/bowling/canonical-data.json
151
153
  - common/exercises/bowling/description.md
152
154
  - common/exercises/bowling/metadata.yml
@@ -1178,6 +1180,7 @@ files:
1178
1180
  - tracks/crystal/exercises/bracket-push/src/bracket_push.cr
1179
1181
  - tracks/crystal/exercises/bracket-push/src/example.cr
1180
1182
  - tracks/crystal/exercises/difference-of-squares/spec/difference_of_squares_spec.cr
1183
+ - tracks/crystal/exercises/difference-of-squares/src/difference_of_squares.cr
1181
1184
  - tracks/crystal/exercises/difference-of-squares/src/example.cr
1182
1185
  - tracks/crystal/exercises/forth/spec/forth_spec.cr
1183
1186
  - tracks/crystal/exercises/forth/src/example.cr
@@ -2400,6 +2403,7 @@ files:
2400
2403
  - tracks/fsharp/docs/img/xamarin-fsharp.jpg
2401
2404
  - tracks/fsharp/exercises/accumulate/AccumulateTest.fs
2402
2405
  - tracks/fsharp/exercises/accumulate/Example.fs
2406
+ - tracks/fsharp/exercises/accumulate/HINTS.md
2403
2407
  - tracks/fsharp/exercises/acronym/AcronymTest.fs
2404
2408
  - tracks/fsharp/exercises/acronym/Example.fs
2405
2409
  - tracks/fsharp/exercises/all-your-base/AllYourBaseTest.fs
@@ -2441,6 +2445,7 @@ files:
2441
2445
  - tracks/fsharp/exercises/custom-set/Example.fs
2442
2446
  - tracks/fsharp/exercises/diamond/DiamondTest.fs
2443
2447
  - tracks/fsharp/exercises/diamond/Example.fs
2448
+ - tracks/fsharp/exercises/diamond/HINTS.md
2444
2449
  - tracks/fsharp/exercises/difference-of-squares/DifferenceOfSquaresTest.fs
2445
2450
  - tracks/fsharp/exercises/difference-of-squares/Example.fs
2446
2451
  - tracks/fsharp/exercises/difference-of-squares/HINTS.md
@@ -2517,6 +2522,7 @@ files:
2517
2522
  - tracks/fsharp/exercises/pangram/Example.fs
2518
2523
  - tracks/fsharp/exercises/pangram/PangramTest.fs
2519
2524
  - tracks/fsharp/exercises/parallel-letter-frequency/Example.fs
2525
+ - tracks/fsharp/exercises/parallel-letter-frequency/HINTS.md
2520
2526
  - tracks/fsharp/exercises/parallel-letter-frequency/ParallelLetterFrequencyTest.fs
2521
2527
  - tracks/fsharp/exercises/pascals-triangle/Example.fs
2522
2528
  - tracks/fsharp/exercises/pascals-triangle/PascalsTriangleTest.fs
@@ -2527,6 +2533,7 @@ files:
2527
2533
  - tracks/fsharp/exercises/pig-latin/Example.fs
2528
2534
  - tracks/fsharp/exercises/pig-latin/PigLatinTest.fs
2529
2535
  - tracks/fsharp/exercises/poker/Example.fs
2536
+ - tracks/fsharp/exercises/poker/HINTS.md
2530
2537
  - tracks/fsharp/exercises/poker/PokerTest.fs
2531
2538
  - tracks/fsharp/exercises/pov/Example.fs
2532
2539
  - tracks/fsharp/exercises/pov/PovTest.fs
@@ -2543,6 +2550,7 @@ files:
2543
2550
  - tracks/fsharp/exercises/rail-fence-cipher/Example.fs
2544
2551
  - tracks/fsharp/exercises/rail-fence-cipher/RailFenceCipherTest.fs
2545
2552
  - tracks/fsharp/exercises/raindrops/Example.fs
2553
+ - tracks/fsharp/exercises/raindrops/HINTS.md
2546
2554
  - tracks/fsharp/exercises/raindrops/RaindropsTest.fs
2547
2555
  - tracks/fsharp/exercises/react/Example.fs
2548
2556
  - tracks/fsharp/exercises/react/ReactTest.fs
@@ -2580,6 +2588,7 @@ files:
2580
2588
  - tracks/fsharp/exercises/simple-linked-list/Example.fs
2581
2589
  - tracks/fsharp/exercises/simple-linked-list/SimpleLinkedListTest.fs
2582
2590
  - tracks/fsharp/exercises/space-age/Example.fs
2591
+ - tracks/fsharp/exercises/space-age/HINTS.md
2583
2592
  - tracks/fsharp/exercises/space-age/SpaceAgeTest.fs
2584
2593
  - tracks/fsharp/exercises/strain/Example.fs
2585
2594
  - tracks/fsharp/exercises/strain/StrainTest.fs
@@ -4924,6 +4933,11 @@ files:
4924
4933
  - tracks/ocaml/exercises/rna-transcription/example.ml
4925
4934
  - tracks/ocaml/exercises/rna-transcription/rna_transcription.mli
4926
4935
  - tracks/ocaml/exercises/rna-transcription/test.ml
4936
+ - tracks/ocaml/exercises/robot-name/.merlin
4937
+ - tracks/ocaml/exercises/robot-name/Makefile
4938
+ - tracks/ocaml/exercises/robot-name/example.ml
4939
+ - tracks/ocaml/exercises/robot-name/robot_name.mli
4940
+ - tracks/ocaml/exercises/robot-name/test.ml
4927
4941
  - tracks/ocaml/exercises/roman-numerals/.merlin
4928
4942
  - tracks/ocaml/exercises/roman-numerals/Makefile
4929
4943
  - tracks/ocaml/exercises/roman-numerals/_tags
@@ -4957,6 +4971,7 @@ files:
4957
4971
  - tracks/ocaml/img/icon.png
4958
4972
  - tracks/ocaml/tools/test-generator/.merlin
4959
4973
  - tracks/ocaml/tools/test-generator/Makefile
4974
+ - tracks/ocaml/tools/test-generator/README.md
4960
4975
  - tracks/ocaml/tools/test-generator/_tags
4961
4976
  - tracks/ocaml/tools/test-generator/interfaces/codegen.mli
4962
4977
  - tracks/ocaml/tools/test-generator/interfaces/controller.mli
@@ -4964,6 +4979,7 @@ files:
4964
4979
  - tracks/ocaml/tools/test-generator/interfaces/special_cases.mli
4965
4980
  - tracks/ocaml/tools/test-generator/interfaces/template.mli
4966
4981
  - tracks/ocaml/tools/test-generator/interfaces/utils.mli
4982
+ - tracks/ocaml/tools/test-generator/src/canonical_data_checker.ml
4967
4983
  - tracks/ocaml/tools/test-generator/src/codegen.ml
4968
4984
  - tracks/ocaml/tools/test-generator/src/controller.ml
4969
4985
  - tracks/ocaml/tools/test-generator/src/model.ml
@@ -4985,6 +5001,7 @@ files:
4985
5001
  - tracks/ocaml/tools/test-generator/templates/say/template.ml
4986
5002
  - tracks/ocaml/tools/test-generator/templates/word-count/template.ml
4987
5003
  - tracks/ocaml/tools/test-generator/test/all_tests.ml
5004
+ - tracks/ocaml/tools/test-generator/test/clock.json
4988
5005
  - tracks/ocaml/tools/test-generator/test/codegen_test.ml
4989
5006
  - tracks/ocaml/tools/test-generator/test/difference_of_squares.json
4990
5007
  - tracks/ocaml/tools/test-generator/test/hello_world.json
@@ -4996,6 +5013,7 @@ files:
4996
5013
  - tracks/ocaml/tools/test-generator/test/special_cases_test.ml
4997
5014
  - tracks/ocaml/tools/test-generator/test/template_test.ml
4998
5015
  - tracks/ocaml/tools/test-generator/test/utils_test.ml
5016
+ - tracks/ocaml/tools/test-generator/test/with-methods-key.json
4999
5017
  - tracks/pascal/.git
5000
5018
  - tracks/pascal/.gitignore
5001
5019
  - tracks/pascal/.travis.yml
@@ -5213,6 +5231,9 @@ files:
5213
5231
  - tracks/perl6/exercises/trinary/trinary.t
5214
5232
  - tracks/perl6/exercises/word-count/Example.pm
5215
5233
  - tracks/perl6/exercises/word-count/word_count.t
5234
+ - tracks/perl6/exercises/wordy/Example.p6
5235
+ - tracks/perl6/exercises/wordy/cases.json
5236
+ - tracks/perl6/exercises/wordy/wordy.t
5216
5237
  - tracks/perl6/img/icon.png
5217
5238
  - tracks/php/.editorconfig
5218
5239
  - tracks/php/.git
@@ -5780,7 +5801,7 @@ files:
5780
5801
  - tracks/ruby/docs/TESTS.md
5781
5802
  - tracks/ruby/exercises/accumulate/accumulate_test.rb
5782
5803
  - tracks/ruby/exercises/accumulate/example.rb
5783
- - tracks/ruby/exercises/acronym/.version
5804
+ - tracks/ruby/exercises/acronym/.meta/.version
5784
5805
  - tracks/ruby/exercises/acronym/acronym_test.rb
5785
5806
  - tracks/ruby/exercises/acronym/example.rb
5786
5807
  - tracks/ruby/exercises/acronym/example.tt
@@ -5788,11 +5809,11 @@ files:
5788
5809
  - tracks/ruby/exercises/all-your-base/example.rb
5789
5810
  - tracks/ruby/exercises/allergies/allergies_test.rb
5790
5811
  - tracks/ruby/exercises/allergies/example.rb
5791
- - tracks/ruby/exercises/alphametics/.version
5812
+ - tracks/ruby/exercises/alphametics/.meta/.version
5792
5813
  - tracks/ruby/exercises/alphametics/alphametics_test.rb
5793
5814
  - tracks/ruby/exercises/alphametics/example.rb
5794
5815
  - tracks/ruby/exercises/alphametics/example.tt
5795
- - tracks/ruby/exercises/anagram/.version
5816
+ - tracks/ruby/exercises/anagram/.meta/.version
5796
5817
  - tracks/ruby/exercises/anagram/anagram_test.rb
5797
5818
  - tracks/ruby/exercises/anagram/example.rb
5798
5819
  - tracks/ruby/exercises/anagram/example.tt
@@ -5804,43 +5825,43 @@ files:
5804
5825
  - tracks/ruby/exercises/binary-search-tree/example.rb
5805
5826
  - tracks/ruby/exercises/binary-search/binary_search_test.rb
5806
5827
  - tracks/ruby/exercises/binary-search/example.rb
5807
- - tracks/ruby/exercises/binary/.version
5828
+ - tracks/ruby/exercises/binary/.meta/.version
5808
5829
  - tracks/ruby/exercises/binary/binary_test.rb
5809
5830
  - tracks/ruby/exercises/binary/example.rb
5810
5831
  - tracks/ruby/exercises/binary/example.tt
5811
5832
  - tracks/ruby/exercises/bob/bob_test.rb
5812
5833
  - tracks/ruby/exercises/bob/example.rb
5813
- - tracks/ruby/exercises/bowling/.version
5834
+ - tracks/ruby/exercises/bowling/.meta/.version
5814
5835
  - tracks/ruby/exercises/bowling/bowling_test.rb
5815
5836
  - tracks/ruby/exercises/bowling/example.rb
5816
5837
  - tracks/ruby/exercises/bowling/example.tt
5817
- - tracks/ruby/exercises/bracket-push/.version
5838
+ - tracks/ruby/exercises/bracket-push/.meta/.version
5818
5839
  - tracks/ruby/exercises/bracket-push/bracket_push_test.rb
5819
5840
  - tracks/ruby/exercises/bracket-push/example.rb
5820
5841
  - tracks/ruby/exercises/bracket-push/example.tt
5821
5842
  - tracks/ruby/exercises/circular-buffer/circular_buffer_test.rb
5822
5843
  - tracks/ruby/exercises/circular-buffer/example.rb
5823
- - tracks/ruby/exercises/clock/.version
5844
+ - tracks/ruby/exercises/clock/.meta/.version
5824
5845
  - tracks/ruby/exercises/clock/clock_test.rb
5825
5846
  - tracks/ruby/exercises/clock/example.rb
5826
5847
  - tracks/ruby/exercises/clock/example.tt
5827
- - tracks/ruby/exercises/connect/.version
5848
+ - tracks/ruby/exercises/connect/.meta/.version
5828
5849
  - tracks/ruby/exercises/connect/connect_test.rb
5829
5850
  - tracks/ruby/exercises/connect/example.rb
5830
5851
  - tracks/ruby/exercises/connect/example.tt
5831
5852
  - tracks/ruby/exercises/crypto-square/crypto_square_test.rb
5832
5853
  - tracks/ruby/exercises/crypto-square/example.rb
5833
- - tracks/ruby/exercises/custom-set/.version
5854
+ - tracks/ruby/exercises/custom-set/.meta/.version
5834
5855
  - tracks/ruby/exercises/custom-set/custom_set_test.rb
5835
5856
  - tracks/ruby/exercises/custom-set/example.rb
5836
5857
  - tracks/ruby/exercises/custom-set/example.tt
5837
5858
  - tracks/ruby/exercises/diamond/diamond_test.rb
5838
5859
  - tracks/ruby/exercises/diamond/example.rb
5839
- - tracks/ruby/exercises/difference-of-squares/.version
5860
+ - tracks/ruby/exercises/difference-of-squares/.meta/.version
5840
5861
  - tracks/ruby/exercises/difference-of-squares/difference_of_squares_test.rb
5841
5862
  - tracks/ruby/exercises/difference-of-squares/example.rb
5842
5863
  - tracks/ruby/exercises/difference-of-squares/example.tt
5843
- - tracks/ruby/exercises/dominoes/.version
5864
+ - tracks/ruby/exercises/dominoes/.meta/.version
5844
5865
  - tracks/ruby/exercises/dominoes/dominoes_test.rb
5845
5866
  - tracks/ruby/exercises/dominoes/example.rb
5846
5867
  - tracks/ruby/exercises/dominoes/example.tt
@@ -5851,7 +5872,7 @@ files:
5851
5872
  - tracks/ruby/exercises/food-chain/example.rb
5852
5873
  - tracks/ruby/exercises/food-chain/food_chain_test.rb
5853
5874
  - tracks/ruby/exercises/food-chain/song.txt
5854
- - tracks/ruby/exercises/gigasecond/.version
5875
+ - tracks/ruby/exercises/gigasecond/.meta/.version
5855
5876
  - tracks/ruby/exercises/gigasecond/example.rb
5856
5877
  - tracks/ruby/exercises/gigasecond/example.tt
5857
5878
  - tracks/ruby/exercises/gigasecond/gigasecond_test.rb
@@ -5859,11 +5880,11 @@ files:
5859
5880
  - tracks/ruby/exercises/grade-school/grade_school_test.rb
5860
5881
  - tracks/ruby/exercises/grains/example.rb
5861
5882
  - tracks/ruby/exercises/grains/grains_test.rb
5862
- - tracks/ruby/exercises/hamming/.version
5883
+ - tracks/ruby/exercises/hamming/.meta/.version
5863
5884
  - tracks/ruby/exercises/hamming/example.rb
5864
5885
  - tracks/ruby/exercises/hamming/example.tt
5865
5886
  - tracks/ruby/exercises/hamming/hamming_test.rb
5866
- - tracks/ruby/exercises/hello-world/.version
5887
+ - tracks/ruby/exercises/hello-world/.meta/.version
5867
5888
  - tracks/ruby/exercises/hello-world/GETTING_STARTED.md
5868
5889
  - tracks/ruby/exercises/hello-world/example.rb
5869
5890
  - tracks/ruby/exercises/hello-world/example.tt
@@ -5872,17 +5893,17 @@ files:
5872
5893
  - tracks/ruby/exercises/hexadecimal/hexadecimal_test.rb
5873
5894
  - tracks/ruby/exercises/house/example.rb
5874
5895
  - tracks/ruby/exercises/house/house_test.rb
5875
- - tracks/ruby/exercises/isogram/.version
5896
+ - tracks/ruby/exercises/isogram/.meta/.version
5876
5897
  - tracks/ruby/exercises/isogram/example.rb
5877
5898
  - tracks/ruby/exercises/isogram/example.tt
5878
5899
  - tracks/ruby/exercises/isogram/isogram_test.rb
5879
5900
  - tracks/ruby/exercises/kindergarten-garden/example.rb
5880
5901
  - tracks/ruby/exercises/kindergarten-garden/kindergarten_garden_test.rb
5881
- - tracks/ruby/exercises/largest-series-product/.version
5902
+ - tracks/ruby/exercises/largest-series-product/.meta/.version
5882
5903
  - tracks/ruby/exercises/largest-series-product/example.rb
5883
5904
  - tracks/ruby/exercises/largest-series-product/example.tt
5884
5905
  - tracks/ruby/exercises/largest-series-product/largest_series_product_test.rb
5885
- - tracks/ruby/exercises/leap/.version
5906
+ - tracks/ruby/exercises/leap/.meta/.version
5886
5907
  - tracks/ruby/exercises/leap/example.rb
5887
5908
  - tracks/ruby/exercises/leap/example.tt
5888
5909
  - tracks/ruby/exercises/leap/leap_test.rb
@@ -5898,7 +5919,7 @@ files:
5898
5919
  - tracks/ruby/exercises/meetup/meetup_test.rb
5899
5920
  - tracks/ruby/exercises/minesweeper/example.rb
5900
5921
  - tracks/ruby/exercises/minesweeper/minesweeper_test.rb
5901
- - tracks/ruby/exercises/nth-prime/.version
5922
+ - tracks/ruby/exercises/nth-prime/.meta/.version
5902
5923
  - tracks/ruby/exercises/nth-prime/example.rb
5903
5924
  - tracks/ruby/exercises/nth-prime/example.tt
5904
5925
  - tracks/ruby/exercises/nth-prime/nth_prime_test.rb
@@ -5910,7 +5931,7 @@ files:
5910
5931
  - tracks/ruby/exercises/octal/octal_test.rb
5911
5932
  - tracks/ruby/exercises/palindrome-products/example.rb
5912
5933
  - tracks/ruby/exercises/palindrome-products/palindrome_products_test.rb
5913
- - tracks/ruby/exercises/pangram/.version
5934
+ - tracks/ruby/exercises/pangram/.meta/.version
5914
5935
  - tracks/ruby/exercises/pangram/example.rb
5915
5936
  - tracks/ruby/exercises/pangram/example.tt
5916
5937
  - tracks/ruby/exercises/pangram/pangram_test.rb
@@ -5934,17 +5955,17 @@ files:
5934
5955
  - tracks/ruby/exercises/proverb/proverb_test.rb
5935
5956
  - tracks/ruby/exercises/pythagorean-triplet/example.rb
5936
5957
  - tracks/ruby/exercises/pythagorean-triplet/pythagorean_triplet_test.rb
5937
- - tracks/ruby/exercises/queen-attack/.version
5958
+ - tracks/ruby/exercises/queen-attack/.meta/.version
5938
5959
  - tracks/ruby/exercises/queen-attack/example.rb
5939
5960
  - tracks/ruby/exercises/queen-attack/example.tt
5940
5961
  - tracks/ruby/exercises/queen-attack/queen_attack_test.rb
5941
5962
  - tracks/ruby/exercises/rail-fence-cipher/example.rb
5942
5963
  - tracks/ruby/exercises/rail-fence-cipher/rail_fence_cipher_test.rb
5943
- - tracks/ruby/exercises/raindrops/.version
5964
+ - tracks/ruby/exercises/raindrops/.meta/.version
5944
5965
  - tracks/ruby/exercises/raindrops/example.rb
5945
5966
  - tracks/ruby/exercises/raindrops/example.tt
5946
5967
  - tracks/ruby/exercises/raindrops/raindrops_test.rb
5947
- - tracks/ruby/exercises/rna-transcription/.version
5968
+ - tracks/ruby/exercises/rna-transcription/.meta/.version
5948
5969
  - tracks/ruby/exercises/rna-transcription/example.rb
5949
5970
  - tracks/ruby/exercises/rna-transcription/example.tt
5950
5971
  - tracks/ruby/exercises/rna-transcription/rna_transcription_test.rb
@@ -5952,11 +5973,11 @@ files:
5952
5973
  - tracks/ruby/exercises/robot-name/robot_name_test.rb
5953
5974
  - tracks/ruby/exercises/robot-simulator/example.rb
5954
5975
  - tracks/ruby/exercises/robot-simulator/robot_simulator_test.rb
5955
- - tracks/ruby/exercises/roman-numerals/.version
5976
+ - tracks/ruby/exercises/roman-numerals/.meta/.version
5956
5977
  - tracks/ruby/exercises/roman-numerals/example.rb
5957
5978
  - tracks/ruby/exercises/roman-numerals/example.tt
5958
5979
  - tracks/ruby/exercises/roman-numerals/roman_numerals_test.rb
5959
- - tracks/ruby/exercises/run-length-encoding/.version
5980
+ - tracks/ruby/exercises/run-length-encoding/.meta/.version
5960
5981
  - tracks/ruby/exercises/run-length-encoding/example.rb
5961
5982
  - tracks/ruby/exercises/run-length-encoding/example.tt
5962
5983
  - tracks/ruby/exercises/run-length-encoding/run_length_encoding_test.rb
@@ -5972,7 +5993,7 @@ files:
5972
5993
  - tracks/ruby/exercises/secret-handshake/secret_handshake_test.rb
5973
5994
  - tracks/ruby/exercises/series/example.rb
5974
5995
  - tracks/ruby/exercises/series/series_test.rb
5975
- - tracks/ruby/exercises/sieve/.version
5996
+ - tracks/ruby/exercises/sieve/.meta/.version
5976
5997
  - tracks/ruby/exercises/sieve/example.rb
5977
5998
  - tracks/ruby/exercises/sieve/example.tt
5978
5999
  - tracks/ruby/exercises/sieve/sieve_test.rb
@@ -5986,15 +6007,15 @@ files:
5986
6007
  - tracks/ruby/exercises/strain/strain_test.rb
5987
6008
  - tracks/ruby/exercises/sum-of-multiples/example.rb
5988
6009
  - tracks/ruby/exercises/sum-of-multiples/sum_of_multiples_test.rb
5989
- - tracks/ruby/exercises/tournament/.version
6010
+ - tracks/ruby/exercises/tournament/.meta/.version
5990
6011
  - tracks/ruby/exercises/tournament/example.rb
5991
6012
  - tracks/ruby/exercises/tournament/example.tt
5992
6013
  - tracks/ruby/exercises/tournament/tournament_test.rb
5993
- - tracks/ruby/exercises/transpose/.version
6014
+ - tracks/ruby/exercises/transpose/.meta/.version
5994
6015
  - tracks/ruby/exercises/transpose/example.rb
5995
6016
  - tracks/ruby/exercises/transpose/example.tt
5996
6017
  - tracks/ruby/exercises/transpose/transpose_test.rb
5997
- - tracks/ruby/exercises/triangle/.version
6018
+ - tracks/ruby/exercises/triangle/.meta/.version
5998
6019
  - tracks/ruby/exercises/triangle/example.rb
5999
6020
  - tracks/ruby/exercises/triangle/example.tt
6000
6021
  - tracks/ruby/exercises/triangle/triangle_test.rb
@@ -6003,11 +6024,11 @@ files:
6003
6024
  - tracks/ruby/exercises/twelve-days/example.rb
6004
6025
  - tracks/ruby/exercises/twelve-days/song.txt
6005
6026
  - tracks/ruby/exercises/twelve-days/twelve_days_test.rb
6006
- - tracks/ruby/exercises/two-bucket/.version
6027
+ - tracks/ruby/exercises/two-bucket/.meta/.version
6007
6028
  - tracks/ruby/exercises/two-bucket/example.rb
6008
6029
  - tracks/ruby/exercises/two-bucket/example.tt
6009
6030
  - tracks/ruby/exercises/two-bucket/two_bucket_test.rb
6010
- - tracks/ruby/exercises/word-count/.version
6031
+ - tracks/ruby/exercises/word-count/.meta/.version
6011
6032
  - tracks/ruby/exercises/word-count/example.rb
6012
6033
  - tracks/ruby/exercises/word-count/example.tt
6013
6034
  - tracks/ruby/exercises/word-count/word_count_test.rb
@@ -6173,6 +6194,11 @@ files:
6173
6194
  - tracks/rust/exercises/hexadecimal/Cargo.toml
6174
6195
  - tracks/rust/exercises/hexadecimal/example.rs
6175
6196
  - tracks/rust/exercises/hexadecimal/tests/hexadecimal.rs
6197
+ - tracks/rust/exercises/largest-series-product/.gitignore
6198
+ - tracks/rust/exercises/largest-series-product/Cargo.toml
6199
+ - tracks/rust/exercises/largest-series-product/HINTS.md
6200
+ - tracks/rust/exercises/largest-series-product/example.rs
6201
+ - tracks/rust/exercises/largest-series-product/tests/largest-series-product.rs
6176
6202
  - tracks/rust/exercises/leap/.gitignore
6177
6203
  - tracks/rust/exercises/leap/Cargo.lock
6178
6204
  - tracks/rust/exercises/leap/Cargo.toml
@@ -6327,7 +6353,7 @@ files:
6327
6353
  - tracks/scala/exercises/accumulate/build.sbt
6328
6354
  - tracks/scala/exercises/accumulate/example.scala
6329
6355
  - tracks/scala/exercises/accumulate/src/main/scala/.keep
6330
- - tracks/scala/exercises/accumulate/src/test/scala/accumulate_test.scala
6356
+ - tracks/scala/exercises/accumulate/src/test/scala/AccumulateTest.scala
6331
6357
  - tracks/scala/exercises/acronym/build.sbt
6332
6358
  - tracks/scala/exercises/acronym/example.scala
6333
6359
  - tracks/scala/exercises/acronym/src/main/scala/.keep
@@ -6339,7 +6365,7 @@ files:
6339
6365
  - tracks/scala/exercises/allergies/build.sbt
6340
6366
  - tracks/scala/exercises/allergies/example.scala
6341
6367
  - tracks/scala/exercises/allergies/src/main/scala/.keep
6342
- - tracks/scala/exercises/allergies/src/test/scala/allergies_test.scala
6368
+ - tracks/scala/exercises/allergies/src/test/scala/AllergiesTest.scala
6343
6369
  - tracks/scala/exercises/alphametics/build.sbt
6344
6370
  - tracks/scala/exercises/alphametics/example.scala
6345
6371
  - tracks/scala/exercises/alphametics/src/main/scala/.keep
@@ -6347,7 +6373,7 @@ files:
6347
6373
  - tracks/scala/exercises/anagram/build.sbt
6348
6374
  - tracks/scala/exercises/anagram/example.scala
6349
6375
  - tracks/scala/exercises/anagram/src/main/scala/.keep
6350
- - tracks/scala/exercises/anagram/src/test/scala/anagram_test.scala
6376
+ - tracks/scala/exercises/anagram/src/test/scala/AnagramTest.scala
6351
6377
  - tracks/scala/exercises/atbash-cipher/build.sbt
6352
6378
  - tracks/scala/exercises/atbash-cipher/example.scala
6353
6379
  - tracks/scala/exercises/atbash-cipher/src/main/scala/.keep
@@ -6365,11 +6391,11 @@ files:
6365
6391
  - tracks/scala/exercises/binary/build.sbt
6366
6392
  - tracks/scala/exercises/binary/example.scala
6367
6393
  - tracks/scala/exercises/binary/src/main/scala/.keep
6368
- - tracks/scala/exercises/binary/src/test/scala/binary_test.scala
6394
+ - tracks/scala/exercises/binary/src/test/scala/BinaryTest.scala
6369
6395
  - tracks/scala/exercises/bob/build.sbt
6370
6396
  - tracks/scala/exercises/bob/example.scala
6371
6397
  - tracks/scala/exercises/bob/src/main/scala/.keep
6372
- - tracks/scala/exercises/bob/src/test/scala/bob_test.scala
6398
+ - tracks/scala/exercises/bob/src/test/scala/BobTest.scala
6373
6399
  - tracks/scala/exercises/bowling/Example.scala
6374
6400
  - tracks/scala/exercises/bowling/build.sbt
6375
6401
  - tracks/scala/exercises/bowling/src/main/scala/Bowling.scala
@@ -6402,7 +6428,7 @@ files:
6402
6428
  - tracks/scala/exercises/difference-of-squares/build.sbt
6403
6429
  - tracks/scala/exercises/difference-of-squares/example.scala
6404
6430
  - tracks/scala/exercises/difference-of-squares/src/main/scala/.keep
6405
- - tracks/scala/exercises/difference-of-squares/src/test/scala/squares_test.scala
6431
+ - tracks/scala/exercises/difference-of-squares/src/test/scala/SquaresTest.scala
6406
6432
  - tracks/scala/exercises/dominoes/Example.scala
6407
6433
  - tracks/scala/exercises/dominoes/build.sbt
6408
6434
  - tracks/scala/exercises/dominoes/src/main/scala/Dominoes.scala
@@ -6410,7 +6436,7 @@ files:
6410
6436
  - tracks/scala/exercises/etl/build.sbt
6411
6437
  - tracks/scala/exercises/etl/example.scala
6412
6438
  - tracks/scala/exercises/etl/src/main/scala/.keep
6413
- - tracks/scala/exercises/etl/src/test/scala/etl_test.scala
6439
+ - tracks/scala/exercises/etl/src/test/scala/EtlTest.scala
6414
6440
  - tracks/scala/exercises/food-chain/build.sbt
6415
6441
  - tracks/scala/exercises/food-chain/example.scala
6416
6442
  - tracks/scala/exercises/food-chain/src/main/scala/.keep
@@ -6424,20 +6450,20 @@ files:
6424
6450
  - tracks/scala/exercises/gigasecond/build.sbt
6425
6451
  - tracks/scala/exercises/gigasecond/example.scala
6426
6452
  - tracks/scala/exercises/gigasecond/src/main/scala/.keep
6427
- - tracks/scala/exercises/gigasecond/src/test/scala/gigasecond_test.scala
6453
+ - tracks/scala/exercises/gigasecond/src/test/scala/GigasecondTest.scala
6428
6454
  - tracks/scala/exercises/grade-school/build.sbt
6429
6455
  - tracks/scala/exercises/grade-school/example.scala
6430
6456
  - tracks/scala/exercises/grade-school/src/main/scala/.keep
6431
- - tracks/scala/exercises/grade-school/src/test/scala/grade_school_test.scala
6457
+ - tracks/scala/exercises/grade-school/src/test/scala/GradeSchoolTest.scala
6432
6458
  - tracks/scala/exercises/grains/build.sbt
6433
6459
  - tracks/scala/exercises/grains/example.scala
6434
6460
  - tracks/scala/exercises/grains/src/main/scala/.keep
6435
- - tracks/scala/exercises/grains/src/test/scala/grains_test.scala
6461
+ - tracks/scala/exercises/grains/src/test/scala/GrainsTest.scala
6436
6462
  - tracks/scala/exercises/hamming/HINTS.md
6437
6463
  - tracks/scala/exercises/hamming/build.sbt
6438
6464
  - tracks/scala/exercises/hamming/example.scala
6439
6465
  - tracks/scala/exercises/hamming/src/main/scala/.keep
6440
- - tracks/scala/exercises/hamming/src/test/scala/hamming_test.scala
6466
+ - tracks/scala/exercises/hamming/src/test/scala/HammingTest.scala
6441
6467
  - tracks/scala/exercises/hello-world/HINTS.md
6442
6468
  - tracks/scala/exercises/hello-world/build.sbt
6443
6469
  - tracks/scala/exercises/hello-world/example.scala
@@ -6463,7 +6489,7 @@ files:
6463
6489
  - tracks/scala/exercises/leap/build.sbt
6464
6490
  - tracks/scala/exercises/leap/example.scala
6465
6491
  - tracks/scala/exercises/leap/src/main/scala/.keep
6466
- - tracks/scala/exercises/leap/src/test/scala/leap_test.scala
6492
+ - tracks/scala/exercises/leap/src/test/scala/LeapTest.scala
6467
6493
  - tracks/scala/exercises/lens-person/README.md
6468
6494
  - tracks/scala/exercises/lens-person/build.sbt
6469
6495
  - tracks/scala/exercises/lens-person/example.scala
@@ -6484,7 +6510,7 @@ files:
6484
6510
  - tracks/scala/exercises/meetup/build.sbt
6485
6511
  - tracks/scala/exercises/meetup/example.scala
6486
6512
  - tracks/scala/exercises/meetup/src/main/scala/.keep
6487
- - tracks/scala/exercises/meetup/src/test/scala/meetup_test.scala
6513
+ - tracks/scala/exercises/meetup/src/test/scala/MeetupTest.scala
6488
6514
  - tracks/scala/exercises/minesweeper/build.sbt
6489
6515
  - tracks/scala/exercises/minesweeper/example.scala
6490
6516
  - tracks/scala/exercises/minesweeper/src/main/scala/.keep
@@ -6497,7 +6523,7 @@ files:
6497
6523
  - tracks/scala/exercises/nucleotide-count/build.sbt
6498
6524
  - tracks/scala/exercises/nucleotide-count/example.scala
6499
6525
  - tracks/scala/exercises/nucleotide-count/src/main/scala/.keep
6500
- - tracks/scala/exercises/nucleotide-count/src/test/scala/nucleotide_count_test.scala
6526
+ - tracks/scala/exercises/nucleotide-count/src/test/scala/NucleotideCountTest.scala
6501
6527
  - tracks/scala/exercises/ocr-numbers/build.sbt
6502
6528
  - tracks/scala/exercises/ocr-numbers/example.scala
6503
6529
  - tracks/scala/exercises/ocr-numbers/src/main/scala/.keep
@@ -6513,7 +6539,8 @@ files:
6513
6539
  - tracks/scala/exercises/pangram/build.sbt
6514
6540
  - tracks/scala/exercises/pangram/example.scala
6515
6541
  - tracks/scala/exercises/pangram/src/main/scala/.keep
6516
- - tracks/scala/exercises/pangram/src/test/scala/PangramsTest.scala
6542
+ - tracks/scala/exercises/pangram/src/test/scala/PangramTest.scala
6543
+ - tracks/scala/exercises/parallel-letter-frequency/HINTS.md
6517
6544
  - tracks/scala/exercises/parallel-letter-frequency/build.sbt
6518
6545
  - tracks/scala/exercises/parallel-letter-frequency/example.scala
6519
6546
  - tracks/scala/exercises/parallel-letter-frequency/src/main/scala/.keep
@@ -6526,7 +6553,7 @@ files:
6526
6553
  - tracks/scala/exercises/phone-number/build.sbt
6527
6554
  - tracks/scala/exercises/phone-number/example.scala
6528
6555
  - tracks/scala/exercises/phone-number/src/main/scala/.keep
6529
- - tracks/scala/exercises/phone-number/src/test/scala/phone_number_test.scala
6556
+ - tracks/scala/exercises/phone-number/src/test/scala/PhoneNumberTest.scala
6530
6557
  - tracks/scala/exercises/pig-latin/build.sbt
6531
6558
  - tracks/scala/exercises/pig-latin/example.scala
6532
6559
  - tracks/scala/exercises/pig-latin/src/main/scala/.keep
@@ -6534,7 +6561,7 @@ files:
6534
6561
  - tracks/scala/exercises/prime-factors/build.sbt
6535
6562
  - tracks/scala/exercises/prime-factors/example.scala
6536
6563
  - tracks/scala/exercises/prime-factors/src/main/scala/.keep
6537
- - tracks/scala/exercises/prime-factors/src/test/scala/primefactors_test.scala
6564
+ - tracks/scala/exercises/prime-factors/src/test/scala/PrimefactorsTest.scala
6538
6565
  - tracks/scala/exercises/pythagorean-triplet/build.sbt
6539
6566
  - tracks/scala/exercises/pythagorean-triplet/example.scala
6540
6567
  - tracks/scala/exercises/pythagorean-triplet/src/main/scala/.keep
@@ -6546,16 +6573,16 @@ files:
6546
6573
  - tracks/scala/exercises/raindrops/build.sbt
6547
6574
  - tracks/scala/exercises/raindrops/example.scala
6548
6575
  - tracks/scala/exercises/raindrops/src/main/scala/.keep
6549
- - tracks/scala/exercises/raindrops/src/test/scala/raindrops_test.scala
6576
+ - tracks/scala/exercises/raindrops/src/test/scala/RaindropsTest.scala
6550
6577
  - tracks/scala/exercises/rna-transcription/build.sbt
6551
6578
  - tracks/scala/exercises/rna-transcription/example.scala
6552
6579
  - tracks/scala/exercises/rna-transcription/src/main/scala/.keep
6553
- - tracks/scala/exercises/rna-transcription/src/test/scala/transcription_test.scala
6580
+ - tracks/scala/exercises/rna-transcription/src/test/scala/RnaTranscriptionTest.scala
6554
6581
  - tracks/scala/exercises/robot-name/HINTS.md
6555
6582
  - tracks/scala/exercises/robot-name/build.sbt
6556
6583
  - tracks/scala/exercises/robot-name/example.scala
6557
6584
  - tracks/scala/exercises/robot-name/src/main/scala/.keep
6558
- - tracks/scala/exercises/robot-name/src/test/scala/robot_name_test.scala
6585
+ - tracks/scala/exercises/robot-name/src/test/scala/RobotNameTest.scala
6559
6586
  - tracks/scala/exercises/robot-simulator/build.sbt
6560
6587
  - tracks/scala/exercises/robot-simulator/example.scala
6561
6588
  - tracks/scala/exercises/robot-simulator/src/main/scala/.keep
@@ -6564,11 +6591,11 @@ files:
6564
6591
  - tracks/scala/exercises/roman-numerals/build.sbt
6565
6592
  - tracks/scala/exercises/roman-numerals/example.scala
6566
6593
  - tracks/scala/exercises/roman-numerals/src/main/scala/.keep
6567
- - tracks/scala/exercises/roman-numerals/src/test/scala/roman_numerals_test.scala
6594
+ - tracks/scala/exercises/roman-numerals/src/test/scala/RomanNumeralsTest.scala
6568
6595
  - tracks/scala/exercises/saddle-points/build.sbt
6569
6596
  - tracks/scala/exercises/saddle-points/example.scala
6570
6597
  - tracks/scala/exercises/saddle-points/src/main/scala/.keep
6571
- - tracks/scala/exercises/saddle-points/src/test/scala/SaddlePointsSpecs.scala
6598
+ - tracks/scala/exercises/saddle-points/src/test/scala/SaddlePointsTest.scala
6572
6599
  - tracks/scala/exercises/say/build.sbt
6573
6600
  - tracks/scala/exercises/say/example.scala
6574
6601
  - tracks/scala/exercises/say/src/main/scala/.keep
@@ -6576,7 +6603,7 @@ files:
6576
6603
  - tracks/scala/exercises/scrabble-score/build.sbt
6577
6604
  - tracks/scala/exercises/scrabble-score/example.scala
6578
6605
  - tracks/scala/exercises/scrabble-score/src/main/scala/.keep
6579
- - tracks/scala/exercises/scrabble-score/src/test/scala/scrabble_score_test.scala
6606
+ - tracks/scala/exercises/scrabble-score/src/test/scala/ScrabbleScoreTest.scala
6580
6607
  - tracks/scala/exercises/secret-handshake/build.sbt
6581
6608
  - tracks/scala/exercises/secret-handshake/example.scala
6582
6609
  - tracks/scala/exercises/secret-handshake/src/main/scala/.keep
@@ -6601,11 +6628,11 @@ files:
6601
6628
  - tracks/scala/exercises/space-age/build.sbt
6602
6629
  - tracks/scala/exercises/space-age/example.scala
6603
6630
  - tracks/scala/exercises/space-age/src/main/scala/.keep
6604
- - tracks/scala/exercises/space-age/src/test/scala/space_age_test.scala
6631
+ - tracks/scala/exercises/space-age/src/test/scala/SpaceAgeTest.scala
6605
6632
  - tracks/scala/exercises/sublist/build.sbt
6606
6633
  - tracks/scala/exercises/sublist/example.scala
6607
6634
  - tracks/scala/exercises/sublist/src/main/scala/.keep
6608
- - tracks/scala/exercises/sublist/src/test/scala/sublist_test.scala
6635
+ - tracks/scala/exercises/sublist/src/test/scala/SublistTest.scala
6609
6636
  - tracks/scala/exercises/sum-of-multiples/build.sbt
6610
6637
  - tracks/scala/exercises/sum-of-multiples/example.scala
6611
6638
  - tracks/scala/exercises/sum-of-multiples/src/main/scala/.keep
@@ -6614,7 +6641,7 @@ files:
6614
6641
  - tracks/scala/exercises/triangle/build.sbt
6615
6642
  - tracks/scala/exercises/triangle/example.scala
6616
6643
  - tracks/scala/exercises/triangle/src/main/scala/.keep
6617
- - tracks/scala/exercises/triangle/src/test/scala/triangle_test.scala
6644
+ - tracks/scala/exercises/triangle/src/test/scala/TriangleTest.scala
6618
6645
  - tracks/scala/exercises/trinary/build.sbt
6619
6646
  - tracks/scala/exercises/trinary/example.scala
6620
6647
  - tracks/scala/exercises/trinary/src/main/scala/.keep
@@ -6622,7 +6649,7 @@ files:
6622
6649
  - tracks/scala/exercises/word-count/build.sbt
6623
6650
  - tracks/scala/exercises/word-count/example.scala
6624
6651
  - tracks/scala/exercises/word-count/src/main/scala/.keep
6625
- - tracks/scala/exercises/word-count/src/test/scala/word_count_test.scala
6652
+ - tracks/scala/exercises/word-count/src/test/scala/WordCountTest.scala
6626
6653
  - tracks/scala/exercises/wordy/build.sbt
6627
6654
  - tracks/scala/exercises/wordy/example.scala
6628
6655
  - tracks/scala/exercises/wordy/src/main/scala/.keep
@@ -6750,6 +6777,8 @@ files:
6750
6777
  - tracks/swift/exercises/anagram/AnagramTest.swift
6751
6778
  - tracks/swift/exercises/atbash-cipher/AtbashExample.swift
6752
6779
  - tracks/swift/exercises/atbash-cipher/AtbashTest.swift
6780
+ - tracks/swift/exercises/beer-song/BeerSongExample.swift
6781
+ - tracks/swift/exercises/beer-song/BeerSongTest.swift
6753
6782
  - tracks/swift/exercises/binary-search-tree/BinarySearchTreeExample.swift
6754
6783
  - tracks/swift/exercises/binary-search-tree/BinarySearchTreeTest.swift
6755
6784
  - tracks/swift/exercises/binary-search/BinarySearchExample.swift
@@ -6784,12 +6813,8 @@ files:
6784
6813
  - tracks/swift/exercises/grains/GrainsTest.swift
6785
6814
  - tracks/swift/exercises/hamming/HammingExample.swift
6786
6815
  - tracks/swift/exercises/hamming/HammingTest.swift
6787
- - tracks/swift/exercises/hello-world/helloWorld.swift
6788
- - tracks/swift/exercises/hello-world/helloWorld.xcodeproj/project.pbxproj
6789
- - tracks/swift/exercises/hello-world/helloWorld.xcodeproj/project.xcworkspace/contents.xcworkspacedata
6790
- - tracks/swift/exercises/hello-world/helloWorldExample.swift
6791
- - tracks/swift/exercises/hello-world/helloWorldTest/Info.plist
6792
- - tracks/swift/exercises/hello-world/helloWorldTest/helloWorldTest.swift
6816
+ - tracks/swift/exercises/hello-world/HelloWorldExample.swift
6817
+ - tracks/swift/exercises/hello-world/helloWorldTest.swift
6793
6818
  - tracks/swift/exercises/hexadecimal/HexadecimalExample.swift
6794
6819
  - tracks/swift/exercises/hexadecimal/HexadecimalTest.swift
6795
6820
  - tracks/swift/exercises/house/HouseExample.swift
@@ -6870,6 +6895,8 @@ files:
6870
6895
  - tracks/swift/exercises/space-age/SpaceAgeTest.swift
6871
6896
  - tracks/swift/exercises/strain/StrainExample.swift
6872
6897
  - tracks/swift/exercises/strain/StrainTest.swift
6898
+ - tracks/swift/exercises/sublist/SubListTest.swift
6899
+ - tracks/swift/exercises/sublist/SublistExample.swift
6873
6900
  - tracks/swift/exercises/sum-of-multiples/SumOfMultiplesExample.swift
6874
6901
  - tracks/swift/exercises/sum-of-multiples/SumOfMultiplesTest.swift
6875
6902
  - tracks/swift/exercises/tournament/TournamentExample.swift
@@ -6887,6 +6914,17 @@ files:
6887
6914
  - tracks/swift/exercises/wordy/WordyExample.swift
6888
6915
  - tracks/swift/exercises/wordy/WordyTest.swift
6889
6916
  - tracks/swift/img/icon.png
6917
+ - tracks/swift/img/page_assets/001-splash.png
6918
+ - tracks/swift/img/page_assets/002-templateChooser.png
6919
+ - tracks/swift/img/page_assets/003-nameProject.jpg
6920
+ - tracks/swift/img/page_assets/004-saveProject.jpg
6921
+ - tracks/swift/img/page_assets/005-folderLayout.png
6922
+ - tracks/swift/img/page_assets/006-newProjectInitial.jpg
6923
+ - tracks/swift/img/page_assets/007-fileInspectorUpdate.png
6924
+ - tracks/swift/img/page_assets/008-templateChooserSwift.png
6925
+ - tracks/swift/img/page_assets/009-importTestSource.png
6926
+ - tracks/swift/img/page_assets/010-testsImportExample.png
6927
+ - tracks/swift/img/page_assets/011-finalLayoutExample.png
6890
6928
  - tracks/swift/xcodeProject/xSwift Tests/Info.plist
6891
6929
  - tracks/swift/xcodeProject/xSwift.xcodeproj/project.pbxproj
6892
6930
  - tracks/swift/xcodeProject/xSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata