trackler 2.2.1.6 → 2.2.1.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (236) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/c/README.md +27 -0
  4. data/tracks/coffeescript/config.json +1 -0
  5. data/tracks/coldfusion/config.json +1 -1
  6. data/tracks/crystal/README.md +27 -7
  7. data/tracks/crystal/config/maintainers.json +25 -0
  8. data/tracks/crystal/generator/spec/remote_data_file_spec.cr +1 -1
  9. data/tracks/crystal/generator/src/exercise_generator.cr +1 -1
  10. data/tracks/crystal/generator/src/remote_data_file.cr +2 -2
  11. data/tracks/csharp/config.json +1 -2
  12. data/tracks/csharp/config/maintainers.json +55 -0
  13. data/tracks/csharp/docs/EXERCISE_README_INSERT.md +1 -1
  14. data/tracks/csharp/exercises/accumulate/README.md +1 -1
  15. data/tracks/csharp/exercises/acronym/README.md +1 -1
  16. data/tracks/csharp/exercises/all-your-base/README.md +1 -1
  17. data/tracks/csharp/exercises/allergies/README.md +1 -1
  18. data/tracks/csharp/exercises/alphametics/README.md +1 -1
  19. data/tracks/csharp/exercises/anagram/README.md +1 -1
  20. data/tracks/csharp/exercises/atbash-cipher/README.md +1 -1
  21. data/tracks/csharp/exercises/bank-account/README.md +1 -1
  22. data/tracks/csharp/exercises/beer-song/README.md +1 -1
  23. data/tracks/csharp/exercises/binary-search-tree/README.md +1 -1
  24. data/tracks/csharp/exercises/binary-search/README.md +1 -1
  25. data/tracks/csharp/exercises/bob/README.md +1 -1
  26. data/tracks/csharp/exercises/book-store/README.md +1 -1
  27. data/tracks/csharp/exercises/bowling/README.md +1 -1
  28. data/tracks/csharp/exercises/bracket-push/README.md +1 -1
  29. data/tracks/csharp/exercises/change/README.md +1 -1
  30. data/tracks/csharp/exercises/circular-buffer/README.md +1 -1
  31. data/tracks/csharp/exercises/clock/README.md +1 -1
  32. data/tracks/csharp/exercises/connect/README.md +1 -1
  33. data/tracks/csharp/exercises/crypto-square/README.md +1 -1
  34. data/tracks/csharp/exercises/custom-set/README.md +1 -1
  35. data/tracks/csharp/exercises/diamond/README.md +1 -1
  36. data/tracks/csharp/exercises/difference-of-squares/README.md +1 -1
  37. data/tracks/csharp/exercises/diffie-hellman/README.md +1 -1
  38. data/tracks/csharp/exercises/dominoes/README.md +1 -1
  39. data/tracks/csharp/exercises/dot-dsl/README.md +1 -1
  40. data/tracks/csharp/exercises/error-handling/README.md +1 -1
  41. data/tracks/csharp/exercises/etl/README.md +1 -1
  42. data/tracks/csharp/exercises/flatten-array/README.md +1 -1
  43. data/tracks/csharp/exercises/food-chain/README.md +1 -1
  44. data/tracks/csharp/exercises/forth/README.md +1 -1
  45. data/tracks/csharp/exercises/gigasecond/README.md +1 -1
  46. data/tracks/csharp/exercises/go-counting/README.md +1 -1
  47. data/tracks/csharp/exercises/grade-school/README.md +1 -1
  48. data/tracks/csharp/exercises/grains/README.md +1 -1
  49. data/tracks/csharp/exercises/grep/README.md +1 -1
  50. data/tracks/csharp/exercises/hamming/README.md +1 -1
  51. data/tracks/csharp/exercises/hangman/README.md +1 -1
  52. data/tracks/csharp/exercises/hello-world/README.md +1 -1
  53. data/tracks/csharp/exercises/house/README.md +1 -1
  54. data/tracks/csharp/exercises/isogram/README.md +1 -1
  55. data/tracks/csharp/exercises/kindergarten-garden/README.md +1 -1
  56. data/tracks/csharp/exercises/largest-series-product/README.md +1 -1
  57. data/tracks/csharp/exercises/leap/README.md +1 -1
  58. data/tracks/csharp/exercises/ledger/README.md +1 -1
  59. data/tracks/csharp/exercises/linked-list/README.md +1 -1
  60. data/tracks/csharp/exercises/list-ops/README.md +1 -1
  61. data/tracks/csharp/exercises/luhn/README.md +1 -1
  62. data/tracks/csharp/exercises/markdown/README.md +1 -1
  63. data/tracks/csharp/exercises/matrix/README.md +1 -1
  64. data/tracks/csharp/exercises/meetup/README.md +1 -1
  65. data/tracks/csharp/exercises/minesweeper/README.md +1 -1
  66. data/tracks/csharp/exercises/nth-prime/README.md +1 -1
  67. data/tracks/csharp/exercises/nucleotide-count/README.md +1 -1
  68. data/tracks/csharp/exercises/ocr-numbers/README.md +1 -1
  69. data/tracks/csharp/exercises/palindrome-products/README.md +1 -1
  70. data/tracks/csharp/exercises/pangram/README.md +1 -1
  71. data/tracks/csharp/exercises/parallel-letter-frequency/README.md +1 -1
  72. data/tracks/csharp/exercises/pascals-triangle/README.md +1 -1
  73. data/tracks/csharp/exercises/perfect-numbers/README.md +1 -1
  74. data/tracks/csharp/exercises/phone-number/README.md +1 -1
  75. data/tracks/csharp/exercises/pig-latin/README.md +1 -1
  76. data/tracks/csharp/exercises/poker/README.md +1 -1
  77. data/tracks/csharp/exercises/pov/README.md +1 -1
  78. data/tracks/csharp/exercises/prime-factors/README.md +1 -1
  79. data/tracks/csharp/exercises/protein-translation/README.md +1 -1
  80. data/tracks/csharp/exercises/proverb/README.md +1 -1
  81. data/tracks/csharp/exercises/pythagorean-triplet/README.md +1 -1
  82. data/tracks/csharp/exercises/queen-attack/README.md +1 -1
  83. data/tracks/csharp/exercises/rail-fence-cipher/README.md +1 -1
  84. data/tracks/csharp/exercises/raindrops/README.md +1 -1
  85. data/tracks/csharp/exercises/react/README.md +1 -1
  86. data/tracks/csharp/exercises/rectangles/README.md +1 -1
  87. data/tracks/csharp/exercises/rna-transcription/README.md +1 -1
  88. data/tracks/csharp/exercises/robot-name/README.md +1 -1
  89. data/tracks/csharp/exercises/robot-simulator/README.md +1 -1
  90. data/tracks/csharp/exercises/roman-numerals/README.md +1 -1
  91. data/tracks/csharp/exercises/rotational-cipher/README.md +1 -1
  92. data/tracks/csharp/exercises/run-length-encoding/README.md +1 -1
  93. data/tracks/csharp/exercises/saddle-points/README.md +1 -1
  94. data/tracks/csharp/exercises/say/README.md +1 -1
  95. data/tracks/csharp/exercises/scale-generator/README.md +1 -1
  96. data/tracks/csharp/exercises/scrabble-score/README.md +1 -1
  97. data/tracks/csharp/exercises/secret-handshake/README.md +1 -1
  98. data/tracks/csharp/exercises/series/README.md +1 -1
  99. data/tracks/csharp/exercises/sgf-parsing/README.md +1 -1
  100. data/tracks/csharp/exercises/sieve/README.md +1 -1
  101. data/tracks/csharp/exercises/simple-cipher/README.md +1 -1
  102. data/tracks/csharp/exercises/simple-linked-list/README.md +1 -1
  103. data/tracks/csharp/exercises/space-age/README.md +1 -1
  104. data/tracks/csharp/exercises/strain/README.md +1 -1
  105. data/tracks/csharp/exercises/sublist/README.md +1 -1
  106. data/tracks/csharp/exercises/sum-of-multiples/README.md +1 -1
  107. data/tracks/csharp/exercises/tournament/README.md +1 -1
  108. data/tracks/csharp/exercises/transpose/README.md +1 -1
  109. data/tracks/csharp/exercises/tree-building/README.md +1 -1
  110. data/tracks/csharp/exercises/triangle/README.md +1 -1
  111. data/tracks/csharp/exercises/twelve-days/README.md +1 -1
  112. data/tracks/csharp/exercises/two-bucket/README.md +1 -1
  113. data/tracks/csharp/exercises/variable-length-quantity/README.md +1 -1
  114. data/tracks/csharp/exercises/word-count/README.md +1 -1
  115. data/tracks/csharp/exercises/word-search/README.md +1 -1
  116. data/tracks/csharp/exercises/wordy/README.md +1 -1
  117. data/tracks/csharp/exercises/zebra-puzzle/README.md +1 -1
  118. data/tracks/csharp/exercises/zipper/README.md +1 -1
  119. data/tracks/d/config.json +1 -0
  120. data/tracks/dart/config/maintainers.json +15 -0
  121. data/tracks/ecmascript/config.json +76 -193
  122. data/tracks/ecmascript/exercises/twelve-days/README.md +66 -0
  123. data/tracks/ecmascript/exercises/twelve-days/example.js +53 -0
  124. data/tracks/ecmascript/exercises/twelve-days/package.json +68 -0
  125. data/tracks/ecmascript/exercises/twelve-days/twelve-days.spec.js +106 -0
  126. data/tracks/factor/config.json +1 -1
  127. data/tracks/fsharp/config/maintainers.json +35 -0
  128. data/tracks/go/config.json +82 -38
  129. data/tracks/go/config/maintainers.json +13 -22
  130. data/tracks/go/exercises/bowling/cases_test.go +11 -11
  131. data/tracks/go/exercises/forth/cases_test.go +7 -7
  132. data/tracks/go/exercises/forth/example.go +1 -1
  133. data/tracks/go/exercises/forth/forth_test.go +1 -1
  134. data/tracks/go/exercises/hamming/cases_test.go +7 -7
  135. data/tracks/go/exercises/hamming/hamming.go +1 -1
  136. data/tracks/go/exercises/phone-number/cases_test.go +2 -7
  137. data/tracks/go/exercises/phone-number/example.go +1 -1
  138. data/tracks/go/exercises/phone-number/phone_number_test.go +1 -1
  139. data/tracks/go/exercises/rna-transcription/cases_test.go +7 -7
  140. data/tracks/go/exercises/secret-handshake/cases_test.go +1 -1
  141. data/tracks/groovy/config.json +1 -0
  142. data/tracks/haxe/config.json +1 -1
  143. data/tracks/java/.travis.yml +1 -1
  144. data/tracks/java/config/maintainers.json +20 -0
  145. data/tracks/java/exercises/custom-set/src/test/java/CustomSetTest.java +1 -1
  146. data/tracks/java/exercises/word-count/src/test/java/WordCountTest.java +1 -1
  147. data/tracks/javascript/config.json +229 -247
  148. data/tracks/kotlin/config/maintainers.json +35 -0
  149. data/tracks/lfe/config/maintainers.json +15 -0
  150. data/tracks/lisp/config/maintainers.json +55 -0
  151. data/tracks/ocaml/config.json +0 -5
  152. data/tracks/ocaml/config/maintainers.json +25 -0
  153. data/tracks/perl5/config/maintainers.json +25 -0
  154. data/tracks/perl6/config/maintainers.json +25 -0
  155. data/tracks/pony/config/maintainers.json +15 -0
  156. data/tracks/pony/exercises/atbash-cipher/example.pony +2 -2
  157. data/tracks/pony/exercises/beer-song/example.pony +1 -1
  158. data/tracks/pony/exercises/bob/example.pony +1 -1
  159. data/tracks/pony/exercises/difference-of-squares/example.pony +1 -1
  160. data/tracks/pony/exercises/hamming/test.pony +12 -12
  161. data/tracks/pony/exercises/pascals-triangle/example.pony +1 -1
  162. data/tracks/pony/exercises/pascals-triangle/test.pony +6 -6
  163. data/tracks/pony/exercises/rna-transcription/test.pony +3 -3
  164. data/tracks/pony/exercises/roman-numerals/test.pony +3 -3
  165. data/tracks/purescript/config/maintainers.json +35 -0
  166. data/tracks/r/config.json +140 -81
  167. data/tracks/r/exercises/collatz-conjecture/README.md +43 -0
  168. data/tracks/r/exercises/collatz-conjecture/collatz-conjecture.R +3 -0
  169. data/tracks/r/exercises/collatz-conjecture/example.R +13 -0
  170. data/tracks/r/exercises/collatz-conjecture/test_collatz-conjecture.R +28 -0
  171. data/tracks/r/exercises/nucleotide-count/README.md +43 -0
  172. data/tracks/r/exercises/nucleotide-count/example.R +17 -0
  173. data/tracks/r/exercises/nucleotide-count/nucleotide-count.R +3 -0
  174. data/tracks/r/exercises/nucleotide-count/test_nucleotide-count.R +51 -0
  175. data/tracks/r/exercises/pangram/README.md +25 -0
  176. data/tracks/r/exercises/pangram/example.R +14 -0
  177. data/tracks/r/exercises/pangram/pangram.R +3 -0
  178. data/tracks/r/exercises/pangram/test_pangram.R +42 -0
  179. data/tracks/r/exercises/triangle/.meta/hints.md +4 -0
  180. data/tracks/r/exercises/triangle/README.md +41 -0
  181. data/tracks/r/exercises/triangle/example.R +23 -0
  182. data/tracks/r/exercises/triangle/test_triangle.R +72 -0
  183. data/tracks/r/exercises/triangle/triangle.R +3 -0
  184. data/tracks/rust/config.json +32 -1
  185. data/tracks/rust/config/maintainers.json +1 -6
  186. data/tracks/rust/exercises/acronym/tests/acronym.rs +1 -1
  187. data/tracks/rust/exercises/beer-song/example.rs +1 -1
  188. data/tracks/rust/exercises/circular-buffer/example.rs +8 -10
  189. data/tracks/rust/exercises/circular-buffer/tests/circular-buffer.rs +2 -2
  190. data/tracks/rust/exercises/clock/.meta/hints.md +10 -0
  191. data/tracks/rust/exercises/clock/Cargo.lock +4 -0
  192. data/tracks/rust/exercises/clock/Cargo.toml +6 -0
  193. data/tracks/rust/exercises/clock/README.md +57 -0
  194. data/tracks/rust/exercises/clock/example.rs +32 -0
  195. data/tracks/{ocaml/exercises/point-mutations/example.ml → rust/exercises/clock/src/lib.rs} +0 -0
  196. data/tracks/rust/exercises/clock/tests/clock.rs +331 -0
  197. data/tracks/rust/exercises/custom-set/tests/custom-set.rs +3 -3
  198. data/tracks/rust/exercises/dominoes/example.rs +1 -1
  199. data/tracks/rust/exercises/grade-school/example.rs +1 -1
  200. data/tracks/rust/exercises/hamming/example.rs +1 -1
  201. data/tracks/rust/exercises/nth-prime/Cargo.lock +4 -0
  202. data/tracks/rust/exercises/nth-prime/Cargo.toml +6 -0
  203. data/tracks/rust/exercises/nth-prime/README.md +47 -0
  204. data/tracks/rust/exercises/nth-prime/example.rs +28 -0
  205. data/tracks/rust/exercises/nth-prime/src/lib.rs +0 -0
  206. data/tracks/rust/exercises/nth-prime/tests/nth-prime.rs +30 -0
  207. data/tracks/rust/exercises/parallel-letter-frequency/example.rs +1 -1
  208. data/tracks/rust/exercises/phone-number/example.rs +1 -1
  209. data/tracks/rust/exercises/pythagorean-triplet/Cargo.lock +4 -0
  210. data/tracks/rust/exercises/pythagorean-triplet/Cargo.toml +6 -0
  211. data/tracks/rust/exercises/pythagorean-triplet/README.md +56 -0
  212. data/tracks/rust/exercises/pythagorean-triplet/example.rs +11 -0
  213. data/tracks/rust/exercises/pythagorean-triplet/src/lib.rs +0 -0
  214. data/tracks/rust/exercises/pythagorean-triplet/tests/pythagorean-triplet.rs +6 -0
  215. data/tracks/rust/exercises/rna-transcription/tests/rna-transcription.rs +1 -1
  216. data/tracks/rust/exercises/robot-name/tests/robot-name.rs +2 -2
  217. data/tracks/rust/exercises/say/example.rs +4 -4
  218. data/tracks/rust/exercises/say/tests/say.rs +4 -4
  219. data/tracks/rust/exercises/tournament/example.rs +2 -2
  220. data/tracks/scala/config/maintainers.json +10 -6
  221. data/tracks/scala/exercises/bracket-push/example.scala +2 -2
  222. data/tracks/scala/exercises/bracket-push/src/test/scala/BracketPushTest.scala +74 -0
  223. data/tracks/scala/exercises/crypto-square/example.scala +9 -9
  224. data/tracks/scala/exercises/crypto-square/src/test/scala/CryptoSquareTest.scala +33 -41
  225. data/tracks/scala/testgen/src/main/scala/BracketPushTestGenerator.scala +9 -38
  226. data/tracks/scala/testgen/src/main/scala/CryptoSquareTestGenerator.scala +17 -0
  227. data/tracks/sml/config.json +1 -1
  228. data/tracks/swift/config/maintainers.json +35 -0
  229. data/tracks/swift/docs/ABOUT.md +15 -5
  230. data/tracks/vimscript/config/maintainers.json +35 -0
  231. metadata +58 -8
  232. data/tracks/ocaml/exercises/point-mutations/Makefile +0 -8
  233. data/tracks/ocaml/exercises/point-mutations/README.md +0 -81
  234. data/tracks/ocaml/exercises/point-mutations/dna.mli +0 -6
  235. data/tracks/scala/exercises/bracket-push/src/test/scala/BracketsTest.scala +0 -68
  236. data/tracks/scala/exercises/crypto-square/src/main/scala/CryptoSquare.scala +0 -11
@@ -0,0 +1,74 @@
1
+ import org.scalatest.{Matchers, FunSuite}
2
+
3
+ /** @version 1.1.0 */
4
+ class BracketPushTest extends FunSuite with Matchers {
5
+
6
+ test("paired square brackets") {
7
+ BracketPush.isPaired("[]") should be (true)
8
+ }
9
+
10
+ test("empty string") {
11
+ pending
12
+ BracketPush.isPaired("") should be (true)
13
+ }
14
+
15
+ test("unpaired brackets") {
16
+ pending
17
+ BracketPush.isPaired("[[") should be (false)
18
+ }
19
+
20
+ test("wrong ordered brackets") {
21
+ pending
22
+ BracketPush.isPaired("}{") should be (false)
23
+ }
24
+
25
+ test("wrong closing bracket") {
26
+ pending
27
+ BracketPush.isPaired("{]") should be (false)
28
+ }
29
+
30
+ test("paired with whitespace") {
31
+ pending
32
+ BracketPush.isPaired("{ }") should be (true)
33
+ }
34
+
35
+ test("simple nested brackets") {
36
+ pending
37
+ BracketPush.isPaired("{[]}") should be (true)
38
+ }
39
+
40
+ test("several paired brackets") {
41
+ pending
42
+ BracketPush.isPaired("{}[]") should be (true)
43
+ }
44
+
45
+ test("paired and nested brackets") {
46
+ pending
47
+ BracketPush.isPaired("([{}({}[])])") should be (true)
48
+ }
49
+
50
+ test("unopened closing brackets") {
51
+ pending
52
+ BracketPush.isPaired("{[)][]}") should be (false)
53
+ }
54
+
55
+ test("unpaired and nested brackets") {
56
+ pending
57
+ BracketPush.isPaired("([{])") should be (false)
58
+ }
59
+
60
+ test("paired and wrong nested brackets") {
61
+ pending
62
+ BracketPush.isPaired("[({]})") should be (false)
63
+ }
64
+
65
+ test("math expression") {
66
+ pending
67
+ BracketPush.isPaired("(((185 + 223.85) * 15) - 543)/2") should be (true)
68
+ }
69
+
70
+ test("complex latex expression") {
71
+ pending
72
+ BracketPush.isPaired("\\\\left(\\\\begin{array}{cc} \\\\frac{1}{3} & x\\\\\\\\ \\\\mathrm{e}^{x} &... x^2 \\\\end{array}\\\\right)") should be (true)
73
+ }
74
+ }
@@ -1,11 +1,11 @@
1
1
  object CryptoSquare {
2
- def normalizePlaintext(text: String): String =
2
+ def normalizedPlaintext(text: String): String =
3
3
  text.filter(c => c.isLetterOrDigit).toLowerCase
4
4
 
5
5
  def squareSize(text: String): Int = Math.ceil(Math.sqrt(text.length)).asInstanceOf[Int]
6
6
 
7
7
  def plaintextSegments(text: String): List[String] = {
8
- val normalized = normalizePlaintext(text)
8
+ val normalized = normalizedPlaintext(text)
9
9
  val size = squareSize(normalized)
10
10
  size match {
11
11
  case 0 => List.empty
@@ -13,13 +13,13 @@ object CryptoSquare {
13
13
  }
14
14
  }
15
15
 
16
- def ciphertext(text: String): String = {
16
+ def encoded(text: String): String = {
17
17
  val plainSegs = plaintextSegments(text)
18
18
 
19
- transpose(plainSegs).mkString
19
+ transpose(plainSegs).mkString.filter(c => !c.isWhitespace)
20
20
  }
21
21
 
22
- def normalizedCiphertext(text: String): String = {
22
+ def ciphertext(text: String): String = {
23
23
  val plainSegs = plaintextSegments(text)
24
24
 
25
25
  transpose(plainSegs).mkString(" ")
@@ -30,10 +30,10 @@ object CryptoSquare {
30
30
  List.empty
31
31
  } else {
32
32
  val size = texts.head.length
33
- // Scala's transpose must work on square Lists. So pad the List. Then
34
- // strip off the padding before return.
35
- val padded = texts.map(s => s.padTo(size, " "))
36
- padded.transpose.map(item => item.mkString.replaceAll(" ", ""))
33
+ // Scala's transpose must work on Lists where all elements are same size.
34
+ // So pad the List. Then strip off the padding before return.
35
+ val padded = texts.map(s => s.padTo(size, "\u0000"))
36
+ padded.transpose.map(item => item.mkString.replaceAll("\u0000", " "))
37
37
  }
38
38
  }
39
39
  }
@@ -1,72 +1,64 @@
1
- import org.scalatest.{Matchers, FlatSpec}
1
+ import org.scalatest.{Matchers, FunSuite}
2
2
 
3
- class CrytpoSquareTest extends FlatSpec with Matchers {
4
- it should "normalize away special characters" in {
5
- CryptoSquare.normalizePlaintext("s#!@$%pl\t\r\nunk") should equal("splunk")
3
+ /** @version 2.0.0 */
4
+ class CryptoSquareTest extends FunSuite with Matchers {
5
+
6
+ test("Lowercase") {
7
+ CryptoSquare.normalizedPlaintext("Hello") should be ("hello")
6
8
  }
7
9
 
8
- it should "normalize uppercase to lowercase" in {
10
+ test("Remove spaces") {
9
11
  pending
10
- CryptoSquare.normalizePlaintext("1, 2, 3 GO!") should equal("123go")
12
+ CryptoSquare.normalizedPlaintext("Hi there") should be ("hithere")
11
13
  }
12
14
 
15
+ test("Remove punctuation") {
16
+ pending
17
+ CryptoSquare.normalizedPlaintext("@1, 2%, 3 Go!") should be ("123go")
18
+ }
13
19
 
14
- it should "calc a square size for a perfect square" in {
20
+ test("empty plaintext results in an empty rectangle") {
15
21
  pending
16
- CryptoSquare.squareSize("1234") should equal(2)
17
- CryptoSquare.squareSize("123456789") should equal(3)
22
+ CryptoSquare.plaintextSegments("") should be (List())
18
23
  }
19
24
 
20
- it should "calc a square size when not a perfect square" in {
25
+ test("4 character plaintext results in an 2x2 rectangle") {
21
26
  pending
22
- CryptoSquare.squareSize("123456789abc") should equal(4)
23
- CryptoSquare.squareSize("123456789abcd") should equal(4)
27
+ CryptoSquare.plaintextSegments("Ab Cd") should be (List("ab", "cd"))
24
28
  }
25
29
 
26
- it should "not generate calc error when empty string" in {
30
+ test("9 character plaintext results in an 3x3 rectangle") {
27
31
  pending
28
- CryptoSquare.squareSize("") should equal(0)
32
+ CryptoSquare.plaintextSegments("This is fun!") should be (List("thi", "sis", "fun"))
29
33
  }
30
34
 
35
+ test("54 character plaintext results in an 8x7 rectangle") {
36
+ pending
37
+ CryptoSquare.plaintextSegments("If man was meant to stay on the ground, god would have given us roots.") should be (List("ifmanwas", "meanttos", "tayonthe", "groundgo", "dwouldha", "vegivenu", "sroots"))
38
+ }
31
39
 
32
- it should "build plaintext segments - all equal segment lengths" in {
40
+ test("empty plaintext results in an empty encode") {
33
41
  pending
34
- CryptoSquare.plaintextSegments("Never vex thine heart with idle woes.") should
35
- equal(List("neverv", "exthin", "eheart", "withid", "lewoes"))
42
+ CryptoSquare.encoded("") should be ("")
36
43
  }
37
44
 
38
- it should "build plaintext segments - last segment short" in {
45
+ test("Non-empty plaintext results in the combined plaintext segments") {
39
46
  pending
40
- CryptoSquare.plaintextSegments("ZOMG! ZOMBIES!!!") should
41
- equal(List("zomg", "zomb", "ies"))
47
+ CryptoSquare.encoded("If man was meant to stay on the ground, god would have given us roots.") should be ("imtgdvsfearwermayoogoanouuiontnnlvtwttddesaohghnsseoau")
42
48
  }
43
49
 
44
- it should "build cipher text" in {
50
+ test("empty plaintext results in an empty ciphertext") {
45
51
  pending
46
- CryptoSquare.ciphertext("Time is an illusion. Lunchtime doubly so.") should
47
- equal("tasneyinicdsmiohooelntuillibsuuml")
48
- CryptoSquare.ciphertext("We all know interspecies romance is weird.") should
49
- equal("wneiaweoreneawssciliprerlneoidktcms")
52
+ CryptoSquare.ciphertext("") should be ("")
50
53
  }
51
54
 
52
- it should "build normalized cipher text" in {
55
+ test("9 character plaintext results in 3 chunks of 3 characters") {
53
56
  pending
54
- CryptoSquare.normalizedCiphertext("Madness, and then illumination.") should
55
- equal("msemo aanin dnin ndla etlt shui")
56
- CryptoSquare.normalizedCiphertext("If man was meant to stay on the ground " +
57
- "god would have given us roots") should
58
- equal("imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau")
57
+ CryptoSquare.ciphertext("This is fun!") should be ("tsf hiu isn")
59
58
  }
60
59
 
61
- it should "not error on blank strings" in {
60
+ test("54 character plaintext results in 7 chunks, the last two padded with spaces") {
62
61
  pending
63
- CryptoSquare.ciphertext("") should
64
- equal("")
65
- CryptoSquare.ciphertext(" ") should
66
- equal("")
67
- CryptoSquare.normalizedCiphertext("") should
68
- equal("")
69
- CryptoSquare.normalizedCiphertext(" ") should
70
- equal("")
62
+ CryptoSquare.ciphertext("If man was meant to stay on the ground, god would have given us roots.") should be ("imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau ")
71
63
  }
72
- }
64
+ }
@@ -1,44 +1,15 @@
1
- import play.api.libs.json.Json
1
+ import java.io.File
2
2
 
3
- import scala.io.Source
4
-
5
- class BracketPushTestGenerator {
6
- implicit val testCaseReader = Json.reads[BracketTestCase]
7
-
8
- private val filename = "bracket-push.json"
9
- private val fileContents = Source.fromFile(filename).getLines.mkString
10
- private val json = Json.parse(fileContents)
11
-
12
- def write {
13
- print("import org.scalatest.{FunSuite, Matchers}" + System.lineSeparator())
14
- print(System.lineSeparator())
15
- print("class BracketsTest extends FunSuite with Matchers {" + System.lineSeparator())
16
-
17
- writeTestCases()
18
-
19
- print("}" + System.lineSeparator())
20
- }
21
-
22
- private def writeTestCases(): Unit = {
23
- val testCases = (json \ "cases").get.as[List[BracketTestCase]]
24
-
25
- testCases.foreach(tc => {
26
- print("\ttest(\"" + tc.description + "\") {" + System.lineSeparator())
27
- println("pending")
28
- println("Brackets.areBalanced(\"\"\"" + tc.input + "\"\"\") should be (" + tc.expected + ")")
29
-
30
- print("\t}" + System.lineSeparator())
31
- print(System.lineSeparator())
32
- })
33
- }
34
- }
35
-
36
- case class BracketTestCase(description: String,
37
- input: String,
38
- expected: Boolean)
3
+ import testgen.TestSuiteBuilder._
4
+ import testgen._
39
5
 
40
6
  object BracketPushTestGenerator {
41
7
  def main(args: Array[String]): Unit = {
42
- new BracketPushTestGenerator().write
8
+ val file = new File("src/main/resources/bracket-push.json")
9
+
10
+ val code = TestSuiteBuilder.build(file, fromLabeledTest("input"))
11
+ println(s"-------------")
12
+ println(code)
13
+ println(s"-------------")
43
14
  }
44
15
  }
@@ -0,0 +1,17 @@
1
+ import java.io.File
2
+
3
+ import testgen.TestSuiteBuilder._
4
+ import testgen._
5
+
6
+ object CryptoSquareTestGenerator {
7
+ def main(args: Array[String]): Unit = {
8
+ val file = new File("src/main/resources/crypto-square.json")
9
+
10
+ val code = TestSuiteBuilder.build(file,
11
+ fromLabeledTestAlt("normalizedPlaintext" -> Seq("plaintext"), "plaintextSegments" -> Seq("plaintext"),
12
+ "encoded" -> Seq("plaintext"), "ciphertext" -> Seq("plaintext")))
13
+ println(s"-------------")
14
+ println(code)
15
+ println(s"-------------")
16
+ }
17
+ }
@@ -2,7 +2,7 @@
2
2
  "language": "Standard ML",
3
3
  "checklist_issue": 8,
4
4
  "active": false,
5
- "test_pattern": "^test_*.sml$",
5
+ "test_pattern": "test_.*[.]sml$",
6
6
  "exercises": [
7
7
  {
8
8
  "uuid": "333c2cb9-f03c-473c-9eeb-096072a321b2",
@@ -0,0 +1,35 @@
1
+ {
2
+ "maintainers": [
3
+ {
4
+ "github_username": "hankturowski",
5
+ "show_on_website": false,
6
+ "alumnus": false,
7
+ "name": null,
8
+ "bio": null,
9
+ "link_text": null,
10
+ "link_url": null,
11
+ "avatar_url": null
12
+ },
13
+ {
14
+ "github_username": "masters3d",
15
+ "show_on_website": false,
16
+ "alumnus": false,
17
+ "name": null,
18
+ "bio": null,
19
+ "link_text": null,
20
+ "link_url": null,
21
+ "avatar_url": null
22
+ },
23
+ {
24
+ "github_username": "robtimp",
25
+ "show_on_website": false,
26
+ "alumnus": false,
27
+ "name": null,
28
+ "bio": null,
29
+ "link_text": null,
30
+ "link_url": null,
31
+ "avatar_url": null
32
+ }
33
+ ],
34
+ "docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md"
35
+ }
@@ -1,9 +1,19 @@
1
- Swift is a modern open source programming language that runs primarily on macOS and Linux. Swift was developed initially by Apple to interoperate with their key frameworks, Cocoa and CocoaTouch, both of which are mostly implemented in Objective-C.
1
+ Swift is a modern open source programming language that runs on macOS, Linux and on Windows using a linux subsystem.
2
2
 
3
- Swift is influenced by a large number of existing programming languages, and it incorporates concepts from a wide range of programming methods, everything from scripting to object oriented and functional programming. Apple refers to Swift as a protocol oriented programming language and has expressed the goal of eventually making Swift useful for everything from scripts to an operating system.
3
+ Swift was developed initially by Apple to interoperate with their key frameworks, Cocoa and CocoaTouch, both of which are mostly implemented in Objective-C.
4
4
 
5
- This [Swift Tour](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/GuidedTour.html) is an introduction the language.
5
+ Swift is influenced by a large number of existing programming languages, and it incorporates concepts from a wide range of programming methods. Everything from scripting to object oriented and functional programming.
6
6
 
7
- A [deeper overview](https://en.wikipedia.org/wiki/Swift_(programming_language)) of Swift from Wikipedia.
7
+ Apple refers to Swift as a "protocol oriented programming language" and has expressed the goal of eventually making Swift useful for everything from scripts to an operating system.
8
8
 
9
- Swift is documented in [The Swift Programming Language](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/index.html) and in the [iBooks Store](https://itunes.apple.com/us/book/swift-programming-language/id881256329?mt=11). The ePub is also available on [Swift.org](https://swift.org/documentation/#the-swift-programming-language).
9
+ ***
10
+
11
+ This [Swift Tour](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/GuidedTour.html) is an introduction the language on Apple's Public Developer Website.
12
+
13
+ ***
14
+
15
+ [Wikipedia's Swift Page](https://en.wikipedia.org/wiki/Swift_(programming_language)) giving a good, Wikipedia-styled overview.
16
+
17
+ ***
18
+
19
+ Swift is documented in [The Swift Programming Language](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/index.html) - again, on Apple's Public Developer Website - and in the [iBooks Store](https://itunes.apple.com/us/book/swift-programming-language/id881256329?mt=11). The ePub version is also available on [Swift.org](https://swift.org/documentation/#the-swift-programming-language).
@@ -0,0 +1,35 @@
1
+ {
2
+ "maintainers": [
3
+ {
4
+ "github_username": "kotp",
5
+ "show_on_website": false,
6
+ "alumnus": false,
7
+ "name": null,
8
+ "bio": null,
9
+ "link_text": null,
10
+ "link_url": null,
11
+ "avatar_url": null
12
+ },
13
+ {
14
+ "github_username": "mhinz",
15
+ "show_on_website": false,
16
+ "alumnus": false,
17
+ "name": null,
18
+ "bio": null,
19
+ "link_text": null,
20
+ "link_url": null,
21
+ "avatar_url": null
22
+ },
23
+ {
24
+ "github_username": "kevinlitchfield",
25
+ "show_on_website": false,
26
+ "alumnus": false,
27
+ "name": null,
28
+ "bio": null,
29
+ "link_text": null,
30
+ "link_url": null,
31
+ "avatar_url": null
32
+ }
33
+ ],
34
+ "docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md"
35
+ }
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.6
4
+ version: 2.2.1.7
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-07-29 00:00:00.000000000 Z
11
+ date: 2017-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -1634,6 +1634,7 @@ files:
1634
1634
  - tracks/crystal/bin/fetch-configlet
1635
1635
  - tracks/crystal/config.json
1636
1636
  - tracks/crystal/config/exercise_readme.go.tmpl
1637
+ - tracks/crystal/config/maintainers.json
1637
1638
  - tracks/crystal/docs/ABOUT.md
1638
1639
  - tracks/crystal/docs/EXERCISE_README_INSERT.md
1639
1640
  - tracks/crystal/docs/INSTALLATION.md
@@ -1764,6 +1765,7 @@ files:
1764
1765
  - tracks/csharp/circle.yml
1765
1766
  - tracks/csharp/config.json
1766
1767
  - tracks/csharp/config/exercise_readme.go.tmpl
1768
+ - tracks/csharp/config/maintainers.json
1767
1769
  - tracks/csharp/docs/ABOUT.md
1768
1770
  - tracks/csharp/docs/EXERCISE_README_INSERT.md
1769
1771
  - tracks/csharp/docs/INSTALLATION.md
@@ -2487,6 +2489,7 @@ files:
2487
2489
  - tracks/dart/bin/fetch-configlet
2488
2490
  - tracks/dart/config.json
2489
2491
  - tracks/dart/config/exercise_readme.go.tmpl
2492
+ - tracks/dart/config/maintainers.json
2490
2493
  - tracks/dart/docs/ABOUT.md
2491
2494
  - tracks/dart/docs/EXERCISE_README_INSERT.md
2492
2495
  - tracks/dart/docs/INSTALLATION.md
@@ -2988,6 +2991,10 @@ files:
2988
2991
  - tracks/ecmascript/exercises/trinary/example.js
2989
2992
  - tracks/ecmascript/exercises/trinary/package.json
2990
2993
  - tracks/ecmascript/exercises/trinary/trinary.spec.js
2994
+ - tracks/ecmascript/exercises/twelve-days/README.md
2995
+ - tracks/ecmascript/exercises/twelve-days/example.js
2996
+ - tracks/ecmascript/exercises/twelve-days/package.json
2997
+ - tracks/ecmascript/exercises/twelve-days/twelve-days.spec.js
2991
2998
  - tracks/ecmascript/exercises/two-bucket/README.md
2992
2999
  - tracks/ecmascript/exercises/two-bucket/example.js
2993
3000
  - tracks/ecmascript/exercises/two-bucket/package.json
@@ -4051,6 +4058,7 @@ files:
4051
4058
  - tracks/fsharp/circle.yml
4052
4059
  - tracks/fsharp/config.json
4053
4060
  - tracks/fsharp/config/exercise_readme.go.tmpl
4061
+ - tracks/fsharp/config/maintainers.json
4054
4062
  - tracks/fsharp/docs/ABOUT.md
4055
4063
  - tracks/fsharp/docs/EXERCISE_README_INSERT.md
4056
4064
  - tracks/fsharp/docs/INSTALLATION.md
@@ -6462,6 +6470,7 @@ files:
6462
6470
  - tracks/kotlin/bin/unit-tests.sh
6463
6471
  - tracks/kotlin/config.json
6464
6472
  - tracks/kotlin/config/exercise_readme.go.tmpl
6473
+ - tracks/kotlin/config/maintainers.json
6465
6474
  - tracks/kotlin/docs/ABOUT.md
6466
6475
  - tracks/kotlin/docs/EXERCISE_README_INSERT.md
6467
6476
  - tracks/kotlin/docs/INSTALLATION.md
@@ -6827,6 +6836,7 @@ files:
6827
6836
  - tracks/lfe/bin/fetch-configlet
6828
6837
  - tracks/lfe/config.json
6829
6838
  - tracks/lfe/config/exercise_readme.go.tmpl
6839
+ - tracks/lfe/config/maintainers.json
6830
6840
  - tracks/lfe/docs/ABOUT.md
6831
6841
  - tracks/lfe/docs/EXERCISE_README_INSERT.md
6832
6842
  - tracks/lfe/docs/INSTALLATION.md
@@ -7095,6 +7105,7 @@ files:
7095
7105
  - tracks/lisp/bin/xlisp-test.lisp
7096
7106
  - tracks/lisp/config.json
7097
7107
  - tracks/lisp/config/exercise_readme.go.tmpl
7108
+ - tracks/lisp/config/maintainers.json
7098
7109
  - tracks/lisp/docs/ABOUT.md
7099
7110
  - tracks/lisp/docs/EXERCISE_README_INSERT.md
7100
7111
  - tracks/lisp/docs/INSTALLATION.md
@@ -7790,6 +7801,7 @@ files:
7790
7801
  - tracks/ocaml/bin/fetch-configlet
7791
7802
  - tracks/ocaml/config.json
7792
7803
  - tracks/ocaml/config/exercise_readme.go.tmpl
7804
+ - tracks/ocaml/config/maintainers.json
7793
7805
  - tracks/ocaml/docs/ABOUT.md
7794
7806
  - tracks/ocaml/docs/EXERCISE_README_INSERT.md
7795
7807
  - tracks/ocaml/docs/INSTALLATION.md
@@ -7971,10 +7983,6 @@ files:
7971
7983
  - tracks/ocaml/exercises/phone-number/example.ml
7972
7984
  - tracks/ocaml/exercises/phone-number/phone_number.mli
7973
7985
  - tracks/ocaml/exercises/phone-number/test.ml
7974
- - tracks/ocaml/exercises/point-mutations/Makefile
7975
- - tracks/ocaml/exercises/point-mutations/README.md
7976
- - tracks/ocaml/exercises/point-mutations/dna.mli
7977
- - tracks/ocaml/exercises/point-mutations/example.ml
7978
7986
  - tracks/ocaml/exercises/prime-factors/.merlin
7979
7987
  - tracks/ocaml/exercises/prime-factors/Makefile
7980
7988
  - tracks/ocaml/exercises/prime-factors/README.md
@@ -8129,6 +8137,7 @@ files:
8129
8137
  - tracks/perl5/bin/fetch-configlet
8130
8138
  - tracks/perl5/config.json
8131
8139
  - tracks/perl5/config/exercise_readme.go.tmpl
8140
+ - tracks/perl5/config/maintainers.json
8132
8141
  - tracks/perl5/cpanfile
8133
8142
  - tracks/perl5/docs/ABOUT.md
8134
8143
  - tracks/perl5/docs/EXERCISE_README_INSERT.md
@@ -8369,6 +8378,7 @@ files:
8369
8378
  - tracks/perl6/bin/fetch-configlet
8370
8379
  - tracks/perl6/config.json
8371
8380
  - tracks/perl6/config/exercise_readme.go.tmpl
8381
+ - tracks/perl6/config/maintainers.json
8372
8382
  - tracks/perl6/docs/ABOUT.md
8373
8383
  - tracks/perl6/docs/EXERCISE_README_INSERT.md
8374
8384
  - tracks/perl6/docs/INSTALLATION.md
@@ -8732,6 +8742,7 @@ files:
8732
8742
  - tracks/pony/bin/test-exercises
8733
8743
  - tracks/pony/config.json
8734
8744
  - tracks/pony/config/exercise_readme.go.tmpl
8745
+ - tracks/pony/config/maintainers.json
8735
8746
  - tracks/pony/docs/ABOUT.md
8736
8747
  - tracks/pony/docs/EXERCISE_README_INSERT.md
8737
8748
  - tracks/pony/docs/INSTALLATION.md
@@ -8863,6 +8874,7 @@ files:
8863
8874
  - tracks/purescript/bin/test.sh
8864
8875
  - tracks/purescript/config.json
8865
8876
  - tracks/purescript/config/exercise_readme.go.tmpl
8877
+ - tracks/purescript/config/maintainers.json
8866
8878
  - tracks/purescript/docs/ABOUT.md
8867
8879
  - tracks/purescript/docs/EXERCISE_README_INSERT.md
8868
8880
  - tracks/purescript/docs/INSTALLATION.md
@@ -9388,6 +9400,10 @@ files:
9388
9400
  - tracks/r/exercises/bob/bob.R
9389
9401
  - tracks/r/exercises/bob/example.R
9390
9402
  - tracks/r/exercises/bob/test_bob.R
9403
+ - tracks/r/exercises/collatz-conjecture/README.md
9404
+ - tracks/r/exercises/collatz-conjecture/collatz-conjecture.R
9405
+ - tracks/r/exercises/collatz-conjecture/example.R
9406
+ - tracks/r/exercises/collatz-conjecture/test_collatz-conjecture.R
9391
9407
  - tracks/r/exercises/difference-of-squares/README.md
9392
9408
  - tracks/r/exercises/difference-of-squares/difference-of-squares.R
9393
9409
  - tracks/r/exercises/difference-of-squares/example.R
@@ -9420,6 +9436,14 @@ files:
9420
9436
  - tracks/r/exercises/luhn/example.R
9421
9437
  - tracks/r/exercises/luhn/luhn.R
9422
9438
  - tracks/r/exercises/luhn/test_luhn.R
9439
+ - tracks/r/exercises/nucleotide-count/README.md
9440
+ - tracks/r/exercises/nucleotide-count/example.R
9441
+ - tracks/r/exercises/nucleotide-count/nucleotide-count.R
9442
+ - tracks/r/exercises/nucleotide-count/test_nucleotide-count.R
9443
+ - tracks/r/exercises/pangram/README.md
9444
+ - tracks/r/exercises/pangram/example.R
9445
+ - tracks/r/exercises/pangram/pangram.R
9446
+ - tracks/r/exercises/pangram/test_pangram.R
9423
9447
  - tracks/r/exercises/pascals-triangle/README.md
9424
9448
  - tracks/r/exercises/pascals-triangle/example.R
9425
9449
  - tracks/r/exercises/pascals-triangle/pascals-triangle.R
@@ -9472,6 +9496,11 @@ files:
9472
9496
  - tracks/r/exercises/tournament/example.R
9473
9497
  - tracks/r/exercises/tournament/test_tournament.R
9474
9498
  - tracks/r/exercises/tournament/tournament.R
9499
+ - tracks/r/exercises/triangle/.meta/hints.md
9500
+ - tracks/r/exercises/triangle/README.md
9501
+ - tracks/r/exercises/triangle/example.R
9502
+ - tracks/r/exercises/triangle/test_triangle.R
9503
+ - tracks/r/exercises/triangle/triangle.R
9475
9504
  - tracks/r/exercises/word-count/README.md
9476
9505
  - tracks/r/exercises/word-count/example.R
9477
9506
  - tracks/r/exercises/word-count/test_word-count.R
@@ -10134,6 +10163,13 @@ files:
10134
10163
  - tracks/rust/exercises/circular-buffer/example.rs
10135
10164
  - tracks/rust/exercises/circular-buffer/src/lib.rs
10136
10165
  - tracks/rust/exercises/circular-buffer/tests/circular-buffer.rs
10166
+ - tracks/rust/exercises/clock/.meta/hints.md
10167
+ - tracks/rust/exercises/clock/Cargo.lock
10168
+ - tracks/rust/exercises/clock/Cargo.toml
10169
+ - tracks/rust/exercises/clock/README.md
10170
+ - tracks/rust/exercises/clock/example.rs
10171
+ - tracks/rust/exercises/clock/src/lib.rs
10172
+ - tracks/rust/exercises/clock/tests/clock.rs
10137
10173
  - tracks/rust/exercises/custom-set/.gitignore
10138
10174
  - tracks/rust/exercises/custom-set/Cargo.lock
10139
10175
  - tracks/rust/exercises/custom-set/Cargo.toml
@@ -10254,6 +10290,12 @@ files:
10254
10290
  - tracks/rust/exercises/minesweeper/example.rs
10255
10291
  - tracks/rust/exercises/minesweeper/src/lib.rs
10256
10292
  - tracks/rust/exercises/minesweeper/tests/minesweeper.rs
10293
+ - tracks/rust/exercises/nth-prime/Cargo.lock
10294
+ - tracks/rust/exercises/nth-prime/Cargo.toml
10295
+ - tracks/rust/exercises/nth-prime/README.md
10296
+ - tracks/rust/exercises/nth-prime/example.rs
10297
+ - tracks/rust/exercises/nth-prime/src/lib.rs
10298
+ - tracks/rust/exercises/nth-prime/tests/nth-prime.rs
10257
10299
  - tracks/rust/exercises/nucleotide-codons/.gitignore
10258
10300
  - tracks/rust/exercises/nucleotide-codons/Cargo.lock
10259
10301
  - tracks/rust/exercises/nucleotide-codons/Cargo.toml
@@ -10330,6 +10372,12 @@ files:
10330
10372
  - tracks/rust/exercises/proverb/example.rs
10331
10373
  - tracks/rust/exercises/proverb/src/lib.rs
10332
10374
  - tracks/rust/exercises/proverb/tests/proverb.rs
10375
+ - tracks/rust/exercises/pythagorean-triplet/Cargo.lock
10376
+ - tracks/rust/exercises/pythagorean-triplet/Cargo.toml
10377
+ - tracks/rust/exercises/pythagorean-triplet/README.md
10378
+ - tracks/rust/exercises/pythagorean-triplet/example.rs
10379
+ - tracks/rust/exercises/pythagorean-triplet/src/lib.rs
10380
+ - tracks/rust/exercises/pythagorean-triplet/tests/pythagorean-triplet.rs
10333
10381
  - tracks/rust/exercises/queen-attack/.gitignore
10334
10382
  - tracks/rust/exercises/queen-attack/Cargo.lock
10335
10383
  - tracks/rust/exercises/queen-attack/Cargo.toml
@@ -10576,7 +10624,7 @@ files:
10576
10624
  - tracks/scala/exercises/bracket-push/build.sbt
10577
10625
  - tracks/scala/exercises/bracket-push/example.scala
10578
10626
  - tracks/scala/exercises/bracket-push/src/main/scala/.keep
10579
- - tracks/scala/exercises/bracket-push/src/test/scala/BracketsTest.scala
10627
+ - tracks/scala/exercises/bracket-push/src/test/scala/BracketPushTest.scala
10580
10628
  - tracks/scala/exercises/change/README.md
10581
10629
  - tracks/scala/exercises/change/build.sbt
10582
10630
  - tracks/scala/exercises/change/example.scala
@@ -10597,7 +10645,6 @@ files:
10597
10645
  - tracks/scala/exercises/crypto-square/build.sbt
10598
10646
  - tracks/scala/exercises/crypto-square/example.scala
10599
10647
  - tracks/scala/exercises/crypto-square/src/main/scala/.keep
10600
- - tracks/scala/exercises/crypto-square/src/main/scala/CryptoSquare.scala
10601
10648
  - tracks/scala/exercises/crypto-square/src/test/scala/CryptoSquareTest.scala
10602
10649
  - tracks/scala/exercises/custom-set/README.md
10603
10650
  - tracks/scala/exercises/custom-set/build.sbt
@@ -10960,6 +11007,7 @@ files:
10960
11007
  - tracks/scala/testgen/src/main/scala/BookStoreTestGenerator.scala
10961
11008
  - tracks/scala/testgen/src/main/scala/BowlingTestGenerator.scala
10962
11009
  - tracks/scala/testgen/src/main/scala/BracketPushTestGenerator.scala
11010
+ - tracks/scala/testgen/src/main/scala/CryptoSquareTestGenerator.scala
10963
11011
  - tracks/scala/testgen/src/main/scala/CustomSetTestGenerator.scala
10964
11012
  - tracks/scala/testgen/src/main/scala/DifferenceOfSquaresTestGenerator.scala
10965
11013
  - tracks/scala/testgen/src/main/scala/EtlTestGenerator.scala
@@ -11127,6 +11175,7 @@ files:
11127
11175
  - tracks/swift/circle.yml
11128
11176
  - tracks/swift/config.json
11129
11177
  - tracks/swift/config/exercise_readme.go.tmpl
11178
+ - tracks/swift/config/maintainers.json
11130
11179
  - tracks/swift/docs/ABOUT.md
11131
11180
  - tracks/swift/docs/EXERCISE_README_INSERT.md
11132
11181
  - tracks/swift/docs/INSTALLATION.md
@@ -11879,6 +11928,7 @@ files:
11879
11928
  - tracks/vimscript/bin/pre-push
11880
11929
  - tracks/vimscript/config.json
11881
11930
  - tracks/vimscript/config/exercise_readme.go.tmpl
11931
+ - tracks/vimscript/config/maintainers.json
11882
11932
  - tracks/vimscript/docs/ABOUT.md
11883
11933
  - tracks/vimscript/docs/EXERCISE_README_INSERT.md
11884
11934
  - tracks/vimscript/docs/INSTALLATION.md