trackler 2.2.1.45 → 2.2.1.46

Sign up to get free protection for your applications and to get access to all the features.
Files changed (508) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/complex-numbers/description.md +27 -0
  4. data/problem-specifications/exercises/crypto-square/canonical-data.json +39 -43
  5. data/problem-specifications/exercises/crypto-square/description.md +6 -4
  6. data/problem-specifications/exercises/hamming/canonical-data.json +5 -5
  7. data/problem-specifications/exercises/kindergarten-garden/description.md +10 -10
  8. data/problem-specifications/exercises/leap/canonical-data.json +2 -2
  9. data/problem-specifications/exercises/markdown/canonical-data.json +2 -2
  10. data/problem-specifications/exercises/nucleotide-count/canonical-data.json +12 -1
  11. data/problem-specifications/exercises/pangram/canonical-data.json +7 -1
  12. data/problem-specifications/exercises/queen-attack/canonical-data.json +83 -26
  13. data/problem-specifications/exercises/space-age/description.md +1 -2
  14. data/problem-specifications/exercises/zipper/canonical-data.json +671 -0
  15. data/tracks/bash/config.json +13 -1
  16. data/tracks/bash/exercises/atbash-cipher/README.md +45 -0
  17. data/tracks/bash/exercises/atbash-cipher/atbash_cipher_tests.sh +73 -0
  18. data/tracks/bash/exercises/atbash-cipher/example.sh +14 -0
  19. data/tracks/bash/exercises/gigasecond/.meta/hints.md +33 -0
  20. data/tracks/bash/exercises/two-fer/README.md +0 -22
  21. data/tracks/c/exercises/allergies/src/allergies.h +9 -9
  22. data/tracks/c/exercises/allergies/src/example.c +2 -2
  23. data/tracks/c/exercises/allergies/src/example.h +9 -9
  24. data/tracks/c/exercises/allergies/test/test_allergies.c +34 -34
  25. data/tracks/c/exercises/clock/test/test_clock.c +0 -52
  26. data/tracks/c/exercises/meetup/test/test_meetup.c +604 -114
  27. data/tracks/c/exercises/nucleotide-count/src/example.c +10 -10
  28. data/tracks/c/exercises/palindrome-products/src/example.c +8 -8
  29. data/tracks/c/exercises/palindrome-products/src/example.h +5 -5
  30. data/tracks/c/exercises/palindrome-products/test/test_palindrome_products.c +8 -6
  31. data/tracks/c/exercises/robot-simulator/src/example.c +19 -19
  32. data/tracks/c/exercises/robot-simulator/src/robot_simulator.h +24 -24
  33. data/tracks/c/exercises/robot-simulator/test/test_robot_simulator.c +35 -34
  34. data/tracks/c/exercises/series/src/example.c +10 -10
  35. data/tracks/c/exercises/series/src/series.h +5 -5
  36. data/tracks/c/exercises/series/test/test_series.c +77 -30
  37. data/tracks/c/exercises/sieve/src/example.c +17 -17
  38. data/tracks/c/exercises/sieve/src/sieve.h +2 -2
  39. data/tracks/c/exercises/sieve/test/test_sieve.c +6 -6
  40. data/tracks/c/exercises/space-age/src/example.c +1 -1
  41. data/tracks/c/exercises/space-age/src/example.h +3 -3
  42. data/tracks/c/exercises/space-age/test/test_space_age.c +2 -0
  43. data/tracks/c/exercises/sum-of-multiples/src/example.c +3 -1
  44. data/tracks/c/exercises/sum-of-multiples/test/test_sum_of_multiples.c +17 -0
  45. data/tracks/c/exercises/triangle/src/example.c +4 -4
  46. data/tracks/c/exercises/triangle/src/example.h +4 -4
  47. data/tracks/c/exercises/triangle/src/triangle.h +1 -1
  48. data/tracks/c/exercises/triangle/test/test_triangle.c +18 -16
  49. data/tracks/c/exercises/word-count/src/example.c +24 -24
  50. data/tracks/c/exercises/word-count/src/word_count.h +3 -3
  51. data/tracks/c/exercises/word-count/test/test_word_count.c +139 -139
  52. data/tracks/cfml/exercises/acronym/README.md +31 -0
  53. data/tracks/cfml/exercises/atbash-cipher/README.md +50 -0
  54. data/tracks/cfml/exercises/bob/README.md +34 -0
  55. data/tracks/cfml/exercises/diamond/README.md +75 -0
  56. data/tracks/cfml/exercises/difference-of-squares/README.md +35 -0
  57. data/tracks/cfml/exercises/flatten-array/README.md +34 -0
  58. data/tracks/cfml/exercises/gigasecond/README.md +27 -0
  59. data/tracks/cfml/exercises/grains/README.md +50 -0
  60. data/tracks/cfml/exercises/hamming/README.md +58 -0
  61. data/tracks/cfml/exercises/hello-world/README.md +37 -0
  62. data/tracks/cfml/exercises/isogram/README.md +35 -0
  63. data/tracks/cfml/exercises/largest-series-product/README.md +36 -0
  64. data/tracks/cfml/exercises/leap/README.md +16 -0
  65. data/tracks/cfml/exercises/luhn/README.md +87 -0
  66. data/tracks/cfml/exercises/markdown/README.md +34 -0
  67. data/tracks/cfml/exercises/nth-prime/README.md +31 -0
  68. data/tracks/cfml/exercises/pangram/README.md +31 -0
  69. data/tracks/cfml/exercises/pig-latin/README.md +40 -0
  70. data/tracks/cfml/exercises/raindrops/README.md +40 -0
  71. data/tracks/cfml/exercises/rna-transcription/README.md +41 -0
  72. data/tracks/cfml/exercises/saddle-points/README.md +49 -0
  73. data/tracks/cfml/exercises/scrabble-score/README.md +60 -0
  74. data/tracks/cfml/exercises/secret-handshake/README.md +51 -0
  75. data/tracks/cfml/exercises/space-age/README.md +41 -0
  76. data/tracks/cfml/exercises/sum-of-multiples/README.md +34 -0
  77. data/tracks/cfml/exercises/triangle/README.md +42 -0
  78. data/tracks/cfml/exercises/word-count/README.md +35 -0
  79. data/tracks/clojure/config.json +10 -0
  80. data/tracks/clojure/exercises/spiral-matrix/README.md +32 -0
  81. data/tracks/clojure/exercises/spiral-matrix/project.clj +4 -0
  82. data/tracks/clojure/exercises/spiral-matrix/src/example.clj +11 -0
  83. data/tracks/clojure/exercises/spiral-matrix/src/spiral_matrix.clj +3 -0
  84. data/tracks/clojure/exercises/spiral-matrix/test/spiral_matrix_test.clj +58 -0
  85. data/tracks/common-lisp/config.json +20 -0
  86. data/tracks/common-lisp/exercises/hello-world/README.md +68 -0
  87. data/tracks/common-lisp/exercises/hello-world/example.lisp +9 -0
  88. data/tracks/common-lisp/exercises/hello-world/hello-world-test.lisp +21 -0
  89. data/tracks/common-lisp/exercises/hello-world/hello-world.lisp +6 -0
  90. data/tracks/common-lisp/exercises/perfect-numbers/README.md +72 -0
  91. data/tracks/common-lisp/exercises/perfect-numbers/example.lisp +17 -0
  92. data/tracks/common-lisp/exercises/perfect-numbers/perfect-numbers-test.lisp +56 -0
  93. data/tracks/common-lisp/exercises/perfect-numbers/perfect-numbers.lisp +7 -0
  94. data/tracks/cpp/.travis.yml +34 -14
  95. data/tracks/cpp/docs/INSTALLATION.md +17 -28
  96. data/tracks/cpp/docs/TESTS.md +13 -21
  97. data/tracks/crystal/config.json +10 -0
  98. data/tracks/crystal/exercises/triangle/spec/triangle_spec.cr +60 -0
  99. data/tracks/crystal/exercises/triangle/src/example.cr +31 -0
  100. data/tracks/crystal/exercises/triangle/src/triangle.cr +1 -0
  101. data/tracks/crystal/generator/spec/remote_data_file_spec.cr +0 -1
  102. data/tracks/crystal/generator/src/generators/triangle.cr +38 -0
  103. data/tracks/crystal/generator/src/remote_data_file.cr +1 -1
  104. data/tracks/csharp/exercises/difference-of-squares/DifferenceOfSquares.cs +4 -4
  105. data/tracks/csharp/exercises/difference-of-squares/DifferenceOfSquaresTest.cs +22 -27
  106. data/tracks/csharp/exercises/difference-of-squares/Example.cs +5 -5
  107. data/tracks/csharp/exercises/error-handling/ErrorHandlingTest.cs +4 -4
  108. data/tracks/csharp/exercises/flatten-array/Example.cs +1 -1
  109. data/tracks/csharp/exercises/flatten-array/FlattenArray.cs +1 -1
  110. data/tracks/csharp/exercises/flatten-array/FlattenArrayTest.cs +106 -72
  111. data/tracks/csharp/exercises/largest-series-product/LargestSeriesProductTest.cs +24 -98
  112. data/tracks/csharp/exercises/minesweeper/Example.cs +3 -3
  113. data/tracks/csharp/exercises/minesweeper/Minesweeper.cs +1 -1
  114. data/tracks/csharp/exercises/minesweeper/MinesweeperTest.cs +155 -57
  115. data/tracks/csharp/generators/Exercises/DifferenceOfSquares.cs +25 -0
  116. data/tracks/csharp/generators/Exercises/FlattenArray.cs +36 -0
  117. data/tracks/csharp/generators/Exercises/LargestSeriesProduct.cs +18 -0
  118. data/tracks/csharp/generators/Exercises/Minesweeper.cs +32 -0
  119. data/tracks/d/docs/EXERCISE_README_INSERT.md +1 -1
  120. data/tracks/d/exercises/bob/README.md +1 -1
  121. data/tracks/d/exercises/circular-buffer/README.md +1 -1
  122. data/tracks/d/exercises/crypto-square/README.md +1 -1
  123. data/tracks/d/exercises/difference-of-squares/README.md +1 -1
  124. data/tracks/d/exercises/etl/README.md +1 -1
  125. data/tracks/d/exercises/gigasecond/README.md +1 -1
  126. data/tracks/d/exercises/hamming/README.md +1 -1
  127. data/tracks/d/exercises/hello-world/README.md +1 -1
  128. data/tracks/d/exercises/leap/README.md +1 -1
  129. data/tracks/d/exercises/nucleotide-count/README.md +1 -1
  130. data/tracks/d/exercises/pangram/README.md +1 -1
  131. data/tracks/d/exercises/raindrops/README.md +1 -1
  132. data/tracks/d/exercises/react/README.md +1 -1
  133. data/tracks/d/exercises/rna-transcription/README.md +1 -1
  134. data/tracks/d/exercises/robot-name/README.md +1 -1
  135. data/tracks/d/exercises/roman-numerals/README.md +1 -1
  136. data/tracks/d/exercises/series/README.md +1 -1
  137. data/tracks/d/exercises/triangle/README.md +1 -1
  138. data/tracks/dart/CONTRIBUTING.md +61 -0
  139. data/tracks/dart/README.md +10 -47
  140. data/tracks/dart/config.json +13 -1
  141. data/tracks/dart/exercises/anagram/README.md +10 -0
  142. data/tracks/dart/exercises/bob/README.md +11 -0
  143. data/tracks/dart/exercises/difference-of-squares/README.md +11 -0
  144. data/tracks/dart/exercises/gigasecond/README.md +11 -0
  145. data/tracks/dart/exercises/gigasecond/test/gigasecond_test.dart +56 -33
  146. data/tracks/dart/exercises/hamming/README.md +11 -0
  147. data/tracks/dart/exercises/hamming/lib/example.dart +2 -2
  148. data/tracks/dart/exercises/hamming/test/hamming_test.dart +41 -24
  149. data/tracks/dart/exercises/hello-world/README.md +11 -0
  150. data/tracks/dart/exercises/leap/README.md +12 -1
  151. data/tracks/dart/exercises/phone-number/README.md +56 -0
  152. data/tracks/dart/exercises/phone-number/lib/example.dart +45 -0
  153. data/tracks/dart/exercises/phone-number/lib/phone_number.dart +3 -0
  154. data/tracks/dart/exercises/phone-number/pubspec.lock +293 -0
  155. data/tracks/dart/exercises/phone-number/pubspec.yaml +3 -0
  156. data/tracks/dart/exercises/phone-number/test/phone_number_test.dart +66 -0
  157. data/tracks/dart/exercises/raindrops/README.md +35 -0
  158. data/tracks/dart/exercises/rna-transcription/README.md +11 -0
  159. data/tracks/dart/exercises/word-count/README.md +14 -3
  160. data/tracks/delphi/docs/RESOURCES.md +10 -11
  161. data/tracks/elixir/exercises/hello-world/hello_world.exs +1 -1
  162. data/tracks/elixir/exercises/secret-handshake/README.md +3 -5
  163. data/tracks/elm/exercises/isogram/Isogram.example.elm +4 -4
  164. data/tracks/erlang/config.json +10 -0
  165. data/tracks/erlang/exercises/sieve/README.md +88 -0
  166. data/tracks/erlang/exercises/sieve/include/exercism.hrl +11 -0
  167. data/tracks/erlang/exercises/sieve/rebar.config +30 -0
  168. data/tracks/erlang/exercises/sieve/src/example.erl +16 -0
  169. data/tracks/erlang/exercises/sieve/src/sieve.app.src +9 -0
  170. data/tracks/erlang/exercises/sieve/src/sieve.erl +8 -0
  171. data/tracks/erlang/exercises/sieve/test/sieve_tests.erl +38 -0
  172. data/tracks/fsharp/.gitignore +2 -1
  173. data/tracks/fsharp/exercises/crypto-square/CryptoSquareTest.fs +10 -6
  174. data/tracks/fsharp/exercises/leap/LeapTest.fs +2 -2
  175. data/tracks/fsharp/exercises/pangram/PangramTest.fs +5 -1
  176. data/tracks/fsharp/exercises/queen-attack/QueenAttackTest.fs +7 -7
  177. data/tracks/fsharp/exercises/run-length-encoding/Example.fs +2 -2
  178. data/tracks/fsharp/exercises/run-length-encoding/RunLengthEncodingTest.fs +42 -30
  179. data/tracks/fsharp/generators/Generators.fs +21 -8
  180. data/tracks/gnu-apl/test.apl +4 -4
  181. data/tracks/go/README.md +1 -2
  182. data/tracks/go/config/maintainers.json +5 -6
  183. data/tracks/groovy/config.json +23 -0
  184. data/tracks/groovy/exercises/binary-search/BinarySearch.groovy +14 -0
  185. data/tracks/groovy/exercises/binary-search/BinarySearchSpec.groovy +56 -0
  186. data/tracks/groovy/exercises/binary-search/Example.groovy +43 -0
  187. data/tracks/groovy/exercises/binary-search/README.md +59 -0
  188. data/tracks/groovy/exercises/triangle/Example.groovy +23 -0
  189. data/tracks/groovy/exercises/triangle/README.md +42 -0
  190. data/tracks/groovy/exercises/triangle/Triangle.groovy +15 -0
  191. data/tracks/groovy/exercises/triangle/TriangleSpec.groovy +66 -0
  192. data/tracks/haskell/config.json +9 -0
  193. data/tracks/haskell/exercises/all-your-base/package.yaml +1 -1
  194. data/tracks/haskell/exercises/all-your-base/test/Tests.hs +18 -18
  195. data/tracks/haskell/exercises/bowling/package.yaml +1 -1
  196. data/tracks/haskell/exercises/bowling/test/Tests.hs +9 -9
  197. data/tracks/haskell/exercises/change/package.yaml +1 -1
  198. data/tracks/haskell/exercises/change/test/Tests.hs +5 -0
  199. data/tracks/haskell/exercises/complex-numbers/README.md +92 -0
  200. data/tracks/haskell/exercises/complex-numbers/examples/success-standard/package.yaml +16 -0
  201. data/tracks/haskell/exercises/complex-numbers/examples/success-standard/src/ComplexNumbers.hs +50 -0
  202. data/tracks/haskell/exercises/complex-numbers/package.yaml +20 -0
  203. data/tracks/haskell/exercises/complex-numbers/src/ComplexNumbers.hs +45 -0
  204. data/tracks/haskell/exercises/complex-numbers/stack.yaml +1 -0
  205. data/tracks/haskell/exercises/complex-numbers/test/Tests.hs +194 -0
  206. data/tracks/haskell/exercises/crypto-square/package.yaml +1 -1
  207. data/tracks/haskell/exercises/crypto-square/test/Tests.hs +20 -12
  208. data/tracks/haskell/exercises/dominoes/package.yaml +1 -1
  209. data/tracks/haskell/exercises/forth/package.yaml +1 -1
  210. data/tracks/haskell/exercises/forth/test/Tests.hs +4 -3
  211. data/tracks/haskell/exercises/hamming/package.yaml +1 -1
  212. data/tracks/haskell/exercises/hamming/test/Tests.hs +6 -6
  213. data/tracks/haskell/exercises/isogram/package.yaml +1 -1
  214. data/tracks/haskell/exercises/isogram/test/Tests.hs +2 -2
  215. data/tracks/haskell/exercises/leap/package.yaml +1 -1
  216. data/tracks/haskell/exercises/leap/test/Tests.hs +1 -1
  217. data/tracks/haskell/exercises/pascals-triangle/package.yaml +1 -1
  218. data/tracks/haskell/exercises/pig-latin/examples/success-standard/src/PigLatin.hs +2 -0
  219. data/tracks/haskell/exercises/pig-latin/package.yaml +1 -1
  220. data/tracks/haskell/exercises/pig-latin/test/Tests.hs +8 -0
  221. data/tracks/haskell/exercises/queen-attack/package.yaml +1 -1
  222. data/tracks/haskell/exercises/rna-transcription/package.yaml +1 -1
  223. data/tracks/haskell/exercises/rna-transcription/test/Tests.hs +8 -8
  224. data/tracks/haskell/exercises/robot-simulator/package.yaml +1 -1
  225. data/tracks/haskell/exercises/secret-handshake/package.yaml +1 -1
  226. data/tracks/haskell/exercises/secret-handshake/test/Tests.hs +0 -3
  227. data/tracks/haskell/exercises/sum-of-multiples/package.yaml +1 -1
  228. data/tracks/haskell/exercises/sum-of-multiples/test/Tests.hs +4 -0
  229. data/tracks/haskell/exercises/zipper/package.yaml +1 -1
  230. data/tracks/haskell/exercises/zipper/test/Tests.hs +23 -0
  231. data/tracks/java/config.json +85 -13
  232. data/tracks/java/config/maintainers.json +1 -1
  233. data/tracks/java/exercises/accumulate/README.md +0 -3
  234. data/tracks/java/exercises/acronym/.meta/.version +1 -0
  235. data/tracks/java/exercises/acronym/README.md +0 -1
  236. data/tracks/java/exercises/acronym/src/test/java/AcronymTest.java +0 -3
  237. data/tracks/java/exercises/all-your-base/.meta/.version +1 -0
  238. data/tracks/java/exercises/all-your-base/README.md +1 -1
  239. data/tracks/java/exercises/all-your-base/src/test/java/BaseConverterTest.java +0 -3
  240. data/tracks/java/exercises/allergies/README.md +0 -1
  241. data/tracks/java/exercises/atbash-cipher/README.md +2 -1
  242. data/tracks/java/exercises/beer-song/README.md +1 -1
  243. data/tracks/java/exercises/binary/README.md +2 -0
  244. data/tracks/java/exercises/book-store/README.md +5 -5
  245. data/tracks/java/exercises/bowling/README.md +20 -6
  246. data/tracks/java/exercises/change/.meta/.version +1 -0
  247. data/tracks/java/exercises/change/README.md +1 -1
  248. data/tracks/java/exercises/change/src/test/java/ChangeCalculatorTest.java +0 -3
  249. data/tracks/java/exercises/circular-buffer/README.md +13 -6
  250. data/tracks/java/exercises/clock/.meta/.version +1 -0
  251. data/tracks/java/exercises/clock/src/test/java/ClockAddTest.java +0 -3
  252. data/tracks/java/exercises/clock/src/test/java/ClockCreationTest.java +0 -3
  253. data/tracks/java/exercises/clock/src/test/java/ClockEqualTest.java +0 -3
  254. data/tracks/java/exercises/collatz-conjecture/.meta/.version +1 -0
  255. data/tracks/java/exercises/collatz-conjecture/README.md +1 -1
  256. data/tracks/java/exercises/collatz-conjecture/src/test/java/CollatzCalculatorTest.java +0 -3
  257. data/tracks/java/exercises/complex-numbers/README.md +27 -0
  258. data/tracks/java/exercises/crypto-square/README.md +10 -8
  259. data/tracks/java/exercises/diamond/.meta/.version +1 -0
  260. data/tracks/java/exercises/diamond/README.md +6 -6
  261. data/tracks/java/exercises/diamond/src/test/java/DiamondPrinterTest.java +0 -3
  262. data/tracks/java/exercises/difference-of-squares/.meta/.version +1 -0
  263. data/tracks/java/exercises/difference-of-squares/src/test/java/DifferenceOfSquaresCalculatorTest.java +0 -3
  264. data/tracks/java/exercises/etl/README.md +2 -0
  265. data/tracks/java/exercises/flatten-array/.meta/.version +1 -0
  266. data/tracks/java/exercises/flatten-array/README.md +1 -2
  267. data/tracks/java/exercises/flatten-array/src/test/java/FlattenerTest.java +0 -3
  268. data/tracks/java/exercises/food-chain/README.md +1 -1
  269. data/tracks/java/exercises/forth/.meta/.version +1 -0
  270. data/tracks/java/exercises/forth/src/test/java/ForthEvaluatorTest.java +0 -3
  271. data/tracks/java/exercises/grade-school/README.md +0 -1
  272. data/tracks/java/exercises/hamming/.meta/.version +1 -0
  273. data/tracks/java/exercises/hamming/src/test/java/HammingTest.java +0 -3
  274. data/tracks/java/exercises/house/README.md +1 -2
  275. data/tracks/java/exercises/isogram/README.md +2 -1
  276. data/tracks/java/exercises/kindergarten-garden/README.md +13 -13
  277. data/tracks/java/exercises/linked-list/README.md +10 -10
  278. data/tracks/java/exercises/list-ops/.meta/.version +1 -0
  279. data/tracks/java/exercises/list-ops/README.md +4 -0
  280. data/tracks/java/exercises/list-ops/src/test/java/ListOpsTest.java +0 -3
  281. data/tracks/java/exercises/luhn/README.md +7 -7
  282. data/tracks/java/exercises/matrix/README.md +6 -4
  283. data/tracks/java/exercises/meetup/README.md +1 -2
  284. data/tracks/java/exercises/minesweeper/.meta/.version +1 -0
  285. data/tracks/java/exercises/minesweeper/src/test/java/MinesweeperBoardTest.java +0 -3
  286. data/tracks/java/exercises/nucleotide-count/README.md +8 -22
  287. data/tracks/java/exercises/ocr-numbers/README.md +5 -5
  288. data/tracks/java/exercises/octal/README.md +6 -2
  289. data/tracks/java/exercises/palindrome-products/README.md +15 -16
  290. data/tracks/java/exercises/pangram/.meta/.version +1 -0
  291. data/tracks/java/exercises/pangram/README.md +1 -1
  292. data/tracks/java/exercises/pangram/src/test/java/PangramCheckerTest.java +0 -3
  293. data/tracks/java/exercises/pascals-triangle/.meta/.version +1 -0
  294. data/tracks/java/exercises/pascals-triangle/README.md +1 -1
  295. data/tracks/java/exercises/pascals-triangle/src/test/java/PascalsTriangleGeneratorTest.java +0 -3
  296. data/tracks/java/exercises/perfect-numbers/.meta/.version +1 -0
  297. data/tracks/java/exercises/perfect-numbers/README.md +2 -2
  298. data/tracks/java/exercises/perfect-numbers/src/test/java/NaturalNumberTest.java +0 -3
  299. data/tracks/java/exercises/phone-number/README.md +3 -2
  300. data/tracks/java/exercises/pythagorean-triplet/README.md +3 -3
  301. data/tracks/java/exercises/queen-attack/README.md +1 -1
  302. data/tracks/java/exercises/rectangles/README.md +7 -7
  303. data/tracks/java/exercises/rna-transcription/.meta/.version +1 -0
  304. data/tracks/java/exercises/rna-transcription/src/test/java/RnaTranscriptionTest.java +0 -3
  305. data/tracks/java/exercises/roman-numerals/README.md +1 -1
  306. data/tracks/java/exercises/rotational-cipher/README.md +2 -1
  307. data/tracks/java/exercises/run-length-encoding/README.md +4 -4
  308. data/tracks/java/exercises/saddle-points/.meta/.version +1 -0
  309. data/tracks/java/exercises/saddle-points/README.md +1 -1
  310. data/tracks/java/exercises/saddle-points/src/test/java/MatrixTest.java +0 -3
  311. data/tracks/java/exercises/scrabble-score/.meta/.version +1 -0
  312. data/tracks/java/exercises/scrabble-score/README.md +3 -1
  313. data/tracks/java/exercises/scrabble-score/src/test/java/ScrabbleScoreTest.java +0 -3
  314. data/tracks/java/exercises/secret-handshake/README.md +1 -1
  315. data/tracks/java/exercises/simple-cipher/README.md +1 -1
  316. data/tracks/java/exercises/simple-linked-list/src/test/java/SimpleLinkedListTest.java +25 -25
  317. data/tracks/java/exercises/space-age/README.md +1 -1
  318. data/tracks/java/exercises/spiral-matrix/.meta/.version +1 -0
  319. data/tracks/java/exercises/spiral-matrix/README.md +2 -2
  320. data/tracks/java/exercises/spiral-matrix/src/test/java/SpiralMatrixBuilderTest.java +0 -3
  321. data/tracks/java/exercises/sum-of-multiples/README.md +0 -3
  322. data/tracks/java/exercises/tournament/README.md +6 -5
  323. data/tracks/java/exercises/transpose/README.md +7 -7
  324. data/tracks/java/exercises/triangle/README.md +9 -6
  325. data/tracks/java/exercises/trinary/README.md +1 -1
  326. data/tracks/java/exercises/twelve-days/README.md +1 -1
  327. data/tracks/java/exercises/two-fer/README.md +1 -2
  328. data/tracks/java/exercises/word-count/README.md +1 -2
  329. data/tracks/java/exercises/word-search/.meta/.version +1 -0
  330. data/tracks/java/exercises/word-search/README.md +1 -1
  331. data/tracks/java/exercises/word-search/src/test/java/WordSearcherTest.java +0 -3
  332. data/tracks/java/exercises/wordy/README.md +0 -5
  333. data/tracks/javascript/config.json +13 -0
  334. data/tracks/javascript/docs/TESTS.md +1 -1
  335. data/tracks/javascript/exercises/diffie-hellman/example.js +1 -1
  336. data/tracks/javascript/exercises/hello-world/example.js +2 -3
  337. data/tracks/javascript/exercises/meetup/example.js +24 -27
  338. data/tracks/javascript/exercises/meetup/meetup.spec.js +0 -6
  339. data/tracks/javascript/exercises/nucleotide-count/nucleotide-count.spec.js +1 -1
  340. data/tracks/javascript/exercises/protein-translation/README.md +73 -0
  341. data/tracks/javascript/exercises/protein-translation/example.js +68 -0
  342. data/tracks/javascript/exercises/protein-translation/protein-translation.spec.js +63 -0
  343. data/tracks/julia/README.md +1 -1
  344. data/tracks/kotlin/config.json +11 -0
  345. data/tracks/kotlin/exercises/acronym/README.md +0 -1
  346. data/tracks/kotlin/exercises/all-your-base/README.md +1 -1
  347. data/tracks/kotlin/exercises/allergies/README.md +0 -1
  348. data/tracks/kotlin/exercises/atbash-cipher/README.md +2 -1
  349. data/tracks/kotlin/exercises/beer-song/README.md +1 -1
  350. data/tracks/kotlin/exercises/binary/README.md +2 -0
  351. data/tracks/kotlin/exercises/change/README.md +1 -1
  352. data/tracks/kotlin/exercises/collatz-conjecture/README.md +1 -1
  353. data/tracks/kotlin/exercises/complex-numbers/README.md +27 -0
  354. data/tracks/kotlin/exercises/diamond/README.md +6 -6
  355. data/tracks/kotlin/exercises/etl/README.md +2 -0
  356. data/tracks/kotlin/exercises/flatten-array/README.md +1 -2
  357. data/tracks/kotlin/exercises/grade-school/README.md +0 -1
  358. data/tracks/kotlin/exercises/grains/README.md +0 -1
  359. data/tracks/kotlin/exercises/hello-world/.meta/hints.md +4 -0
  360. data/tracks/kotlin/exercises/hello-world/.meta/src/reference/kotlin/HelloWorld.kt +2 -2
  361. data/tracks/kotlin/exercises/hello-world/README.md +6 -0
  362. data/tracks/kotlin/exercises/hello-world/TUTORIAL.md +32 -434
  363. data/tracks/kotlin/exercises/hello-world/src/main/kotlin/HelloWorld.kt +1 -1
  364. data/tracks/kotlin/exercises/hello-world/src/test/kotlin/HelloWorldTest.kt +2 -21
  365. data/tracks/kotlin/exercises/isogram/README.md +2 -1
  366. data/tracks/kotlin/exercises/leap/README.md +1 -1
  367. data/tracks/kotlin/exercises/linked-list/README.md +10 -10
  368. data/tracks/kotlin/exercises/luhn/README.md +7 -7
  369. data/tracks/kotlin/exercises/meetup/README.md +1 -2
  370. data/tracks/kotlin/exercises/nucleotide-count/README.md +8 -22
  371. data/tracks/kotlin/exercises/pangram/README.md +1 -1
  372. data/tracks/kotlin/exercises/pascals-triangle/README.md +1 -1
  373. data/tracks/kotlin/exercises/perfect-numbers/README.md +2 -2
  374. data/tracks/kotlin/exercises/phone-number/README.md +3 -2
  375. data/tracks/kotlin/exercises/roman-numerals/README.md +1 -1
  376. data/tracks/kotlin/exercises/rotational-cipher/README.md +2 -1
  377. data/tracks/kotlin/exercises/saddle-points/README.md +1 -1
  378. data/tracks/kotlin/exercises/scrabble-score/README.md +3 -1
  379. data/tracks/kotlin/exercises/secret-handshake/README.md +1 -1
  380. data/tracks/kotlin/exercises/settings.gradle +1 -0
  381. data/tracks/kotlin/exercises/space-age/README.md +1 -2
  382. data/tracks/kotlin/exercises/spiral-matrix/README.md +2 -2
  383. data/tracks/kotlin/exercises/sum-of-multiples/README.md +0 -3
  384. data/tracks/kotlin/exercises/triangle/README.md +9 -6
  385. data/tracks/kotlin/exercises/two-fer/.meta/src/reference/kotlin/Twofer.kt +3 -0
  386. data/tracks/kotlin/exercises/two-fer/README.md +50 -0
  387. data/tracks/kotlin/exercises/two-fer/build.gradle +28 -0
  388. data/tracks/kotlin/exercises/two-fer/src/main/kotlin/.keep +0 -0
  389. data/tracks/kotlin/exercises/two-fer/src/test/kotlin/TwoferTest.kt +31 -0
  390. data/tracks/kotlin/exercises/word-count/README.md +1 -2
  391. data/tracks/ocaml/exercises/pangram/test.ml +3 -1
  392. data/tracks/perl5/.travis.yml +3 -1
  393. data/tracks/php/Makefile +2 -2
  394. data/tracks/php/README.md +4 -4
  395. data/tracks/php/config.json +15 -0
  396. data/tracks/php/exercises/transpose/example.php +30 -0
  397. data/tracks/php/exercises/transpose/transpose_test.php +116 -0
  398. data/tracks/php/{phpcs-xphp.xml → phpcs-php.xml} +0 -0
  399. data/tracks/python/.travis.yml +1 -1
  400. data/tracks/python/config.json +199 -39
  401. data/tracks/python/exercises/acronym/acronym_test.py +1 -1
  402. data/tracks/python/exercises/allergies/allergies_test.py +1 -1
  403. data/tracks/python/exercises/alphametics/alphametics_test.py +1 -1
  404. data/tracks/python/exercises/anagram/anagram_test.py +1 -1
  405. data/tracks/python/exercises/atbash-cipher/atbash_cipher_test.py +1 -1
  406. data/tracks/python/exercises/bob/bob.py +1 -1
  407. data/tracks/python/exercises/bob/bob_test.py +1 -1
  408. data/tracks/python/exercises/book-store/book_store_test.py +1 -1
  409. data/tracks/python/exercises/bracket-push/bracket_push.py +1 -1
  410. data/tracks/python/exercises/bracket-push/bracket_push_test.py +1 -1
  411. data/tracks/python/exercises/collatz-conjecture/collatz_conjecture_test.py +1 -1
  412. data/tracks/python/exercises/diamond/diamond_test.py +1 -1
  413. data/tracks/python/exercises/difference-of-squares/difference_of_squares_test.py +1 -1
  414. data/tracks/python/exercises/diffie-hellman/README.md +58 -0
  415. data/tracks/python/exercises/diffie-hellman/diffie_hellman.py +10 -0
  416. data/tracks/python/exercises/diffie-hellman/diffie_hellman_test.py +87 -0
  417. data/tracks/python/exercises/diffie-hellman/example.py +13 -0
  418. data/tracks/python/exercises/etl/etl_test.py +1 -1
  419. data/tracks/python/exercises/food-chain/README.md +81 -0
  420. data/tracks/python/exercises/food-chain/example.py +45 -0
  421. data/tracks/python/exercises/food-chain/food_chain.py +2 -0
  422. data/tracks/python/exercises/food-chain/food_chain_test.py +109 -0
  423. data/tracks/python/exercises/forth/README.md +43 -0
  424. data/tracks/python/exercises/forth/example.py +58 -0
  425. data/tracks/python/exercises/forth/forth.py +2 -0
  426. data/tracks/python/exercises/forth/forth_test.py +254 -0
  427. data/tracks/python/exercises/gigasecond/gigasecond_test.py +1 -1
  428. data/tracks/python/exercises/grep/grep_test.py +1 -1
  429. data/tracks/python/exercises/hello-world/hello_world_test.py +1 -1
  430. data/tracks/python/exercises/isogram/isogram_test.py +10 -10
  431. data/tracks/python/exercises/largest-series-product/largest_series_product_test.py +1 -1
  432. data/tracks/python/exercises/leap/leap_test.py +5 -5
  433. data/tracks/python/exercises/luhn/luhn_test.py +16 -16
  434. data/tracks/python/exercises/markdown/README.md +30 -0
  435. data/tracks/python/exercises/markdown/example.py +80 -0
  436. data/tracks/python/exercises/markdown/markdown.py +71 -0
  437. data/tracks/python/exercises/markdown/markdown_test.py +51 -0
  438. data/tracks/python/exercises/meetup/meetup_test.py +1 -1
  439. data/tracks/python/exercises/nth-prime/nth_prime_test.py +1 -1
  440. data/tracks/python/exercises/pascals-triangle/pascals_triangle_test.py +2 -2
  441. data/tracks/python/exercises/perfect-numbers/perfect_numbers_test.py +11 -11
  442. data/tracks/python/exercises/phone-number/phone_number_test.py +1 -1
  443. data/tracks/python/exercises/prime-factors/prime_factors_test.py +1 -1
  444. data/tracks/python/exercises/pythagorean-triplet/pythagorean_triplet_test.py +3 -3
  445. data/tracks/python/exercises/queen-attack/queen_attack_test.py +8 -8
  446. data/tracks/python/exercises/rail-fence-cipher/rail_fence_cipher_test.py +1 -1
  447. data/tracks/python/exercises/rectangles/rectangles_test.py +1 -1
  448. data/tracks/python/exercises/robot-simulator/robot_simulator.py +9 -1
  449. data/tracks/python/exercises/roman-numerals/roman_numerals_test.py +1 -1
  450. data/tracks/python/exercises/run-length-encoding/run_length_encoding_test.py +1 -1
  451. data/tracks/python/exercises/say/say_test.py +1 -1
  452. data/tracks/python/exercises/scrabble-score/scrabble_score_test.py +1 -1
  453. data/tracks/python/exercises/series/series.py +1 -1
  454. data/tracks/python/exercises/sieve/sieve_test.py +1 -1
  455. data/tracks/python/exercises/sublist/sublist_test.py +1 -1
  456. data/tracks/python/exercises/tournament/tournament_test.py +1 -1
  457. data/tracks/python/exercises/transpose/transpose_test.py +1 -1
  458. data/tracks/python/exercises/two-bucket/example.py +49 -54
  459. data/tracks/python/exercises/two-bucket/two_bucket_test.py +1 -1
  460. data/tracks/python/exercises/variable-length-quantity/variable_length_quantity_test.py +1 -1
  461. data/tracks/rust/config.json +24 -0
  462. data/tracks/rust/exercises/collatz-conjecture/Cargo.lock +4 -0
  463. data/tracks/rust/exercises/collatz-conjecture/Cargo.toml +3 -0
  464. data/tracks/rust/exercises/collatz-conjecture/README.md +65 -0
  465. data/tracks/rust/exercises/collatz-conjecture/example.rs +19 -0
  466. data/tracks/rust/exercises/collatz-conjecture/src/lib.rs +4 -0
  467. data/tracks/rust/exercises/collatz-conjecture/tests/collatz-conjecture.rs +32 -0
  468. data/tracks/rust/exercises/decimal/.gitignore +7 -0
  469. data/tracks/rust/exercises/decimal/.meta/description.md +19 -0
  470. data/tracks/rust/exercises/decimal/.meta/metadata.yml +3 -0
  471. data/tracks/rust/exercises/decimal/Cargo-example.toml +9 -0
  472. data/tracks/rust/exercises/decimal/Cargo.toml +6 -0
  473. data/tracks/rust/exercises/decimal/README.md +59 -0
  474. data/tracks/rust/exercises/decimal/example.rs +187 -0
  475. data/tracks/rust/exercises/decimal/src/lib.rs +10 -0
  476. data/tracks/rust/exercises/decimal/tests/decimal.rs +332 -0
  477. data/tracks/sml/exercises/accumulate/README.md +9 -1
  478. data/tracks/swift/exercises/luhn/Sources/LuhnExample.swift +17 -26
  479. data/tracks/swift/exercises/luhn/Tests/LinuxMain.swift +1 -1
  480. data/tracks/swift/exercises/luhn/Tests/LuhnTests/LuhnTests.swift +59 -35
  481. data/tracks/typescript/config.json +34 -0
  482. data/tracks/typescript/exercises/binary-search/README.md +67 -0
  483. data/tracks/typescript/exercises/binary-search/binary-search.example.ts +42 -0
  484. data/tracks/typescript/exercises/binary-search/binary-search.test.ts +27 -0
  485. data/tracks/typescript/exercises/binary-search/binary-search.ts +3 -0
  486. data/tracks/typescript/exercises/binary-search/package.json +36 -0
  487. data/tracks/typescript/exercises/binary-search/tsconfig.json +22 -0
  488. data/tracks/typescript/exercises/binary-search/tslint.json +127 -0
  489. data/tracks/typescript/exercises/binary-search/yarn.lock +2305 -0
  490. data/tracks/typescript/exercises/pascals-triangle/README.md +47 -0
  491. data/tracks/typescript/exercises/pascals-triangle/package.json +36 -0
  492. data/tracks/typescript/exercises/pascals-triangle/pascals-triangle.example.ts +32 -0
  493. data/tracks/typescript/exercises/pascals-triangle/pascals-triangle.test.ts +28 -0
  494. data/tracks/typescript/exercises/pascals-triangle/pascals-triangle.ts +2 -0
  495. data/tracks/typescript/exercises/pascals-triangle/tsconfig.json +22 -0
  496. data/tracks/typescript/exercises/pascals-triangle/tslint.json +127 -0
  497. data/tracks/typescript/exercises/pascals-triangle/yarn.lock +2305 -0
  498. data/tracks/typescript/exercises/rotational-cipher/README.md +63 -0
  499. data/tracks/typescript/exercises/rotational-cipher/package.json +36 -0
  500. data/tracks/typescript/exercises/rotational-cipher/rotational-cipher.example.ts +19 -0
  501. data/tracks/typescript/exercises/rotational-cipher/rotational-cipher.test.ts +56 -0
  502. data/tracks/typescript/exercises/rotational-cipher/rotational-cipher.ts +1 -0
  503. data/tracks/typescript/exercises/rotational-cipher/tsconfig.json +22 -0
  504. data/tracks/typescript/exercises/rotational-cipher/tslint.json +127 -0
  505. data/tracks/typescript/exercises/rotational-cipher/yarn.lock +2305 -0
  506. metadata +171 -5
  507. data/tracks/javascript/exercises/twelve-days/package.json +0 -69
  508. data/tracks/kotlin/exercises/hello-world/GETTING_STARTED.md +0 -50
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.45
4
+ version: 2.2.1.46
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-10-11 00:00:00.000000000 Z
11
+ date: 2017-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -566,6 +566,7 @@ files:
566
566
  - problem-specifications/exercises/wordy/metadata.yml
567
567
  - problem-specifications/exercises/zebra-puzzle/description.md
568
568
  - problem-specifications/exercises/zebra-puzzle/metadata.yml
569
+ - problem-specifications/exercises/zipper/canonical-data.json
569
570
  - problem-specifications/exercises/zipper/description.md
570
571
  - problem-specifications/exercises/zipper/metadata.yml
571
572
  - problem-specifications/package.json
@@ -590,6 +591,9 @@ files:
590
591
  - tracks/bash/exercises/anagram/README.md
591
592
  - tracks/bash/exercises/anagram/anagram_tests.sh
592
593
  - tracks/bash/exercises/anagram/example.sh
594
+ - tracks/bash/exercises/atbash-cipher/README.md
595
+ - tracks/bash/exercises/atbash-cipher/atbash_cipher_tests.sh
596
+ - tracks/bash/exercises/atbash-cipher/example.sh
593
597
  - tracks/bash/exercises/bob/README.md
594
598
  - tracks/bash/exercises/bob/bob_test.sh
595
599
  - tracks/bash/exercises/bob/example.sh
@@ -598,6 +602,7 @@ files:
598
602
  - tracks/bash/exercises/difference-of-squares/example.sh
599
603
  - tracks/bash/exercises/error-handling/error_handling_test.sh
600
604
  - tracks/bash/exercises/error-handling/example.sh
605
+ - tracks/bash/exercises/gigasecond/.meta/hints.md
601
606
  - tracks/bash/exercises/gigasecond/README.md
602
607
  - tracks/bash/exercises/gigasecond/example.sh
603
608
  - tracks/bash/exercises/gigasecond/gigasecond_test.sh
@@ -1046,6 +1051,7 @@ files:
1046
1051
  - tracks/cfml/exercises/acronym/.meta/HINTS.md
1047
1052
  - tracks/cfml/exercises/acronym/Acronym.cfc
1048
1053
  - tracks/cfml/exercises/acronym/AcronymTest.cfc
1054
+ - tracks/cfml/exercises/acronym/README.md
1049
1055
  - tracks/cfml/exercises/acronym/Solution.cfc
1050
1056
  - tracks/cfml/exercises/acronym/SolutionTest.cfc
1051
1057
  - tracks/cfml/exercises/acronym/TestRunner.cfc
@@ -1054,6 +1060,7 @@ files:
1054
1060
  - tracks/cfml/exercises/atbash-cipher/.meta/HINTS.md
1055
1061
  - tracks/cfml/exercises/atbash-cipher/AtbashCipher.cfc
1056
1062
  - tracks/cfml/exercises/atbash-cipher/AtbashCipherTest.cfc
1063
+ - tracks/cfml/exercises/atbash-cipher/README.md
1057
1064
  - tracks/cfml/exercises/atbash-cipher/Solution.cfc
1058
1065
  - tracks/cfml/exercises/atbash-cipher/SolutionTest.cfc
1059
1066
  - tracks/cfml/exercises/atbash-cipher/TestRunner.cfc
@@ -1062,6 +1069,7 @@ files:
1062
1069
  - tracks/cfml/exercises/bob/.meta/HINTS.md
1063
1070
  - tracks/cfml/exercises/bob/Bob.cfc
1064
1071
  - tracks/cfml/exercises/bob/BobTest.cfc
1072
+ - tracks/cfml/exercises/bob/README.md
1065
1073
  - tracks/cfml/exercises/bob/Solution.cfc
1066
1074
  - tracks/cfml/exercises/bob/SolutionTest.cfc
1067
1075
  - tracks/cfml/exercises/bob/TestRunner.cfc
@@ -1070,6 +1078,7 @@ files:
1070
1078
  - tracks/cfml/exercises/diamond/.meta/HINTS.md
1071
1079
  - tracks/cfml/exercises/diamond/Diamond.cfc
1072
1080
  - tracks/cfml/exercises/diamond/DiamondTest.cfc
1081
+ - tracks/cfml/exercises/diamond/README.md
1073
1082
  - tracks/cfml/exercises/diamond/Solution.cfc
1074
1083
  - tracks/cfml/exercises/diamond/SolutionTest.cfc
1075
1084
  - tracks/cfml/exercises/diamond/TestRunner.cfc
@@ -1078,6 +1087,7 @@ files:
1078
1087
  - tracks/cfml/exercises/difference-of-squares/.meta/HINTS.md
1079
1088
  - tracks/cfml/exercises/difference-of-squares/DifferenceOfSquares.cfc
1080
1089
  - tracks/cfml/exercises/difference-of-squares/DifferenceOfSquaresTest.cfc
1090
+ - tracks/cfml/exercises/difference-of-squares/README.md
1081
1091
  - tracks/cfml/exercises/difference-of-squares/Solution.cfc
1082
1092
  - tracks/cfml/exercises/difference-of-squares/SolutionTest.cfc
1083
1093
  - tracks/cfml/exercises/difference-of-squares/TestRunner.cfc
@@ -1086,6 +1096,7 @@ files:
1086
1096
  - tracks/cfml/exercises/flatten-array/.meta/HINTS.md
1087
1097
  - tracks/cfml/exercises/flatten-array/FlattenArray.cfc
1088
1098
  - tracks/cfml/exercises/flatten-array/FlattenArrayTest.cfc
1099
+ - tracks/cfml/exercises/flatten-array/README.md
1089
1100
  - tracks/cfml/exercises/flatten-array/Solution.cfc
1090
1101
  - tracks/cfml/exercises/flatten-array/SolutionTest.cfc
1091
1102
  - tracks/cfml/exercises/flatten-array/TestRunner.cfc
@@ -1094,6 +1105,7 @@ files:
1094
1105
  - tracks/cfml/exercises/gigasecond/.meta/HINTS.md
1095
1106
  - tracks/cfml/exercises/gigasecond/Gigasecond.cfc
1096
1107
  - tracks/cfml/exercises/gigasecond/GigasecondTest.cfc
1108
+ - tracks/cfml/exercises/gigasecond/README.md
1097
1109
  - tracks/cfml/exercises/gigasecond/Solution.cfc
1098
1110
  - tracks/cfml/exercises/gigasecond/SolutionTest.cfc
1099
1111
  - tracks/cfml/exercises/gigasecond/TestRunner.cfc
@@ -1102,6 +1114,7 @@ files:
1102
1114
  - tracks/cfml/exercises/grains/.meta/HINTS.md
1103
1115
  - tracks/cfml/exercises/grains/Grains.cfc
1104
1116
  - tracks/cfml/exercises/grains/GrainsTest.cfc
1117
+ - tracks/cfml/exercises/grains/README.md
1105
1118
  - tracks/cfml/exercises/grains/Solution.cfc
1106
1119
  - tracks/cfml/exercises/grains/SolutionTest.cfc
1107
1120
  - tracks/cfml/exercises/grains/TestRunner.cfc
@@ -1110,6 +1123,7 @@ files:
1110
1123
  - tracks/cfml/exercises/hamming/.meta/HINTS.md
1111
1124
  - tracks/cfml/exercises/hamming/Hamming.cfc
1112
1125
  - tracks/cfml/exercises/hamming/HammingTest.cfc
1126
+ - tracks/cfml/exercises/hamming/README.md
1113
1127
  - tracks/cfml/exercises/hamming/Solution.cfc
1114
1128
  - tracks/cfml/exercises/hamming/SolutionTest.cfc
1115
1129
  - tracks/cfml/exercises/hamming/TestRunner.cfc
@@ -1117,6 +1131,7 @@ files:
1117
1131
  - tracks/cfml/exercises/hamming/index.cfm
1118
1132
  - tracks/cfml/exercises/hello-world/HelloWorld.cfc
1119
1133
  - tracks/cfml/exercises/hello-world/HelloWorldTest.cfc
1134
+ - tracks/cfml/exercises/hello-world/README.md
1120
1135
  - tracks/cfml/exercises/hello-world/Solution.cfc
1121
1136
  - tracks/cfml/exercises/hello-world/SolutionTest.cfc
1122
1137
  - tracks/cfml/exercises/hello-world/TestRunner.cfc
@@ -1125,6 +1140,7 @@ files:
1125
1140
  - tracks/cfml/exercises/isogram/.meta/HINTS.md
1126
1141
  - tracks/cfml/exercises/isogram/Isogram.cfc
1127
1142
  - tracks/cfml/exercises/isogram/IsogramTest.cfc
1143
+ - tracks/cfml/exercises/isogram/README.md
1128
1144
  - tracks/cfml/exercises/isogram/Solution.cfc
1129
1145
  - tracks/cfml/exercises/isogram/SolutionTest.cfc
1130
1146
  - tracks/cfml/exercises/isogram/TestRunner.cfc
@@ -1133,6 +1149,7 @@ files:
1133
1149
  - tracks/cfml/exercises/largest-series-product/.meta/HINTS.md
1134
1150
  - tracks/cfml/exercises/largest-series-product/LargestSeriesProduct.cfc
1135
1151
  - tracks/cfml/exercises/largest-series-product/LargestSeriesProductTest.cfc
1152
+ - tracks/cfml/exercises/largest-series-product/README.md
1136
1153
  - tracks/cfml/exercises/largest-series-product/Solution.cfc
1137
1154
  - tracks/cfml/exercises/largest-series-product/SolutionTest.cfc
1138
1155
  - tracks/cfml/exercises/largest-series-product/TestRunner.cfc
@@ -1149,6 +1166,7 @@ files:
1149
1166
  - tracks/cfml/exercises/luhn/.meta/HINTS.md
1150
1167
  - tracks/cfml/exercises/luhn/Luhn.cfc
1151
1168
  - tracks/cfml/exercises/luhn/LuhnTest.cfc
1169
+ - tracks/cfml/exercises/luhn/README.md
1152
1170
  - tracks/cfml/exercises/luhn/Solution.cfc
1153
1171
  - tracks/cfml/exercises/luhn/SolutionTest.cfc
1154
1172
  - tracks/cfml/exercises/luhn/TestRunner.cfc
@@ -1157,6 +1175,7 @@ files:
1157
1175
  - tracks/cfml/exercises/markdown/.meta/HINTS.md
1158
1176
  - tracks/cfml/exercises/markdown/Markdown.cfc
1159
1177
  - tracks/cfml/exercises/markdown/MarkdownTest.cfc
1178
+ - tracks/cfml/exercises/markdown/README.md
1160
1179
  - tracks/cfml/exercises/markdown/Solution.cfc
1161
1180
  - tracks/cfml/exercises/markdown/SolutionTest.cfc
1162
1181
  - tracks/cfml/exercises/markdown/TestRunner.cfc
@@ -1165,6 +1184,7 @@ files:
1165
1184
  - tracks/cfml/exercises/nth-prime/.meta/HINTS.md
1166
1185
  - tracks/cfml/exercises/nth-prime/NthPrime.cfc
1167
1186
  - tracks/cfml/exercises/nth-prime/NthPrimeTest.cfc
1187
+ - tracks/cfml/exercises/nth-prime/README.md
1168
1188
  - tracks/cfml/exercises/nth-prime/Solution.cfc
1169
1189
  - tracks/cfml/exercises/nth-prime/SolutionTest.cfc
1170
1190
  - tracks/cfml/exercises/nth-prime/TestRunner.cfc
@@ -1173,6 +1193,7 @@ files:
1173
1193
  - tracks/cfml/exercises/pangram/.meta/HINTS.md
1174
1194
  - tracks/cfml/exercises/pangram/Pangram.cfc
1175
1195
  - tracks/cfml/exercises/pangram/PangramTest.cfc
1196
+ - tracks/cfml/exercises/pangram/README.md
1176
1197
  - tracks/cfml/exercises/pangram/Solution.cfc
1177
1198
  - tracks/cfml/exercises/pangram/SolutionTest.cfc
1178
1199
  - tracks/cfml/exercises/pangram/TestRunner.cfc
@@ -1181,12 +1202,14 @@ files:
1181
1202
  - tracks/cfml/exercises/pig-latin/.meta/HINTS.md
1182
1203
  - tracks/cfml/exercises/pig-latin/PigLatin.cfc
1183
1204
  - tracks/cfml/exercises/pig-latin/PigLatinTest.cfc
1205
+ - tracks/cfml/exercises/pig-latin/README.md
1184
1206
  - tracks/cfml/exercises/pig-latin/Solution.cfc
1185
1207
  - tracks/cfml/exercises/pig-latin/SolutionTest.cfc
1186
1208
  - tracks/cfml/exercises/pig-latin/TestRunner.cfc
1187
1209
  - tracks/cfml/exercises/pig-latin/box.json
1188
1210
  - tracks/cfml/exercises/pig-latin/index.cfm
1189
1211
  - tracks/cfml/exercises/raindrops/.meta/HINTS.md
1212
+ - tracks/cfml/exercises/raindrops/README.md
1190
1213
  - tracks/cfml/exercises/raindrops/Raindrops.cfc
1191
1214
  - tracks/cfml/exercises/raindrops/RaindropsTest.cfc
1192
1215
  - tracks/cfml/exercises/raindrops/Solution.cfc
@@ -1195,6 +1218,7 @@ files:
1195
1218
  - tracks/cfml/exercises/raindrops/box.json
1196
1219
  - tracks/cfml/exercises/raindrops/index.cfm
1197
1220
  - tracks/cfml/exercises/rna-transcription/.meta/HINTS.md
1221
+ - tracks/cfml/exercises/rna-transcription/README.md
1198
1222
  - tracks/cfml/exercises/rna-transcription/RnaTranscription.cfc
1199
1223
  - tracks/cfml/exercises/rna-transcription/RnaTranscriptionTest.cfc
1200
1224
  - tracks/cfml/exercises/rna-transcription/Solution.cfc
@@ -1203,6 +1227,7 @@ files:
1203
1227
  - tracks/cfml/exercises/rna-transcription/box.json
1204
1228
  - tracks/cfml/exercises/rna-transcription/index.cfm
1205
1229
  - tracks/cfml/exercises/saddle-points/.meta/HINTS.md
1230
+ - tracks/cfml/exercises/saddle-points/README.md
1206
1231
  - tracks/cfml/exercises/saddle-points/SaddlePoints.cfc
1207
1232
  - tracks/cfml/exercises/saddle-points/SaddlePointsTest.cfc
1208
1233
  - tracks/cfml/exercises/saddle-points/Solution.cfc
@@ -1211,6 +1236,7 @@ files:
1211
1236
  - tracks/cfml/exercises/saddle-points/box.json
1212
1237
  - tracks/cfml/exercises/saddle-points/index.cfm
1213
1238
  - tracks/cfml/exercises/scrabble-score/.meta/HINTS.md
1239
+ - tracks/cfml/exercises/scrabble-score/README.md
1214
1240
  - tracks/cfml/exercises/scrabble-score/ScrabbleScore.cfc
1215
1241
  - tracks/cfml/exercises/scrabble-score/ScrabbleScoreTest.cfc
1216
1242
  - tracks/cfml/exercises/scrabble-score/Solution.cfc
@@ -1219,6 +1245,7 @@ files:
1219
1245
  - tracks/cfml/exercises/scrabble-score/box.json
1220
1246
  - tracks/cfml/exercises/scrabble-score/index.cfm
1221
1247
  - tracks/cfml/exercises/secret-handshake/.meta/HINTS.md
1248
+ - tracks/cfml/exercises/secret-handshake/README.md
1222
1249
  - tracks/cfml/exercises/secret-handshake/SecretHandshake.cfc
1223
1250
  - tracks/cfml/exercises/secret-handshake/SecretHandshakeTest.cfc
1224
1251
  - tracks/cfml/exercises/secret-handshake/Solution.cfc
@@ -1227,6 +1254,7 @@ files:
1227
1254
  - tracks/cfml/exercises/secret-handshake/box.json
1228
1255
  - tracks/cfml/exercises/secret-handshake/index.cfm
1229
1256
  - tracks/cfml/exercises/space-age/.meta/HINTS.md
1257
+ - tracks/cfml/exercises/space-age/README.md
1230
1258
  - tracks/cfml/exercises/space-age/Solution.cfc
1231
1259
  - tracks/cfml/exercises/space-age/SolutionTest.cfc
1232
1260
  - tracks/cfml/exercises/space-age/SpaceAge.cfc
@@ -1235,6 +1263,7 @@ files:
1235
1263
  - tracks/cfml/exercises/space-age/box.json
1236
1264
  - tracks/cfml/exercises/space-age/index.cfm
1237
1265
  - tracks/cfml/exercises/sum-of-multiples/.meta/HINTS.md
1266
+ - tracks/cfml/exercises/sum-of-multiples/README.md
1238
1267
  - tracks/cfml/exercises/sum-of-multiples/Solution.cfc
1239
1268
  - tracks/cfml/exercises/sum-of-multiples/SolutionTest.cfc
1240
1269
  - tracks/cfml/exercises/sum-of-multiples/SumOfMultiples.cfc
@@ -1243,6 +1272,7 @@ files:
1243
1272
  - tracks/cfml/exercises/sum-of-multiples/box.json
1244
1273
  - tracks/cfml/exercises/sum-of-multiples/index.cfm
1245
1274
  - tracks/cfml/exercises/triangle/.meta/HINTS.md
1275
+ - tracks/cfml/exercises/triangle/README.md
1246
1276
  - tracks/cfml/exercises/triangle/Solution.cfc
1247
1277
  - tracks/cfml/exercises/triangle/SolutionTest.cfc
1248
1278
  - tracks/cfml/exercises/triangle/TestRunner.cfc
@@ -1251,6 +1281,7 @@ files:
1251
1281
  - tracks/cfml/exercises/triangle/box.json
1252
1282
  - tracks/cfml/exercises/triangle/index.cfm
1253
1283
  - tracks/cfml/exercises/word-count/.meta/HINTS.md
1284
+ - tracks/cfml/exercises/word-count/README.md
1254
1285
  - tracks/cfml/exercises/word-count/Solution.cfc
1255
1286
  - tracks/cfml/exercises/word-count/SolutionTest.cfc
1256
1287
  - tracks/cfml/exercises/word-count/TestRunner.cfc
@@ -1521,6 +1552,11 @@ files:
1521
1552
  - tracks/clojure/exercises/space-age/project.clj
1522
1553
  - tracks/clojure/exercises/space-age/src/example.clj
1523
1554
  - tracks/clojure/exercises/space-age/test/space_age_test.clj
1555
+ - tracks/clojure/exercises/spiral-matrix/README.md
1556
+ - tracks/clojure/exercises/spiral-matrix/project.clj
1557
+ - tracks/clojure/exercises/spiral-matrix/src/example.clj
1558
+ - tracks/clojure/exercises/spiral-matrix/src/spiral_matrix.clj
1559
+ - tracks/clojure/exercises/spiral-matrix/test/spiral_matrix_test.clj
1524
1560
  - tracks/clojure/exercises/strain/README.md
1525
1561
  - tracks/clojure/exercises/strain/project.clj
1526
1562
  - tracks/clojure/exercises/strain/src/example.clj
@@ -1710,6 +1746,10 @@ files:
1710
1746
  - tracks/common-lisp/exercises/hamming/example.lisp
1711
1747
  - tracks/common-lisp/exercises/hamming/hamming-test.lisp
1712
1748
  - tracks/common-lisp/exercises/hamming/hamming.lisp
1749
+ - tracks/common-lisp/exercises/hello-world/README.md
1750
+ - tracks/common-lisp/exercises/hello-world/example.lisp
1751
+ - tracks/common-lisp/exercises/hello-world/hello-world-test.lisp
1752
+ - tracks/common-lisp/exercises/hello-world/hello-world.lisp
1713
1753
  - tracks/common-lisp/exercises/leap/README.md
1714
1754
  - tracks/common-lisp/exercises/leap/example.lisp
1715
1755
  - tracks/common-lisp/exercises/leap/leap-test.lisp
@@ -1726,6 +1766,10 @@ files:
1726
1766
  - tracks/common-lisp/exercises/pascals-triangle/example.lisp
1727
1767
  - tracks/common-lisp/exercises/pascals-triangle/pascal.lisp
1728
1768
  - tracks/common-lisp/exercises/pascals-triangle/pascals-triangle-test.lisp
1769
+ - tracks/common-lisp/exercises/perfect-numbers/README.md
1770
+ - tracks/common-lisp/exercises/perfect-numbers/example.lisp
1771
+ - tracks/common-lisp/exercises/perfect-numbers/perfect-numbers-test.lisp
1772
+ - tracks/common-lisp/exercises/perfect-numbers/perfect-numbers.lisp
1729
1773
  - tracks/common-lisp/exercises/phone-number/README.md
1730
1774
  - tracks/common-lisp/exercises/phone-number/example.lisp
1731
1775
  - tracks/common-lisp/exercises/phone-number/phone-number-test.lisp
@@ -2131,6 +2175,9 @@ files:
2131
2175
  - tracks/crystal/exercises/sieve/spec/sieve_spec.cr
2132
2176
  - tracks/crystal/exercises/sieve/src/example.cr
2133
2177
  - tracks/crystal/exercises/sieve/src/sieve.cr
2178
+ - tracks/crystal/exercises/triangle/spec/triangle_spec.cr
2179
+ - tracks/crystal/exercises/triangle/src/example.cr
2180
+ - tracks/crystal/exercises/triangle/src/triangle.cr
2134
2181
  - tracks/crystal/generator/generator.cr
2135
2182
  - tracks/crystal/generator/shard.lock
2136
2183
  - tracks/crystal/generator/shard.yml
@@ -2147,6 +2194,7 @@ files:
2147
2194
  - tracks/crystal/generator/src/generators/hello_world.cr
2148
2195
  - tracks/crystal/generator/src/generators/pascals-triangle.cr
2149
2196
  - tracks/crystal/generator/src/generators/run_length_encoding.cr
2197
+ - tracks/crystal/generator/src/generators/triangle.cr
2150
2198
  - tracks/crystal/generator/src/remote_data_file.cr
2151
2199
  - tracks/crystal/generator/src/templates/example.tt
2152
2200
  - tracks/crystal/img/icon.png
@@ -2769,8 +2817,10 @@ files:
2769
2817
  - tracks/csharp/generators/Exercises/ComplexNumbers.cs
2770
2818
  - tracks/csharp/generators/Exercises/Connect.cs
2771
2819
  - tracks/csharp/generators/Exercises/CryptoSquare.cs
2820
+ - tracks/csharp/generators/Exercises/DifferenceOfSquares.cs
2772
2821
  - tracks/csharp/generators/Exercises/Dominoes.cs
2773
2822
  - tracks/csharp/generators/Exercises/Etl.cs
2823
+ - tracks/csharp/generators/Exercises/FlattenArray.cs
2774
2824
  - tracks/csharp/generators/Exercises/FoodChain.cs
2775
2825
  - tracks/csharp/generators/Exercises/Gigasecond.cs
2776
2826
  - tracks/csharp/generators/Exercises/Grains.cs
@@ -2779,9 +2829,11 @@ files:
2779
2829
  - tracks/csharp/generators/Exercises/House.cs
2780
2830
  - tracks/csharp/generators/Exercises/Isogram.cs
2781
2831
  - tracks/csharp/generators/Exercises/KindergartenGarden.cs
2832
+ - tracks/csharp/generators/Exercises/LargestSeriesProduct.cs
2782
2833
  - tracks/csharp/generators/Exercises/Leap.cs
2783
2834
  - tracks/csharp/generators/Exercises/Luhn.cs
2784
2835
  - tracks/csharp/generators/Exercises/Meetup.cs
2836
+ - tracks/csharp/generators/Exercises/Minesweeper.cs
2785
2837
  - tracks/csharp/generators/Exercises/NthPrime.cs
2786
2838
  - tracks/csharp/generators/Exercises/NucleotideCount.cs
2787
2839
  - tracks/csharp/generators/Exercises/OcrNumbers.cs
@@ -2951,6 +3003,7 @@ files:
2951
3003
  - tracks/dart/.git
2952
3004
  - tracks/dart/.gitignore
2953
3005
  - tracks/dart/.travis.yml
3006
+ - tracks/dart/CONTRIBUTING.md
2954
3007
  - tracks/dart/LICENSE
2955
3008
  - tracks/dart/README.md
2956
3009
  - tracks/dart/analysis_options.yaml
@@ -3008,6 +3061,13 @@ files:
3008
3061
  - tracks/dart/exercises/leap/pubspec.lock
3009
3062
  - tracks/dart/exercises/leap/pubspec.yaml
3010
3063
  - tracks/dart/exercises/leap/test/leap_test.dart
3064
+ - tracks/dart/exercises/phone-number/README.md
3065
+ - tracks/dart/exercises/phone-number/lib/example.dart
3066
+ - tracks/dart/exercises/phone-number/lib/phone_number.dart
3067
+ - tracks/dart/exercises/phone-number/pubspec.lock
3068
+ - tracks/dart/exercises/phone-number/pubspec.yaml
3069
+ - tracks/dart/exercises/phone-number/test/phone_number_test.dart
3070
+ - tracks/dart/exercises/raindrops/README.md
3011
3071
  - tracks/dart/exercises/raindrops/lib/example.dart
3012
3072
  - tracks/dart/exercises/raindrops/lib/raindrops.dart
3013
3073
  - tracks/dart/exercises/raindrops/pubspec.lock
@@ -4502,6 +4562,13 @@ files:
4502
4562
  - tracks/erlang/exercises/series/src/series.app.src
4503
4563
  - tracks/erlang/exercises/series/src/series.erl
4504
4564
  - tracks/erlang/exercises/series/test/series_tests.erl
4565
+ - tracks/erlang/exercises/sieve/README.md
4566
+ - tracks/erlang/exercises/sieve/include/exercism.hrl
4567
+ - tracks/erlang/exercises/sieve/rebar.config
4568
+ - tracks/erlang/exercises/sieve/src/example.erl
4569
+ - tracks/erlang/exercises/sieve/src/sieve.app.src
4570
+ - tracks/erlang/exercises/sieve/src/sieve.erl
4571
+ - tracks/erlang/exercises/sieve/test/sieve_tests.erl
4505
4572
  - tracks/erlang/exercises/space-age/README.md
4506
4573
  - tracks/erlang/exercises/space-age/include/exercism.hrl
4507
4574
  - tracks/erlang/exercises/space-age/rebar.config
@@ -5764,6 +5831,10 @@ files:
5764
5831
  - tracks/groovy/docs/RESOURCES.md
5765
5832
  - tracks/groovy/docs/SNIPPET.txt
5766
5833
  - tracks/groovy/docs/TESTS.md
5834
+ - tracks/groovy/exercises/binary-search/BinarySearch.groovy
5835
+ - tracks/groovy/exercises/binary-search/BinarySearchSpec.groovy
5836
+ - tracks/groovy/exercises/binary-search/Example.groovy
5837
+ - tracks/groovy/exercises/binary-search/README.md
5767
5838
  - tracks/groovy/exercises/difference-of-squares/DifferenceOfSquares.groovy
5768
5839
  - tracks/groovy/exercises/difference-of-squares/DifferenceOfSquaresSpec.groovy
5769
5840
  - tracks/groovy/exercises/difference-of-squares/Example.groovy
@@ -5816,6 +5887,10 @@ files:
5816
5887
  - tracks/groovy/exercises/scrabble-score/README.md
5817
5888
  - tracks/groovy/exercises/scrabble-score/ScrabbleScore.groovy
5818
5889
  - tracks/groovy/exercises/scrabble-score/ScrabbleScoreSpec.groovy
5890
+ - tracks/groovy/exercises/triangle/Example.groovy
5891
+ - tracks/groovy/exercises/triangle/README.md
5892
+ - tracks/groovy/exercises/triangle/Triangle.groovy
5893
+ - tracks/groovy/exercises/triangle/TriangleSpec.groovy
5819
5894
  - tracks/groovy/exercises/two-fer/Example.groovy
5820
5895
  - tracks/groovy/exercises/two-fer/README.md
5821
5896
  - tracks/groovy/exercises/two-fer/TwoFer.groovy
@@ -5976,6 +6051,13 @@ files:
5976
6051
  - tracks/haskell/exercises/collatz-conjecture/src/CollatzConjecture.hs
5977
6052
  - tracks/haskell/exercises/collatz-conjecture/stack.yaml
5978
6053
  - tracks/haskell/exercises/collatz-conjecture/test/Tests.hs
6054
+ - tracks/haskell/exercises/complex-numbers/README.md
6055
+ - tracks/haskell/exercises/complex-numbers/examples/success-standard/package.yaml
6056
+ - tracks/haskell/exercises/complex-numbers/examples/success-standard/src/ComplexNumbers.hs
6057
+ - tracks/haskell/exercises/complex-numbers/package.yaml
6058
+ - tracks/haskell/exercises/complex-numbers/src/ComplexNumbers.hs
6059
+ - tracks/haskell/exercises/complex-numbers/stack.yaml
6060
+ - tracks/haskell/exercises/complex-numbers/test/Tests.hs
5979
6061
  - tracks/haskell/exercises/connect/README.md
5980
6062
  - tracks/haskell/exercises/connect/examples/success-standard/package.yaml
5981
6063
  - tracks/haskell/exercises/connect/examples/success-standard/src/Connect.hs
@@ -6605,11 +6687,13 @@ files:
6605
6687
  - tracks/java/exercises/accumulate/build.gradle
6606
6688
  - tracks/java/exercises/accumulate/src/main/java/.keep
6607
6689
  - tracks/java/exercises/accumulate/src/test/java/AccumulateTest.java
6690
+ - tracks/java/exercises/acronym/.meta/.version
6608
6691
  - tracks/java/exercises/acronym/.meta/src/reference/java/Acronym.java
6609
6692
  - tracks/java/exercises/acronym/README.md
6610
6693
  - tracks/java/exercises/acronym/build.gradle
6611
6694
  - tracks/java/exercises/acronym/src/main/java/Acronym.java
6612
6695
  - tracks/java/exercises/acronym/src/test/java/AcronymTest.java
6696
+ - tracks/java/exercises/all-your-base/.meta/.version
6613
6697
  - tracks/java/exercises/all-your-base/.meta/src/reference/java/BaseConverter.java
6614
6698
  - tracks/java/exercises/all-your-base/README.md
6615
6699
  - tracks/java/exercises/all-your-base/build.gradle
@@ -6680,6 +6764,7 @@ files:
6680
6764
  - tracks/java/exercises/bracket-push/src/main/java/.keep
6681
6765
  - tracks/java/exercises/bracket-push/src/test/java/BracketCheckerTest.java
6682
6766
  - tracks/java/exercises/build.gradle
6767
+ - tracks/java/exercises/change/.meta/.version
6683
6768
  - tracks/java/exercises/change/.meta/src/reference/java/ChangeCalculator.java
6684
6769
  - tracks/java/exercises/change/README.md
6685
6770
  - tracks/java/exercises/change/build.gradle
@@ -6691,6 +6776,7 @@ files:
6691
6776
  - tracks/java/exercises/circular-buffer/build.gradle
6692
6777
  - tracks/java/exercises/circular-buffer/src/main/java/BufferIOException.java
6693
6778
  - tracks/java/exercises/circular-buffer/src/test/java/CircularBufferTest.java
6779
+ - tracks/java/exercises/clock/.meta/.version
6694
6780
  - tracks/java/exercises/clock/.meta/hints.md
6695
6781
  - tracks/java/exercises/clock/.meta/src/reference/java/Clock.java
6696
6782
  - tracks/java/exercises/clock/README.md
@@ -6699,6 +6785,7 @@ files:
6699
6785
  - tracks/java/exercises/clock/src/test/java/ClockAddTest.java
6700
6786
  - tracks/java/exercises/clock/src/test/java/ClockCreationTest.java
6701
6787
  - tracks/java/exercises/clock/src/test/java/ClockEqualTest.java
6788
+ - tracks/java/exercises/collatz-conjecture/.meta/.version
6702
6789
  - tracks/java/exercises/collatz-conjecture/.meta/src/reference/java/CollatzCalculator.java
6703
6790
  - tracks/java/exercises/collatz-conjecture/README.md
6704
6791
  - tracks/java/exercises/collatz-conjecture/build.gradle
@@ -6719,11 +6806,13 @@ files:
6719
6806
  - tracks/java/exercises/custom-set/build.gradle
6720
6807
  - tracks/java/exercises/custom-set/src/main/java/.keep
6721
6808
  - tracks/java/exercises/custom-set/src/test/java/CustomSetTest.java
6809
+ - tracks/java/exercises/diamond/.meta/.version
6722
6810
  - tracks/java/exercises/diamond/.meta/src/reference/java/DiamondPrinter.java
6723
6811
  - tracks/java/exercises/diamond/README.md
6724
6812
  - tracks/java/exercises/diamond/build.gradle
6725
6813
  - tracks/java/exercises/diamond/src/main/java/.keep
6726
6814
  - tracks/java/exercises/diamond/src/test/java/DiamondPrinterTest.java
6815
+ - tracks/java/exercises/difference-of-squares/.meta/.version
6727
6816
  - tracks/java/exercises/difference-of-squares/.meta/src/reference/java/DifferenceOfSquaresCalculator.java
6728
6817
  - tracks/java/exercises/difference-of-squares/README.md
6729
6818
  - tracks/java/exercises/difference-of-squares/build.gradle
@@ -6734,6 +6823,7 @@ files:
6734
6823
  - tracks/java/exercises/etl/build.gradle
6735
6824
  - tracks/java/exercises/etl/src/main/java/Etl.java
6736
6825
  - tracks/java/exercises/etl/src/test/java/EtlTest.java
6826
+ - tracks/java/exercises/flatten-array/.meta/.version
6737
6827
  - tracks/java/exercises/flatten-array/.meta/src/reference/java/Flattener.java
6738
6828
  - tracks/java/exercises/flatten-array/README.md
6739
6829
  - tracks/java/exercises/flatten-array/build.gradle
@@ -6744,6 +6834,7 @@ files:
6744
6834
  - tracks/java/exercises/food-chain/build.gradle
6745
6835
  - tracks/java/exercises/food-chain/src/main/java/.keep
6746
6836
  - tracks/java/exercises/food-chain/src/test/java/FoodChainTest.java
6837
+ - tracks/java/exercises/forth/.meta/.version
6747
6838
  - tracks/java/exercises/forth/.meta/readme.go.tmpl
6748
6839
  - tracks/java/exercises/forth/.meta/src/reference/java/ForthEvaluator.java
6749
6840
  - tracks/java/exercises/forth/.meta/src/reference/java/Token.java
@@ -6761,6 +6852,7 @@ files:
6761
6852
  - tracks/java/exercises/grade-school/build.gradle
6762
6853
  - tracks/java/exercises/grade-school/src/main/java/.keep
6763
6854
  - tracks/java/exercises/grade-school/src/test/java/SchoolTest.java
6855
+ - tracks/java/exercises/hamming/.meta/.version
6764
6856
  - tracks/java/exercises/hamming/.meta/hints.md
6765
6857
  - tracks/java/exercises/hamming/.meta/src/reference/java/Hamming.java
6766
6858
  - tracks/java/exercises/hamming/README.md
@@ -6806,6 +6898,7 @@ files:
6806
6898
  - tracks/java/exercises/linked-list/build.gradle
6807
6899
  - tracks/java/exercises/linked-list/src/main/java/.keep
6808
6900
  - tracks/java/exercises/linked-list/src/test/java/DoublyLinkedListTest.java
6901
+ - tracks/java/exercises/list-ops/.meta/.version
6809
6902
  - tracks/java/exercises/list-ops/.meta/hints.md
6810
6903
  - tracks/java/exercises/list-ops/.meta/src/reference/java/ListOps.java
6811
6904
  - tracks/java/exercises/list-ops/README.md
@@ -6829,6 +6922,7 @@ files:
6829
6922
  - tracks/java/exercises/meetup/build.gradle
6830
6923
  - tracks/java/exercises/meetup/src/main/java/MeetupSchedule.java
6831
6924
  - tracks/java/exercises/meetup/src/test/java/MeetupTest.java
6925
+ - tracks/java/exercises/minesweeper/.meta/.version
6832
6926
  - tracks/java/exercises/minesweeper/.meta/src/reference/java/MinesweeperBoard.java
6833
6927
  - tracks/java/exercises/minesweeper/README.md
6834
6928
  - tracks/java/exercises/minesweeper/build.gradle
@@ -6860,16 +6954,19 @@ files:
6860
6954
  - tracks/java/exercises/palindrome-products/build.gradle
6861
6955
  - tracks/java/exercises/palindrome-products/src/main/java/.keep
6862
6956
  - tracks/java/exercises/palindrome-products/src/test/java/PalindromeCalculatorTest.java
6957
+ - tracks/java/exercises/pangram/.meta/.version
6863
6958
  - tracks/java/exercises/pangram/.meta/src/reference/java/PangramChecker.java
6864
6959
  - tracks/java/exercises/pangram/README.md
6865
6960
  - tracks/java/exercises/pangram/build.gradle
6866
6961
  - tracks/java/exercises/pangram/src/main/java/PangramChecker.java
6867
6962
  - tracks/java/exercises/pangram/src/test/java/PangramCheckerTest.java
6963
+ - tracks/java/exercises/pascals-triangle/.meta/.version
6868
6964
  - tracks/java/exercises/pascals-triangle/.meta/src/reference/java/PascalsTriangleGenerator.java
6869
6965
  - tracks/java/exercises/pascals-triangle/README.md
6870
6966
  - tracks/java/exercises/pascals-triangle/build.gradle
6871
6967
  - tracks/java/exercises/pascals-triangle/src/main/java/.keep
6872
6968
  - tracks/java/exercises/pascals-triangle/src/test/java/PascalsTriangleGeneratorTest.java
6969
+ - tracks/java/exercises/perfect-numbers/.meta/.version
6873
6970
  - tracks/java/exercises/perfect-numbers/.meta/src/reference/java/Classification.java
6874
6971
  - tracks/java/exercises/perfect-numbers/.meta/src/reference/java/NaturalNumber.java
6875
6972
  - tracks/java/exercises/perfect-numbers/README.md
@@ -6920,6 +7017,7 @@ files:
6920
7017
  - tracks/java/exercises/rectangles/build.gradle
6921
7018
  - tracks/java/exercises/rectangles/src/main/java/.keep
6922
7019
  - tracks/java/exercises/rectangles/src/test/java/RectangleCounterTest.java
7020
+ - tracks/java/exercises/rna-transcription/.meta/.version
6923
7021
  - tracks/java/exercises/rna-transcription/.meta/src/reference/java/RnaTranscription.java
6924
7022
  - tracks/java/exercises/rna-transcription/README.md
6925
7023
  - tracks/java/exercises/rna-transcription/build.gradle
@@ -6953,12 +7051,14 @@ files:
6953
7051
  - tracks/java/exercises/run-length-encoding/build.gradle
6954
7052
  - tracks/java/exercises/run-length-encoding/src/main/java/.keep
6955
7053
  - tracks/java/exercises/run-length-encoding/src/test/java/RunLengthEncodingTest.java
7054
+ - tracks/java/exercises/saddle-points/.meta/.version
6956
7055
  - tracks/java/exercises/saddle-points/.meta/src/reference/java/Matrix.java
6957
7056
  - tracks/java/exercises/saddle-points/.meta/src/reference/java/MatrixCoordinate.java
6958
7057
  - tracks/java/exercises/saddle-points/README.md
6959
7058
  - tracks/java/exercises/saddle-points/build.gradle
6960
7059
  - tracks/java/exercises/saddle-points/src/main/java/MatrixCoordinate.java
6961
7060
  - tracks/java/exercises/saddle-points/src/test/java/MatrixTest.java
7061
+ - tracks/java/exercises/scrabble-score/.meta/.version
6962
7062
  - tracks/java/exercises/scrabble-score/.meta/src/reference/java/Scrabble.java
6963
7063
  - tracks/java/exercises/scrabble-score/README.md
6964
7064
  - tracks/java/exercises/scrabble-score/build.gradle
@@ -7000,6 +7100,7 @@ files:
7000
7100
  - tracks/java/exercises/space-age/build.gradle
7001
7101
  - tracks/java/exercises/space-age/src/main/java/SpaceAge.java
7002
7102
  - tracks/java/exercises/space-age/src/test/java/SpaceAgeTest.java
7103
+ - tracks/java/exercises/spiral-matrix/.meta/.version
7003
7104
  - tracks/java/exercises/spiral-matrix/.meta/src/reference/java/Coordinate.java
7004
7105
  - tracks/java/exercises/spiral-matrix/.meta/src/reference/java/Direction.java
7005
7106
  - tracks/java/exercises/spiral-matrix/.meta/src/reference/java/SpiralMatrixBuilder.java
@@ -7063,6 +7164,7 @@ files:
7063
7164
  - tracks/java/exercises/word-count/build.gradle
7064
7165
  - tracks/java/exercises/word-count/src/main/java/.keep
7065
7166
  - tracks/java/exercises/word-count/src/test/java/WordCountTest.java
7167
+ - tracks/java/exercises/word-search/.meta/.version
7066
7168
  - tracks/java/exercises/word-search/.meta/src/reference/java/Pair.java
7067
7169
  - tracks/java/exercises/word-search/.meta/src/reference/java/WordLocation.java
7068
7170
  - tracks/java/exercises/word-search/.meta/src/reference/java/WordSearcher.java
@@ -7273,6 +7375,9 @@ files:
7273
7375
  - tracks/javascript/exercises/prime-factors/README.md
7274
7376
  - tracks/javascript/exercises/prime-factors/example.js
7275
7377
  - tracks/javascript/exercises/prime-factors/prime-factors.spec.js
7378
+ - tracks/javascript/exercises/protein-translation/README.md
7379
+ - tracks/javascript/exercises/protein-translation/example.js
7380
+ - tracks/javascript/exercises/protein-translation/protein-translation.spec.js
7276
7381
  - tracks/javascript/exercises/proverb/README.md
7277
7382
  - tracks/javascript/exercises/proverb/example.js
7278
7383
  - tracks/javascript/exercises/proverb/proverb.spec.js
@@ -7344,7 +7449,6 @@ files:
7344
7449
  - tracks/javascript/exercises/trinary/trinary.spec.js
7345
7450
  - tracks/javascript/exercises/twelve-days/README.md
7346
7451
  - tracks/javascript/exercises/twelve-days/example.js
7347
- - tracks/javascript/exercises/twelve-days/package.json
7348
7452
  - tracks/javascript/exercises/twelve-days/twelve-days.spec.js
7349
7453
  - tracks/javascript/exercises/two-bucket/README.md
7350
7454
  - tracks/javascript/exercises/two-bucket/example.js
@@ -7660,8 +7764,8 @@ files:
7660
7764
  - tracks/kotlin/exercises/hamming/build.gradle
7661
7765
  - tracks/kotlin/exercises/hamming/src/main/kotlin/.keep
7662
7766
  - tracks/kotlin/exercises/hamming/src/test/kotlin/HammingTest.kt
7767
+ - tracks/kotlin/exercises/hello-world/.meta/hints.md
7663
7768
  - tracks/kotlin/exercises/hello-world/.meta/src/reference/kotlin/HelloWorld.kt
7664
- - tracks/kotlin/exercises/hello-world/GETTING_STARTED.md
7665
7769
  - tracks/kotlin/exercises/hello-world/README.md
7666
7770
  - tracks/kotlin/exercises/hello-world/TUTORIAL.md
7667
7771
  - tracks/kotlin/exercises/hello-world/build.gradle
@@ -7866,6 +7970,11 @@ files:
7866
7970
  - tracks/kotlin/exercises/triangle/build.gradle
7867
7971
  - tracks/kotlin/exercises/triangle/src/main/kotlin/.keep
7868
7972
  - tracks/kotlin/exercises/triangle/src/test/kotlin/TriangleTest.kt
7973
+ - tracks/kotlin/exercises/two-fer/.meta/src/reference/kotlin/Twofer.kt
7974
+ - tracks/kotlin/exercises/two-fer/README.md
7975
+ - tracks/kotlin/exercises/two-fer/build.gradle
7976
+ - tracks/kotlin/exercises/two-fer/src/main/kotlin/.keep
7977
+ - tracks/kotlin/exercises/two-fer/src/test/kotlin/TwoferTest.kt
7869
7978
  - tracks/kotlin/exercises/word-count/.meta/src/reference/kotlin/WordCount.kt
7870
7979
  - tracks/kotlin/exercises/word-count/README.md
7871
7980
  - tracks/kotlin/exercises/word-count/build.gradle
@@ -9590,6 +9699,8 @@ files:
9590
9699
  - tracks/php/exercises/sum-of-multiples/README.md
9591
9700
  - tracks/php/exercises/sum-of-multiples/example.php
9592
9701
  - tracks/php/exercises/sum-of-multiples/sum-of-multiples_test.php
9702
+ - tracks/php/exercises/transpose/example.php
9703
+ - tracks/php/exercises/transpose/transpose_test.php
9593
9704
  - tracks/php/exercises/triangle/README.md
9594
9705
  - tracks/php/exercises/triangle/example.php
9595
9706
  - tracks/php/exercises/triangle/triangle_test.php
@@ -9606,7 +9717,7 @@ files:
9606
9717
  - tracks/php/exercises/wordy/example.php
9607
9718
  - tracks/php/exercises/wordy/wordy_test.php
9608
9719
  - tracks/php/img/icon.png
9609
- - tracks/php/phpcs-xphp.xml
9720
+ - tracks/php/phpcs-php.xml
9610
9721
  - tracks/php/phpunit.xml
9611
9722
  - tracks/plsql/.git
9612
9723
  - tracks/plsql/.gitignore
@@ -10047,6 +10158,10 @@ files:
10047
10158
  - tracks/python/exercises/difference-of-squares/difference_of_squares.py
10048
10159
  - tracks/python/exercises/difference-of-squares/difference_of_squares_test.py
10049
10160
  - tracks/python/exercises/difference-of-squares/example.py
10161
+ - tracks/python/exercises/diffie-hellman/README.md
10162
+ - tracks/python/exercises/diffie-hellman/diffie_hellman.py
10163
+ - tracks/python/exercises/diffie-hellman/diffie_hellman_test.py
10164
+ - tracks/python/exercises/diffie-hellman/example.py
10050
10165
  - tracks/python/exercises/etl/README.md
10051
10166
  - tracks/python/exercises/etl/etl.py
10052
10167
  - tracks/python/exercises/etl/etl_test.py
@@ -10055,6 +10170,14 @@ files:
10055
10170
  - tracks/python/exercises/flatten-array/example.py
10056
10171
  - tracks/python/exercises/flatten-array/flatten_array.py
10057
10172
  - tracks/python/exercises/flatten-array/flatten_array_test.py
10173
+ - tracks/python/exercises/food-chain/README.md
10174
+ - tracks/python/exercises/food-chain/example.py
10175
+ - tracks/python/exercises/food-chain/food_chain.py
10176
+ - tracks/python/exercises/food-chain/food_chain_test.py
10177
+ - tracks/python/exercises/forth/README.md
10178
+ - tracks/python/exercises/forth/example.py
10179
+ - tracks/python/exercises/forth/forth.py
10180
+ - tracks/python/exercises/forth/forth_test.py
10058
10181
  - tracks/python/exercises/gigasecond/README.md
10059
10182
  - tracks/python/exercises/gigasecond/example.py
10060
10183
  - tracks/python/exercises/gigasecond/gigasecond.py
@@ -10115,6 +10238,10 @@ files:
10115
10238
  - tracks/python/exercises/luhn/example.py
10116
10239
  - tracks/python/exercises/luhn/luhn.py
10117
10240
  - tracks/python/exercises/luhn/luhn_test.py
10241
+ - tracks/python/exercises/markdown/README.md
10242
+ - tracks/python/exercises/markdown/example.py
10243
+ - tracks/python/exercises/markdown/markdown.py
10244
+ - tracks/python/exercises/markdown/markdown_test.py
10118
10245
  - tracks/python/exercises/matrix/README.md
10119
10246
  - tracks/python/exercises/matrix/example.py
10120
10247
  - tracks/python/exercises/matrix/matrix.py
@@ -11147,6 +11274,12 @@ files:
11147
11274
  - tracks/rust/exercises/clock/example.rs
11148
11275
  - tracks/rust/exercises/clock/src/lib.rs
11149
11276
  - tracks/rust/exercises/clock/tests/clock.rs
11277
+ - tracks/rust/exercises/collatz-conjecture/Cargo.lock
11278
+ - tracks/rust/exercises/collatz-conjecture/Cargo.toml
11279
+ - tracks/rust/exercises/collatz-conjecture/README.md
11280
+ - tracks/rust/exercises/collatz-conjecture/example.rs
11281
+ - tracks/rust/exercises/collatz-conjecture/src/lib.rs
11282
+ - tracks/rust/exercises/collatz-conjecture/tests/collatz-conjecture.rs
11150
11283
  - tracks/rust/exercises/crypto-square/.gitignore
11151
11284
  - tracks/rust/exercises/crypto-square/Cargo-example.toml
11152
11285
  - tracks/rust/exercises/crypto-square/Cargo.toml
@@ -11161,6 +11294,15 @@ files:
11161
11294
  - tracks/rust/exercises/custom-set/example.rs
11162
11295
  - tracks/rust/exercises/custom-set/src/lib.rs
11163
11296
  - tracks/rust/exercises/custom-set/tests/custom-set.rs
11297
+ - tracks/rust/exercises/decimal/.gitignore
11298
+ - tracks/rust/exercises/decimal/.meta/description.md
11299
+ - tracks/rust/exercises/decimal/.meta/metadata.yml
11300
+ - tracks/rust/exercises/decimal/Cargo-example.toml
11301
+ - tracks/rust/exercises/decimal/Cargo.toml
11302
+ - tracks/rust/exercises/decimal/README.md
11303
+ - tracks/rust/exercises/decimal/example.rs
11304
+ - tracks/rust/exercises/decimal/src/lib.rs
11305
+ - tracks/rust/exercises/decimal/tests/decimal.rs
11164
11306
  - tracks/rust/exercises/difference-of-squares/.gitignore
11165
11307
  - tracks/rust/exercises/difference-of-squares/Cargo.lock
11166
11308
  - tracks/rust/exercises/difference-of-squares/Cargo.toml
@@ -12922,6 +13064,14 @@ files:
12922
13064
  - tracks/typescript/exercises/binary-search-tree/tsconfig.json
12923
13065
  - tracks/typescript/exercises/binary-search-tree/tslint.json
12924
13066
  - tracks/typescript/exercises/binary-search-tree/yarn.lock
13067
+ - tracks/typescript/exercises/binary-search/README.md
13068
+ - tracks/typescript/exercises/binary-search/binary-search.example.ts
13069
+ - tracks/typescript/exercises/binary-search/binary-search.test.ts
13070
+ - tracks/typescript/exercises/binary-search/binary-search.ts
13071
+ - tracks/typescript/exercises/binary-search/package.json
13072
+ - tracks/typescript/exercises/binary-search/tsconfig.json
13073
+ - tracks/typescript/exercises/binary-search/tslint.json
13074
+ - tracks/typescript/exercises/binary-search/yarn.lock
12925
13075
  - tracks/typescript/exercises/bob/README.md
12926
13076
  - tracks/typescript/exercises/bob/bob.example.ts
12927
13077
  - tracks/typescript/exercises/bob/bob.test.ts
@@ -13026,6 +13176,14 @@ files:
13026
13176
  - tracks/typescript/exercises/pangram/tsconfig.json
13027
13177
  - tracks/typescript/exercises/pangram/tslint.json
13028
13178
  - tracks/typescript/exercises/pangram/yarn.lock
13179
+ - tracks/typescript/exercises/pascals-triangle/README.md
13180
+ - tracks/typescript/exercises/pascals-triangle/package.json
13181
+ - tracks/typescript/exercises/pascals-triangle/pascals-triangle.example.ts
13182
+ - tracks/typescript/exercises/pascals-triangle/pascals-triangle.test.ts
13183
+ - tracks/typescript/exercises/pascals-triangle/pascals-triangle.ts
13184
+ - tracks/typescript/exercises/pascals-triangle/tsconfig.json
13185
+ - tracks/typescript/exercises/pascals-triangle/tslint.json
13186
+ - tracks/typescript/exercises/pascals-triangle/yarn.lock
13029
13187
  - tracks/typescript/exercises/phone-number/README.md
13030
13188
  - tracks/typescript/exercises/phone-number/package.json
13031
13189
  - tracks/typescript/exercises/phone-number/phone-number.example.ts
@@ -13066,6 +13224,14 @@ files:
13066
13224
  - tracks/typescript/exercises/robot-name/tsconfig.json
13067
13225
  - tracks/typescript/exercises/robot-name/tslint.json
13068
13226
  - tracks/typescript/exercises/robot-name/yarn.lock
13227
+ - tracks/typescript/exercises/rotational-cipher/README.md
13228
+ - tracks/typescript/exercises/rotational-cipher/package.json
13229
+ - tracks/typescript/exercises/rotational-cipher/rotational-cipher.example.ts
13230
+ - tracks/typescript/exercises/rotational-cipher/rotational-cipher.test.ts
13231
+ - tracks/typescript/exercises/rotational-cipher/rotational-cipher.ts
13232
+ - tracks/typescript/exercises/rotational-cipher/tsconfig.json
13233
+ - tracks/typescript/exercises/rotational-cipher/tslint.json
13234
+ - tracks/typescript/exercises/rotational-cipher/yarn.lock
13069
13235
  - tracks/typescript/exercises/say/README.md
13070
13236
  - tracks/typescript/exercises/say/package.json
13071
13237
  - tracks/typescript/exercises/say/say.example.ts