trackler 2.1.0.53 → 2.1.0.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1051) hide show
  1. checksums.yaml +4 -4
  2. data/bin/update +1 -1
  3. data/lib/trackler/version.rb +1 -1
  4. data/tracks/c/.travis.yml +1 -1
  5. data/tracks/c/config.json +9 -0
  6. data/tracks/c/exercises/all-your-base/makefile +15 -0
  7. data/tracks/c/exercises/all-your-base/src/all_your_base.h +6 -0
  8. data/tracks/c/exercises/all-your-base/src/example.c +41 -0
  9. data/tracks/c/exercises/all-your-base/src/example.h +12 -0
  10. data/tracks/c/exercises/all-your-base/test/test_all_your_base.c +202 -0
  11. data/tracks/c/exercises/all-your-base/test/vendor/unity.c +1300 -0
  12. data/tracks/c/exercises/all-your-base/test/vendor/unity.h +274 -0
  13. data/tracks/c/exercises/all-your-base/test/vendor/unity_internals.h +701 -0
  14. data/tracks/ceylon/.travis.yml +1 -1
  15. data/tracks/clojure/.travis.yml +1 -1
  16. data/tracks/clojure/exercises/rotational-cipher/src/example.clj +21 -15
  17. data/tracks/clojure/exercises/rotational-cipher/test/rotational_cipher_test.clj +14 -1
  18. data/tracks/cpp/.travis.yml +1 -1
  19. data/tracks/crystal/.gitignore +7 -2
  20. data/tracks/crystal/.travis.yml +1 -1
  21. data/tracks/crystal/Makefile +27 -10
  22. data/tracks/crystal/README.md +6 -6
  23. data/tracks/crystal/config.json +7 -0
  24. data/tracks/crystal/exercises/flatten-array/spec/flatten_array_spec.cr +28 -0
  25. data/tracks/crystal/exercises/flatten-array/src/example.cr +7 -0
  26. data/tracks/crystal/generator/generator.cr +20 -0
  27. data/tracks/crystal/generator/shard.lock +6 -0
  28. data/tracks/crystal/generator/shard.yml +9 -0
  29. data/tracks/crystal/{src/generator → generator}/spec/exercise_generator_spec.cr +2 -2
  30. data/tracks/crystal/{src/generator → generator}/spec/exercise_test_case_spec.cr +1 -1
  31. data/tracks/crystal/generator/spec/remote_data_file_spec.cr +58 -0
  32. data/tracks/crystal/{src/generator/exercises → generator/src}/exercise_generator.cr +10 -2
  33. data/tracks/crystal/{src/generator/exercises → generator/src}/exercise_test_case.cr +0 -0
  34. data/tracks/crystal/{src/generator/exercises → generator/src/generators}/acronym.cr +2 -2
  35. data/tracks/crystal/{src/generator/exercises → generator/src/generators}/binary.cr +2 -2
  36. data/tracks/crystal/{src/generator/exercises → generator/src/generators}/difference_of_squares.cr +2 -2
  37. data/tracks/crystal/generator/src/generators/flatten_array.cr +43 -0
  38. data/tracks/crystal/{src/generator/exercises → generator/src/generators}/forth.cr +2 -2
  39. data/tracks/crystal/{src/generator/exercises → generator/src/generators}/hello_world.cr +2 -2
  40. data/tracks/crystal/{src/generator/exercises → generator/src/generators}/pascals-triangle.cr +2 -2
  41. data/tracks/crystal/{src/generator/exercises → generator/src/generators}/run_length_encoding.cr +2 -2
  42. data/tracks/crystal/generator/src/remote_data_file.cr +57 -0
  43. data/tracks/crystal/{src/generator/exercises → generator/src}/templates/example.tt +0 -0
  44. data/tracks/csharp/.travis.yml +1 -1
  45. data/tracks/csharp/circle.yml +2 -2
  46. data/tracks/csharp/exercises/all-your-base/AllYourBaseTest.cs +14 -13
  47. data/tracks/csharp/exercises/allergies/Allergies.cs +1 -1
  48. data/tracks/csharp/exercises/allergies/AllergiesTest.cs +49 -46
  49. data/tracks/csharp/exercises/allergies/Example.cs +1 -1
  50. data/tracks/csharp/exercises/alphametics/AlphameticsTest.cs +9 -7
  51. data/tracks/csharp/exercises/anagram/Anagram.cs +2 -2
  52. data/tracks/csharp/exercises/anagram/AnagramTest.cs +100 -44
  53. data/tracks/csharp/exercises/anagram/Example.cs +6 -6
  54. data/tracks/csharp/exercises/binary-search/BinarySearch.cs +7 -2
  55. data/tracks/csharp/exercises/binary-search/BinarySearchTest.cs +47 -28
  56. data/tracks/csharp/exercises/binary-search/Example.cs +14 -18
  57. data/tracks/csharp/exercises/bracket-push/BracketPush.cs +16 -3
  58. data/tracks/csharp/exercises/bracket-push/BracketPushTest.cs +41 -25
  59. data/tracks/csharp/exercises/bracket-push/Example.cs +3 -3
  60. data/tracks/csharp/exercises/crypto-square/CryptoSquare.cs +8 -24
  61. data/tracks/csharp/exercises/crypto-square/CryptoSquareTest.cs +49 -64
  62. data/tracks/csharp/exercises/crypto-square/Example.cs +20 -38
  63. data/tracks/csharp/exercises/nth-prime/NthPrimeTest.cs +2 -1
  64. data/tracks/csharp/exercises/perfect-numbers/PerfectNumbersTest.cs +3 -2
  65. data/tracks/csharp/exercises/wordy/WordyTest.cs +3 -2
  66. data/tracks/csharp/generators/.gitignore +2 -0
  67. data/tracks/csharp/generators/ExerciseCollection.cs +6 -6
  68. data/tracks/csharp/generators/Exercises/AllYourBase.cs +11 -2
  69. data/tracks/csharp/generators/Exercises/Allergies.cs +57 -0
  70. data/tracks/csharp/generators/Exercises/Alphametics.cs +33 -0
  71. data/tracks/csharp/generators/Exercises/Anagram.cs +26 -0
  72. data/tracks/csharp/generators/Exercises/BeerSong.cs +1 -1
  73. data/tracks/csharp/generators/Exercises/BinarySearch.cs +23 -0
  74. data/tracks/csharp/generators/Exercises/BookStore.cs +7 -3
  75. data/tracks/csharp/generators/Exercises/BracketPush.cs +14 -0
  76. data/tracks/csharp/generators/Exercises/CryptoSquare.cs +19 -0
  77. data/tracks/csharp/generators/Exercises/FoodChain.cs +1 -1
  78. data/tracks/csharp/generators/Exercises/NthPrime.cs +9 -0
  79. data/tracks/csharp/generators/Exercises/PerfectNumbers.cs +8 -0
  80. data/tracks/csharp/generators/Exercises/Transpose.cs +7 -3
  81. data/tracks/csharp/generators/Exercises/Wordy.cs +9 -0
  82. data/tracks/csharp/generators/Generators.csproj +2 -0
  83. data/tracks/csharp/generators/Input/CanonicalDataCase.cs +12 -3
  84. data/tracks/csharp/generators/Input/CanonicalDataCaseJsonConverter.cs +2 -5
  85. data/tracks/csharp/generators/Input/CanonicalDataFile.cs +28 -0
  86. data/tracks/csharp/generators/Input/CanonicalDataParser.cs +3 -13
  87. data/tracks/csharp/generators/Options.cs +12 -0
  88. data/tracks/csharp/generators/Output/BooleanTestMethodGenerator.cs +1 -1
  89. data/tracks/csharp/generators/Output/EqualityTestMethodGenerator.cs +18 -1
  90. data/tracks/csharp/generators/Output/ExceptionTestMethodGenerator.cs +6 -3
  91. data/tracks/csharp/generators/Output/TestClassFile.cs +1 -1
  92. data/tracks/csharp/generators/Output/TestMethod.cs +2 -0
  93. data/tracks/csharp/generators/Output/TestMethodGenerator.cs +23 -24
  94. data/tracks/csharp/generators/Output/ValueFormatter.cs +14 -16
  95. data/tracks/csharp/generators/Program.cs +6 -7
  96. data/tracks/dart/.travis.yml +1 -1
  97. data/tracks/dart/README.md +1 -1
  98. data/tracks/dart/tool/create-exercise +0 -0
  99. data/tracks/delphi/.travis.yml +1 -1
  100. data/tracks/delphi/config.json +9 -0
  101. data/tracks/delphi/docs/TESTS.md +2 -2
  102. data/tracks/delphi/exercises/wordy/Wordy.dpr +60 -0
  103. data/tracks/delphi/exercises/wordy/uWordyExample.pas +130 -0
  104. data/tracks/delphi/exercises/wordy/uWordyTests.pas +184 -0
  105. data/tracks/ecmascript/.travis.yml +1 -1
  106. data/tracks/ecmascript/Makefile +1 -1
  107. data/tracks/ecmascript/README.md +1 -1
  108. data/tracks/ecmascript/config.json +7 -0
  109. data/tracks/ecmascript/docs/EXERCISE_README_INSERT.md +3 -3
  110. data/tracks/ecmascript/docs/TESTS.md +3 -4
  111. data/tracks/ecmascript/exercises/accumulate/accumulate.spec.js +5 -5
  112. data/tracks/ecmascript/exercises/accumulate/package.json +8 -3
  113. data/tracks/ecmascript/exercises/acronym/acronym.spec.js +6 -6
  114. data/tracks/ecmascript/exercises/acronym/package.json +8 -3
  115. data/tracks/ecmascript/exercises/all-your-base/all-your-base.spec.js +25 -25
  116. data/tracks/ecmascript/exercises/all-your-base/package.json +8 -3
  117. data/tracks/ecmascript/exercises/allergies/allergies.spec.js +12 -12
  118. data/tracks/ecmascript/exercises/allergies/package.json +8 -3
  119. data/tracks/ecmascript/exercises/alphametics/alphametics.spec.js +95 -95
  120. data/tracks/ecmascript/exercises/alphametics/package.json +8 -3
  121. data/tracks/ecmascript/exercises/anagram/anagram.spec.js +11 -11
  122. data/tracks/ecmascript/exercises/anagram/package.json +8 -3
  123. data/tracks/ecmascript/exercises/atbash-cipher/atbash-cipher.spec.js +8 -8
  124. data/tracks/ecmascript/exercises/atbash-cipher/package.json +8 -3
  125. data/tracks/ecmascript/exercises/beer-song/beer-song.spec.js +6 -6
  126. data/tracks/ecmascript/exercises/beer-song/package.json +8 -3
  127. data/tracks/ecmascript/exercises/binary-search-tree/binary-search-tree.spec.js +9 -9
  128. data/tracks/ecmascript/exercises/binary-search-tree/package.json +8 -3
  129. data/tracks/ecmascript/exercises/binary-search/binary-search.spec.js +3 -3
  130. data/tracks/ecmascript/exercises/binary-search/package.json +8 -3
  131. data/tracks/ecmascript/exercises/binary/binary.spec.js +10 -10
  132. data/tracks/ecmascript/exercises/binary/package.json +8 -3
  133. data/tracks/ecmascript/exercises/bob/bob.spec.js +17 -17
  134. data/tracks/ecmascript/exercises/bob/package.json +8 -3
  135. data/tracks/ecmascript/exercises/bracket-push/bracket-push.spec.js +8 -8
  136. data/tracks/ecmascript/exercises/bracket-push/package.json +8 -3
  137. data/tracks/ecmascript/exercises/circular-buffer/circular-buffer.spec.js +11 -11
  138. data/tracks/ecmascript/exercises/circular-buffer/package.json +8 -3
  139. data/tracks/ecmascript/exercises/clock/clock.spec.js +50 -50
  140. data/tracks/ecmascript/exercises/clock/package.json +8 -3
  141. data/tracks/ecmascript/exercises/connect/connect.spec.js +10 -10
  142. data/tracks/ecmascript/exercises/connect/package.json +8 -3
  143. data/tracks/ecmascript/exercises/crypto-square/crypto-square.spec.js +10 -10
  144. data/tracks/ecmascript/exercises/crypto-square/package.json +8 -3
  145. data/tracks/ecmascript/exercises/custom-set/custom-set.spec.js +11 -11
  146. data/tracks/ecmascript/exercises/custom-set/package.json +8 -3
  147. data/tracks/ecmascript/exercises/diamond/diamond.spec.js +3 -3
  148. data/tracks/ecmascript/exercises/diamond/package.json +8 -3
  149. data/tracks/ecmascript/exercises/difference-of-squares/difference-of-squares.spec.js +9 -9
  150. data/tracks/ecmascript/exercises/difference-of-squares/package.json +8 -3
  151. data/tracks/ecmascript/exercises/diffie-hellman/diffie-hellman.spec.js +94 -0
  152. data/tracks/ecmascript/exercises/diffie-hellman/example.js +37 -0
  153. data/tracks/ecmascript/exercises/{package.json → diffie-hellman/package.json} +67 -14
  154. data/tracks/ecmascript/exercises/etl/etl.spec.js +4 -4
  155. data/tracks/ecmascript/exercises/etl/package.json +8 -3
  156. data/tracks/ecmascript/exercises/flatten-array/flatten-array.spec.js +9 -9
  157. data/tracks/ecmascript/exercises/flatten-array/package.json +67 -14
  158. data/tracks/ecmascript/exercises/food-chain/food-chain.spec.js +10 -10
  159. data/tracks/ecmascript/exercises/food-chain/package.json +8 -3
  160. data/tracks/ecmascript/exercises/gigasecond/gigasecond.spec.js +4 -4
  161. data/tracks/ecmascript/exercises/gigasecond/package.json +8 -3
  162. data/tracks/ecmascript/exercises/grade-school/grade-school.spec.js +9 -9
  163. data/tracks/ecmascript/exercises/grade-school/package.json +8 -3
  164. data/tracks/ecmascript/exercises/grains/big-integer.spec.js +5 -5
  165. data/tracks/ecmascript/exercises/grains/grains.spec.js +8 -8
  166. data/tracks/ecmascript/exercises/grains/package.json +8 -3
  167. data/tracks/ecmascript/exercises/hamming/hamming.spec.js +8 -8
  168. data/tracks/ecmascript/exercises/hamming/package.json +8 -3
  169. data/tracks/ecmascript/exercises/hello-world/hello-world.spec.js +1 -1
  170. data/tracks/ecmascript/exercises/hello-world/package.json +8 -3
  171. data/tracks/ecmascript/exercises/hexadecimal/hexadecimal.spec.js +10 -10
  172. data/tracks/ecmascript/exercises/hexadecimal/package.json +8 -3
  173. data/tracks/ecmascript/exercises/isogram/isogram.spec.js +10 -10
  174. data/tracks/ecmascript/exercises/isogram/package.json +8 -3
  175. data/tracks/ecmascript/exercises/kindergarten-garden/kindergarten-garden.spec.js +21 -21
  176. data/tracks/ecmascript/exercises/kindergarten-garden/package.json +8 -3
  177. data/tracks/ecmascript/exercises/largest-series-product/largest-series-product.spec.js +12 -12
  178. data/tracks/ecmascript/exercises/largest-series-product/package.json +8 -3
  179. data/tracks/ecmascript/exercises/leap/leap.spec.js +4 -4
  180. data/tracks/ecmascript/exercises/leap/package.json +8 -3
  181. data/tracks/ecmascript/exercises/linked-list/linked-list.spec.js +11 -11
  182. data/tracks/ecmascript/exercises/linked-list/package.json +8 -3
  183. data/tracks/ecmascript/exercises/list-ops/list-ops.spec.js +17 -17
  184. data/tracks/ecmascript/exercises/list-ops/package.json +67 -14
  185. data/tracks/ecmascript/exercises/luhn/luhn.spec.js +6 -6
  186. data/tracks/ecmascript/exercises/luhn/package.json +8 -3
  187. data/tracks/ecmascript/exercises/matrix/matrix.spec.js +3 -3
  188. data/tracks/ecmascript/exercises/matrix/package.json +8 -3
  189. data/tracks/ecmascript/exercises/meetup/meetup.spec.js +13 -13
  190. data/tracks/ecmascript/exercises/meetup/package.json +8 -3
  191. data/tracks/ecmascript/exercises/nth-prime/nth-prime.spec.js +5 -5
  192. data/tracks/ecmascript/exercises/nth-prime/package.json +8 -3
  193. data/tracks/ecmascript/exercises/ocr-numbers/ocr-numbers.spec.js +16 -16
  194. data/tracks/ecmascript/exercises/ocr-numbers/package.json +8 -3
  195. data/tracks/ecmascript/exercises/octal/octal.spec.js +10 -10
  196. data/tracks/ecmascript/exercises/octal/package.json +8 -3
  197. data/tracks/ecmascript/exercises/palindrome-products/package.json +8 -3
  198. data/tracks/ecmascript/exercises/palindrome-products/palindrome-products.spec.js +5 -5
  199. data/tracks/ecmascript/exercises/pangram/package.json +8 -3
  200. data/tracks/ecmascript/exercises/pangram/pangram.spec.js +9 -9
  201. data/tracks/ecmascript/exercises/pascals-triangle/package.json +8 -3
  202. data/tracks/ecmascript/exercises/pascals-triangle/pascals-triangle.spec.js +6 -6
  203. data/tracks/ecmascript/exercises/perfect-numbers/package.json +8 -3
  204. data/tracks/ecmascript/exercises/perfect-numbers/perfect-numbers.spec.js +13 -13
  205. data/tracks/ecmascript/exercises/phone-number/package.json +8 -3
  206. data/tracks/ecmascript/exercises/phone-number/phone-number.spec.js +10 -10
  207. data/tracks/ecmascript/exercises/pig-latin/package.json +8 -3
  208. data/tracks/ecmascript/exercises/pig-latin/pig-latin.spec.js +11 -11
  209. data/tracks/ecmascript/exercises/prime-factors/package.json +8 -3
  210. data/tracks/ecmascript/exercises/prime-factors/prime-factors.spec.js +11 -11
  211. data/tracks/ecmascript/exercises/pythagorean-triplet/package.json +8 -3
  212. data/tracks/ecmascript/exercises/pythagorean-triplet/pythagorean-triplet.spec.js +7 -7
  213. data/tracks/ecmascript/exercises/queen-attack/package.json +8 -3
  214. data/tracks/ecmascript/exercises/queen-attack/queen-attack.spec.js +12 -12
  215. data/tracks/ecmascript/exercises/raindrops/package.json +8 -3
  216. data/tracks/ecmascript/exercises/raindrops/raindrops.spec.js +16 -16
  217. data/tracks/ecmascript/exercises/rna-transcription/package.json +8 -3
  218. data/tracks/ecmascript/exercises/rna-transcription/rna-transcription.spec.js +8 -8
  219. data/tracks/ecmascript/exercises/robot-name/package.json +8 -3
  220. data/tracks/ecmascript/exercises/robot-name/robot-name.spec.js +10 -10
  221. data/tracks/ecmascript/exercises/robot-simulator/package.json +8 -3
  222. data/tracks/ecmascript/exercises/robot-simulator/robot-simulator.spec.js +23 -23
  223. data/tracks/ecmascript/exercises/roman-numerals/package.json +8 -3
  224. data/tracks/ecmascript/exercises/roman-numerals/roman-numerals.spec.js +18 -18
  225. data/tracks/ecmascript/exercises/saddle-points/package.json +8 -3
  226. data/tracks/ecmascript/exercises/saddle-points/saddle-points.spec.js +8 -8
  227. data/tracks/ecmascript/exercises/say/package.json +8 -3
  228. data/tracks/ecmascript/exercises/say/say.spec.js +16 -16
  229. data/tracks/ecmascript/exercises/scrabble-score/package.json +8 -3
  230. data/tracks/ecmascript/exercises/scrabble-score/scrabble-score.spec.js +6 -6
  231. data/tracks/ecmascript/exercises/secret-handshake/package.json +8 -3
  232. data/tracks/ecmascript/exercises/secret-handshake/secret-handshake.spec.js +8 -8
  233. data/tracks/ecmascript/exercises/series/package.json +8 -3
  234. data/tracks/ecmascript/exercises/series/series.spec.js +11 -11
  235. data/tracks/ecmascript/exercises/sieve/package.json +8 -3
  236. data/tracks/ecmascript/exercises/sieve/sieve.spec.js +3 -3
  237. data/tracks/ecmascript/exercises/simple-cipher/package.json +8 -3
  238. data/tracks/ecmascript/exercises/simple-cipher/simple-cipher.spec.js +13 -13
  239. data/tracks/ecmascript/exercises/space-age/package.json +8 -3
  240. data/tracks/ecmascript/exercises/space-age/space-age.spec.js +10 -10
  241. data/tracks/ecmascript/exercises/strain/package.json +8 -3
  242. data/tracks/ecmascript/exercises/strain/strain.spec.js +12 -12
  243. data/tracks/ecmascript/exercises/sum-of-multiples/package.json +8 -3
  244. data/tracks/ecmascript/exercises/sum-of-multiples/sum-of-multiples.spec.js +9 -9
  245. data/tracks/ecmascript/exercises/triangle/package.json +8 -3
  246. data/tracks/ecmascript/exercises/triangle/triangle.spec.js +15 -15
  247. data/tracks/ecmascript/exercises/trinary/package.json +8 -3
  248. data/tracks/ecmascript/exercises/trinary/trinary.spec.js +10 -10
  249. data/tracks/ecmascript/exercises/two-bucket/package.json +8 -3
  250. data/tracks/ecmascript/exercises/two-bucket/two-bucket.spec.js +4 -4
  251. data/tracks/ecmascript/exercises/word-count/package.json +8 -3
  252. data/tracks/ecmascript/exercises/word-count/word-count.spec.js +12 -12
  253. data/tracks/ecmascript/exercises/wordy/package.json +8 -3
  254. data/tracks/ecmascript/exercises/wordy/wordy.spec.js +16 -16
  255. data/tracks/ecmascript/package.json +8 -3
  256. data/tracks/elisp/.travis.yml +1 -1
  257. data/tracks/elixir/.travis.yml +1 -1
  258. data/tracks/elixir/config.json +11 -0
  259. data/tracks/elixir/exercises/dominoes/dominoes.exs +12 -0
  260. data/tracks/elixir/exercises/dominoes/dominoes_test.exs +80 -0
  261. data/tracks/elixir/exercises/dominoes/example.exs +40 -0
  262. data/tracks/elm/.travis.yml +1 -1
  263. data/tracks/elm/README.md +2 -0
  264. data/tracks/elm/bin/build.sh +1 -1
  265. data/tracks/elm/config.json +7 -0
  266. data/tracks/elm/docs/EXERCISE_README_INSERT.md +9 -0
  267. data/tracks/elm/docs/TESTS.md +8 -0
  268. data/tracks/elm/exercises/accumulate/package.json +1 -0
  269. data/tracks/elm/exercises/accumulate/tests/Tests.elm +13 -10
  270. data/tracks/elm/exercises/allergies/package.json +1 -0
  271. data/tracks/elm/exercises/allergies/tests/Tests.elm +37 -26
  272. data/tracks/elm/exercises/anagram/package.json +1 -0
  273. data/tracks/elm/exercises/anagram/tests/Tests.elm +95 -76
  274. data/tracks/elm/exercises/atbash-cipher/package.json +1 -0
  275. data/tracks/elm/exercises/atbash-cipher/tests/Tests.elm +31 -22
  276. data/tracks/elm/exercises/bob/package.json +1 -0
  277. data/tracks/elm/exercises/bob/tests/Tests.elm +114 -95
  278. data/tracks/elm/exercises/difference-of-squares/package.json +1 -0
  279. data/tracks/elm/exercises/difference-of-squares/tests/Tests.elm +27 -18
  280. data/tracks/elm/exercises/etl/Etl.elm +1 -0
  281. data/tracks/elm/exercises/etl/Etl.example.elm +15 -0
  282. data/tracks/elm/exercises/etl/elm-package.json +15 -0
  283. data/tracks/elm/exercises/etl/package.json +14 -0
  284. data/tracks/elm/exercises/etl/tests/Tests.elm +97 -0
  285. data/tracks/elm/exercises/etl/tests/elm-package.json +16 -0
  286. data/tracks/elm/exercises/gigasecond/package.json +1 -0
  287. data/tracks/elm/exercises/gigasecond/tests/Tests.elm +16 -12
  288. data/tracks/elm/exercises/grade-school/package.json +1 -0
  289. data/tracks/elm/exercises/grade-school/tests/Tests.elm +46 -41
  290. data/tracks/elm/exercises/grains/package.json +1 -0
  291. data/tracks/elm/exercises/grains/tests/Tests.elm +21 -14
  292. data/tracks/elm/exercises/hamming/package.json +1 -0
  293. data/tracks/elm/exercises/hamming/tests/Tests.elm +39 -26
  294. data/tracks/elm/exercises/hello-world/package.json +1 -0
  295. data/tracks/elm/exercises/hello-world/tests/Tests.elm +12 -6
  296. data/tracks/elm/exercises/largest-series-product/package.json +1 -0
  297. data/tracks/elm/exercises/largest-series-product/tests/Tests.elm +48 -32
  298. data/tracks/elm/exercises/leap/package.json +1 -0
  299. data/tracks/elm/exercises/leap/tests/Tests.elm +18 -12
  300. data/tracks/elm/exercises/list-ops/package.json +1 -0
  301. data/tracks/elm/exercises/list-ops/tests/Tests.elm +57 -38
  302. data/tracks/elm/exercises/nucleotide-count/package.json +1 -0
  303. data/tracks/elm/exercises/nucleotide-count/tests/Tests.elm +10 -8
  304. data/tracks/elm/exercises/pangram/package.json +1 -0
  305. data/tracks/elm/exercises/pangram/tests/Tests.elm +45 -36
  306. data/tracks/elm/exercises/phone-number/package.json +1 -0
  307. data/tracks/elm/exercises/phone-number/tests/Tests.elm +33 -22
  308. data/tracks/elm/exercises/raindrops/package.json +1 -0
  309. data/tracks/elm/exercises/raindrops/tests/Tests.elm +42 -28
  310. data/tracks/elm/exercises/rna-transcription/package.json +1 -0
  311. data/tracks/elm/exercises/rna-transcription/tests/Tests.elm +18 -12
  312. data/tracks/elm/exercises/robot-simulator/package.json +1 -0
  313. data/tracks/elm/exercises/robot-simulator/tests/Tests.elm +65 -47
  314. data/tracks/elm/exercises/roman-numerals/package.json +1 -0
  315. data/tracks/elm/exercises/roman-numerals/tests/Tests.elm +85 -68
  316. data/tracks/elm/exercises/run-length-encoding/package.json +1 -0
  317. data/tracks/elm/exercises/run-length-encoding/tests/Tests.elm +29 -22
  318. data/tracks/elm/exercises/say/package.json +1 -0
  319. data/tracks/elm/exercises/say/tests/Tests.elm +86 -70
  320. data/tracks/elm/exercises/scrabble-score/package.json +1 -0
  321. data/tracks/elm/exercises/scrabble-score/tests/Tests.elm +30 -20
  322. data/tracks/elm/exercises/series/package.json +1 -0
  323. data/tracks/elm/exercises/series/tests/Tests.elm +35 -28
  324. data/tracks/elm/exercises/space-age/package.json +1 -0
  325. data/tracks/elm/exercises/space-age/tests/Tests.elm +21 -14
  326. data/tracks/elm/exercises/strain/package.json +1 -0
  327. data/tracks/elm/exercises/strain/tests/Tests.elm +55 -44
  328. data/tracks/elm/exercises/sublist/package.json +1 -0
  329. data/tracks/elm/exercises/sublist/tests/Tests.elm +51 -34
  330. data/tracks/elm/exercises/sum-of-multiples/package.json +1 -0
  331. data/tracks/elm/exercises/sum-of-multiples/tests/Tests.elm +15 -10
  332. data/tracks/elm/exercises/triangle/package.json +1 -0
  333. data/tracks/elm/exercises/triangle/tests/Tests.elm +43 -28
  334. data/tracks/elm/exercises/word-count/package.json +1 -0
  335. data/tracks/elm/exercises/word-count/tests/Tests.elm +25 -20
  336. data/tracks/elm/package.json +0 -1
  337. data/tracks/erlang/.travis.yml +1 -1
  338. data/tracks/erlang/README.md +2 -2
  339. data/tracks/erlang/bin/journey-test.sh +1 -1
  340. data/tracks/erlang/config.json +7 -0
  341. data/tracks/erlang/docs/EXERCISE_README_INSERT.md +1 -1
  342. data/tracks/erlang/exercises/accumulate/.meta/readme.go.tmpl +17 -0
  343. data/tracks/erlang/exercises/accumulate/README.md +79 -0
  344. data/tracks/erlang/exercises/all-your-base/.meta/readme.go.tmpl +17 -0
  345. data/tracks/erlang/exercises/all-your-base/README.md +79 -0
  346. data/tracks/erlang/exercises/allergies/.meta/readme.go.tmpl +17 -0
  347. data/tracks/erlang/exercises/allergies/README.md +81 -0
  348. data/tracks/erlang/exercises/anagram/.meta/readme.go.tmpl +17 -0
  349. data/tracks/erlang/exercises/anagram/README.md +57 -0
  350. data/tracks/erlang/exercises/atbash-cipher/.meta/readme.go.tmpl +17 -0
  351. data/tracks/erlang/exercises/atbash-cipher/README.md +78 -0
  352. data/tracks/erlang/exercises/bank-account/.meta/readme.go.tmpl +17 -0
  353. data/tracks/erlang/exercises/bank-account/README.md +74 -0
  354. data/tracks/erlang/exercises/beer-song/.meta/readme.go.tmpl +17 -0
  355. data/tracks/erlang/exercises/beer-song/README.md +371 -0
  356. data/tracks/erlang/exercises/bob/.meta/readme.go.tmpl +17 -0
  357. data/tracks/erlang/exercises/bob/README.md +62 -0
  358. data/tracks/erlang/exercises/circular-buffer/.meta/readme.go.tmpl +17 -0
  359. data/tracks/erlang/exercises/circular-buffer/README.md +94 -0
  360. data/tracks/erlang/exercises/clock/.meta/readme.go.tmpl +17 -0
  361. data/tracks/erlang/exercises/clock/README.md +57 -0
  362. data/tracks/erlang/exercises/collatz-conjecture/.meta/readme.go.tmpl +17 -0
  363. data/tracks/erlang/exercises/collatz-conjecture/README.md +77 -0
  364. data/tracks/erlang/exercises/difference-of-squares/.meta/readme.go.tmpl +17 -0
  365. data/tracks/erlang/exercises/difference-of-squares/README.md +63 -0
  366. data/tracks/erlang/exercises/etl/.meta/readme.go.tmpl +17 -0
  367. data/tracks/erlang/exercises/etl/README.md +95 -0
  368. data/tracks/erlang/exercises/gigasecond/.meta/readme.go.tmpl +17 -0
  369. data/tracks/erlang/exercises/gigasecond/README.md +55 -0
  370. data/tracks/erlang/exercises/grade-school/.meta/readme.go.tmpl +17 -0
  371. data/tracks/erlang/exercises/grade-school/README.md +86 -0
  372. data/tracks/erlang/exercises/grains/.meta/readme.go.tmpl +17 -0
  373. data/tracks/erlang/exercises/grains/README.md +78 -0
  374. data/tracks/erlang/exercises/hamming/.meta/readme.go.tmpl +17 -0
  375. data/tracks/erlang/exercises/hamming/README.md +86 -0
  376. data/tracks/erlang/exercises/hello-world/.meta/readme.go.tmpl +17 -0
  377. data/tracks/erlang/exercises/hello-world/README.md +65 -0
  378. data/tracks/erlang/exercises/largest-series-product/.meta/readme.go.tmpl +17 -0
  379. data/tracks/erlang/exercises/largest-series-product/README.md +64 -0
  380. data/tracks/erlang/exercises/leap/.meta/readme.go.tmpl +17 -0
  381. data/tracks/erlang/exercises/leap/README.md +77 -0
  382. data/tracks/erlang/exercises/luhn/.meta/readme.go.tmpl +17 -0
  383. data/tracks/erlang/exercises/luhn/README.md +115 -0
  384. data/tracks/erlang/exercises/meetup/.meta/readme.go.tmpl +17 -0
  385. data/tracks/erlang/exercises/meetup/README.md +74 -0
  386. data/tracks/erlang/exercises/nucleotide-count/.meta/readme.go.tmpl +17 -0
  387. data/tracks/erlang/exercises/nucleotide-count/README.md +77 -0
  388. data/tracks/erlang/exercises/parallel-letter-frequency/.meta/readme.go.tmpl +17 -0
  389. data/tracks/erlang/exercises/parallel-letter-frequency/README.md +55 -0
  390. data/tracks/erlang/exercises/phone-number/.meta/readme.go.tmpl +17 -0
  391. data/tracks/erlang/exercises/phone-number/README.md +78 -0
  392. data/tracks/erlang/exercises/rna-transcription/.meta/readme.go.tmpl +17 -0
  393. data/tracks/erlang/exercises/rna-transcription/README.md +69 -0
  394. data/tracks/erlang/exercises/robot-simulator/.meta/readme.go.tmpl +17 -0
  395. data/tracks/erlang/exercises/robot-simulator/README.md +89 -0
  396. data/tracks/erlang/exercises/roman-numerals/.meta/readme.go.tmpl +17 -0
  397. data/tracks/erlang/exercises/roman-numerals/README.md +93 -0
  398. data/tracks/erlang/exercises/rotational-cipher/.meta/readme.go.tmpl +17 -0
  399. data/tracks/erlang/exercises/rotational-cipher/README.md +80 -0
  400. data/tracks/erlang/exercises/rotational-cipher/test/rotational_cipher_tests.erl +2 -2
  401. data/tracks/erlang/exercises/scrabble-score/.meta/readme.go.tmpl +17 -0
  402. data/tracks/erlang/exercises/scrabble-score/README.md +88 -0
  403. data/tracks/erlang/exercises/series/.meta/readme.go.tmpl +17 -0
  404. data/tracks/erlang/exercises/series/README.md +71 -0
  405. data/tracks/erlang/exercises/space-age/.meta/readme.go.tmpl +17 -0
  406. data/tracks/erlang/exercises/space-age/README.md +68 -0
  407. data/tracks/erlang/exercises/spiral-matrix/.meta/readme.go.tmpl +17 -0
  408. data/tracks/erlang/exercises/spiral-matrix/README.md +74 -0
  409. data/tracks/erlang/exercises/spiral-matrix/include/exercism.hrl +11 -0
  410. data/tracks/erlang/exercises/spiral-matrix/rebar.config +30 -0
  411. data/tracks/erlang/exercises/spiral-matrix/src/example.erl +26 -0
  412. data/tracks/erlang/exercises/spiral-matrix/src/spiral_matrix.app.src +9 -0
  413. data/tracks/erlang/exercises/spiral-matrix/test/spiral_matrix_tests.erl +43 -0
  414. data/tracks/erlang/exercises/strain/.meta/readme.go.tmpl +17 -0
  415. data/tracks/erlang/exercises/strain/README.md +84 -0
  416. data/tracks/erlang/exercises/sum-of-multiples/.meta/readme.go.tmpl +17 -0
  417. data/tracks/erlang/exercises/sum-of-multiples/README.md +62 -0
  418. data/tracks/erlang/exercises/triangle/.meta/readme.go.tmpl +17 -0
  419. data/tracks/erlang/exercises/triangle/README.md +70 -0
  420. data/tracks/erlang/exercises/word-count/.meta/readme.go.tmpl +17 -0
  421. data/tracks/erlang/exercises/word-count/README.md +63 -0
  422. data/tracks/erlang/exercises/zipper/.meta/readme.go.tmpl +17 -0
  423. data/tracks/erlang/exercises/zipper/README.md +75 -0
  424. data/tracks/factor/.travis.yml +1 -1
  425. data/tracks/fsharp/.travis.yml +2 -2
  426. data/tracks/go/config.json +4 -2
  427. data/tracks/go/exercises/clock/.meta/gen.go +6 -1
  428. data/tracks/go/exercises/clock/cases_test.go +20 -13
  429. data/tracks/go/exercises/clock/clock_test.go +6 -0
  430. data/tracks/groovy/.travis.yml +1 -1
  431. data/tracks/haskell/.travis.yml +2 -2
  432. data/tracks/haskell/exercises/accumulate/stack.yaml +1 -1
  433. data/tracks/haskell/exercises/acronym/stack.yaml +1 -1
  434. data/tracks/haskell/exercises/all-your-base/stack.yaml +1 -1
  435. data/tracks/haskell/exercises/allergies/stack.yaml +1 -1
  436. data/tracks/haskell/exercises/alphametics/stack.yaml +1 -1
  437. data/tracks/haskell/exercises/anagram/stack.yaml +1 -1
  438. data/tracks/haskell/exercises/atbash-cipher/stack.yaml +1 -1
  439. data/tracks/haskell/exercises/bank-account/stack.yaml +1 -1
  440. data/tracks/haskell/exercises/beer-song/stack.yaml +1 -1
  441. data/tracks/haskell/exercises/binary-search-tree/stack.yaml +1 -1
  442. data/tracks/haskell/exercises/binary/stack.yaml +1 -1
  443. data/tracks/haskell/exercises/bob/stack.yaml +1 -1
  444. data/tracks/haskell/exercises/bowling/stack.yaml +1 -1
  445. data/tracks/haskell/exercises/bracket-push/stack.yaml +1 -1
  446. data/tracks/haskell/exercises/change/stack.yaml +1 -1
  447. data/tracks/haskell/exercises/clock/stack.yaml +1 -1
  448. data/tracks/haskell/exercises/connect/stack.yaml +1 -1
  449. data/tracks/haskell/exercises/crypto-square/stack.yaml +1 -1
  450. data/tracks/haskell/exercises/custom-set/stack.yaml +1 -1
  451. data/tracks/haskell/exercises/difference-of-squares/stack.yaml +1 -1
  452. data/tracks/haskell/exercises/dominoes/stack.yaml +1 -1
  453. data/tracks/haskell/exercises/etl/stack.yaml +1 -1
  454. data/tracks/haskell/exercises/food-chain/stack.yaml +1 -1
  455. data/tracks/haskell/exercises/forth/stack.yaml +1 -1
  456. data/tracks/haskell/exercises/gigasecond/stack.yaml +1 -1
  457. data/tracks/haskell/exercises/go-counting/stack.yaml +1 -1
  458. data/tracks/haskell/exercises/grade-school/stack.yaml +1 -1
  459. data/tracks/haskell/exercises/grains/stack.yaml +1 -1
  460. data/tracks/haskell/exercises/hamming/stack.yaml +1 -1
  461. data/tracks/haskell/exercises/hello-world/stack.yaml +1 -1
  462. data/tracks/haskell/exercises/hexadecimal/stack.yaml +1 -1
  463. data/tracks/haskell/exercises/house/stack.yaml +1 -1
  464. data/tracks/haskell/exercises/kindergarten-garden/stack.yaml +1 -1
  465. data/tracks/haskell/exercises/largest-series-product/stack.yaml +1 -1
  466. data/tracks/haskell/exercises/leap/stack.yaml +1 -1
  467. data/tracks/haskell/exercises/lens-person/stack.yaml +1 -1
  468. data/tracks/haskell/exercises/linked-list/stack.yaml +1 -1
  469. data/tracks/haskell/exercises/list-ops/stack.yaml +1 -1
  470. data/tracks/haskell/exercises/luhn/stack.yaml +1 -1
  471. data/tracks/haskell/exercises/matrix/stack.yaml +1 -1
  472. data/tracks/haskell/exercises/meetup/stack.yaml +1 -1
  473. data/tracks/haskell/exercises/minesweeper/stack.yaml +1 -1
  474. data/tracks/haskell/exercises/nth-prime/stack.yaml +1 -1
  475. data/tracks/haskell/exercises/nucleotide-count/stack.yaml +1 -1
  476. data/tracks/haskell/exercises/ocr-numbers/stack.yaml +1 -1
  477. data/tracks/haskell/exercises/octal/stack.yaml +1 -1
  478. data/tracks/haskell/exercises/palindrome-products/stack.yaml +1 -1
  479. data/tracks/haskell/exercises/pangram/stack.yaml +1 -1
  480. data/tracks/haskell/exercises/parallel-letter-frequency/stack.yaml +1 -1
  481. data/tracks/haskell/exercises/pascals-triangle/stack.yaml +1 -1
  482. data/tracks/haskell/exercises/phone-number/stack.yaml +1 -1
  483. data/tracks/haskell/exercises/pig-latin/stack.yaml +1 -1
  484. data/tracks/haskell/exercises/pov/stack.yaml +1 -1
  485. data/tracks/haskell/exercises/prime-factors/stack.yaml +1 -1
  486. data/tracks/haskell/exercises/pythagorean-triplet/stack.yaml +1 -1
  487. data/tracks/haskell/exercises/queen-attack/stack.yaml +1 -1
  488. data/tracks/haskell/exercises/raindrops/stack.yaml +1 -1
  489. data/tracks/haskell/exercises/rna-transcription/stack.yaml +1 -1
  490. data/tracks/haskell/exercises/robot-name/stack.yaml +1 -1
  491. data/tracks/haskell/exercises/robot-simulator/stack.yaml +1 -1
  492. data/tracks/haskell/exercises/roman-numerals/stack.yaml +1 -1
  493. data/tracks/haskell/exercises/run-length-encoding/stack.yaml +1 -1
  494. data/tracks/haskell/exercises/saddle-points/stack.yaml +1 -1
  495. data/tracks/haskell/exercises/say/stack.yaml +1 -1
  496. data/tracks/haskell/exercises/scrabble-score/stack.yaml +1 -1
  497. data/tracks/haskell/exercises/secret-handshake/stack.yaml +1 -1
  498. data/tracks/haskell/exercises/series/stack.yaml +1 -1
  499. data/tracks/haskell/exercises/sgf-parsing/stack.yaml +1 -1
  500. data/tracks/haskell/exercises/sieve/stack.yaml +1 -1
  501. data/tracks/haskell/exercises/simple-cipher/stack.yaml +1 -1
  502. data/tracks/haskell/exercises/simple-linked-list/stack.yaml +1 -1
  503. data/tracks/haskell/exercises/space-age/stack.yaml +1 -1
  504. data/tracks/haskell/exercises/spiral-matrix/stack.yaml +1 -1
  505. data/tracks/haskell/exercises/strain/stack.yaml +1 -1
  506. data/tracks/haskell/exercises/sublist/stack.yaml +1 -1
  507. data/tracks/haskell/exercises/sum-of-multiples/stack.yaml +1 -1
  508. data/tracks/haskell/exercises/triangle/stack.yaml +1 -1
  509. data/tracks/haskell/exercises/trinary/stack.yaml +1 -1
  510. data/tracks/haskell/exercises/word-count/stack.yaml +1 -1
  511. data/tracks/haskell/exercises/wordy/stack.yaml +1 -1
  512. data/tracks/haskell/exercises/zebra-puzzle/stack.yaml +1 -1
  513. data/tracks/haskell/exercises/zipper/stack.yaml +1 -1
  514. data/tracks/idris/.travis.yml +1 -1
  515. data/tracks/java/.travis.yml +4 -2
  516. data/tracks/java/CONTRIBUTING.md +117 -0
  517. data/tracks/java/POLICIES.md +13 -11
  518. data/tracks/java/README.md +1 -111
  519. data/tracks/java/bin/README.md +3 -0
  520. data/tracks/java/bin/journey-test.sh +25 -12
  521. data/tracks/java/bin/unit-tests.sh +1 -2
  522. data/tracks/java/config.json +39 -7
  523. data/tracks/java/docs/RESOURCES.md +6 -0
  524. data/tracks/java/exercises/accumulate/.meta/readme.go.tmpl +17 -0
  525. data/tracks/java/exercises/accumulate/README.md +47 -0
  526. data/tracks/java/exercises/acronym/.meta/readme.go.tmpl +17 -0
  527. data/tracks/java/exercises/acronym/README.md +27 -0
  528. data/tracks/java/exercises/all-your-base/.meta/readme.go.tmpl +17 -0
  529. data/tracks/java/exercises/all-your-base/README.md +47 -0
  530. data/tracks/java/exercises/{binary-search/src/test → all-your-base/src/main}/java/.keep +0 -0
  531. data/tracks/java/exercises/all-your-base/src/test/java/BaseConverterTest.java +0 -4
  532. data/tracks/java/exercises/allergies/.meta/readme.go.tmpl +17 -0
  533. data/tracks/java/exercises/allergies/README.md +49 -0
  534. data/tracks/java/exercises/anagram/.meta/readme.go.tmpl +17 -0
  535. data/tracks/java/exercises/anagram/README.md +25 -0
  536. data/tracks/java/exercises/{book-store/src/test → anagram/src/main}/java/.keep +0 -0
  537. data/tracks/java/exercises/atbash-cipher/.meta/readme.go.tmpl +17 -0
  538. data/tracks/java/exercises/atbash-cipher/README.md +46 -0
  539. data/tracks/java/exercises/bank-account/.meta/readme.go.tmpl +17 -0
  540. data/tracks/java/exercises/bank-account/README.md +54 -0
  541. data/tracks/java/exercises/beer-song/.meta/readme.go.tmpl +17 -0
  542. data/tracks/java/exercises/beer-song/README.md +339 -0
  543. data/tracks/java/exercises/{list-ops → beer-song}/src/main/java/.keep +0 -0
  544. data/tracks/java/exercises/binary-search-tree/.meta/readme.go.tmpl +17 -0
  545. data/tracks/java/exercises/binary-search-tree/README.md +72 -0
  546. data/tracks/java/exercises/binary-search-tree/src/test/java/BSTTest.java +8 -8
  547. data/tracks/java/exercises/binary-search/.meta/readme.go.tmpl +17 -0
  548. data/tracks/java/exercises/binary-search/README.md +53 -0
  549. data/tracks/java/exercises/{sieve → binary-search}/src/main/java/.keep +0 -0
  550. data/tracks/java/exercises/binary/.meta/readme.go.tmpl +17 -0
  551. data/tracks/java/exercises/binary/README.md +47 -0
  552. data/tracks/java/exercises/bob/.meta/readme.go.tmpl +17 -0
  553. data/tracks/java/exercises/bob/README.md +30 -0
  554. data/tracks/java/exercises/book-store/.meta/readme.go.tmpl +17 -0
  555. data/tracks/java/exercises/book-store/README.md +86 -0
  556. data/tracks/java/exercises/bowling/.meta/readme.go.tmpl +17 -0
  557. data/tracks/java/exercises/bowling/README.md +65 -0
  558. data/tracks/java/exercises/bowling/build.gradle +18 -0
  559. data/tracks/java/exercises/bowling/src/example/java/BowlingGame.java +84 -0
  560. data/tracks/java/exercises/{twelve-days → bowling}/src/main/java/.keep +0 -0
  561. data/tracks/java/exercises/bowling/src/test/java/BowlingTest.java +291 -0
  562. data/tracks/java/exercises/bracket-push/.meta/readme.go.tmpl +17 -0
  563. data/tracks/java/exercises/bracket-push/README.md +22 -0
  564. data/tracks/java/exercises/bracket-push/src/main/java/.keep +0 -0
  565. data/tracks/java/exercises/change/.meta/readme.go.tmpl +17 -0
  566. data/tracks/java/exercises/change/README.md +35 -0
  567. data/tracks/java/exercises/change/src/main/java/.keep +0 -0
  568. data/tracks/java/exercises/change/src/test/java/ChangeCalculatorTest.java +0 -4
  569. data/tracks/java/exercises/circular-buffer/.meta/readme.go.tmpl +17 -0
  570. data/tracks/java/exercises/circular-buffer/README.md +62 -0
  571. data/tracks/java/exercises/circular-buffer/build.gradle +18 -0
  572. data/tracks/java/exercises/circular-buffer/src/example/java/BufferIOException.java +6 -0
  573. data/tracks/java/exercises/circular-buffer/src/example/java/CircularBuffer.java +41 -0
  574. data/tracks/java/exercises/circular-buffer/src/main/java/BufferIOException.java +6 -0
  575. data/tracks/java/exercises/circular-buffer/src/test/java/CircularBufferTest.java +163 -0
  576. data/tracks/java/exercises/clock/.meta/readme.go.tmpl +17 -0
  577. data/tracks/java/exercises/clock/README.md +30 -0
  578. data/tracks/java/exercises/collatz-conjecture/.meta/readme.go.tmpl +17 -0
  579. data/tracks/java/exercises/collatz-conjecture/README.md +45 -0
  580. data/tracks/java/exercises/collatz-conjecture/src/main/java/.keep +0 -0
  581. data/tracks/java/exercises/complex-numbers/.meta/readme.go.tmpl +17 -0
  582. data/tracks/java/exercises/complex-numbers/README.md +23 -0
  583. data/tracks/java/exercises/complex-numbers/build.gradle +18 -0
  584. data/tracks/java/exercises/complex-numbers/src/example/java/ComplexNumber.java +57 -0
  585. data/tracks/java/exercises/complex-numbers/src/main/java/.keep +0 -0
  586. data/tracks/java/exercises/complex-numbers/src/test/java/ComplexNumberTest.java +262 -0
  587. data/tracks/java/exercises/crypto-square/.meta/readme.go.tmpl +17 -0
  588. data/tracks/java/exercises/crypto-square/README.md +86 -0
  589. data/tracks/java/exercises/custom-set/.meta/readme.go.tmpl +17 -0
  590. data/tracks/java/exercises/custom-set/README.md +23 -0
  591. data/tracks/java/exercises/custom-set/src/test/java/CustomSetTest.java +36 -36
  592. data/tracks/java/exercises/diamond/.meta/readme.go.tmpl +17 -0
  593. data/tracks/java/exercises/diamond/README.md +71 -0
  594. data/tracks/java/exercises/diamond/src/main/java/.keep +0 -0
  595. data/tracks/java/exercises/difference-of-squares/.meta/readme.go.tmpl +17 -0
  596. data/tracks/java/exercises/difference-of-squares/README.md +31 -0
  597. data/tracks/java/exercises/etl/.meta/readme.go.tmpl +17 -0
  598. data/tracks/java/exercises/etl/README.md +63 -0
  599. data/tracks/java/exercises/etl/src/main/java/Etl.java +1 -1
  600. data/tracks/java/exercises/flatten-array/.meta/readme.go.tmpl +17 -0
  601. data/tracks/java/exercises/flatten-array/README.md +30 -0
  602. data/tracks/java/exercises/flatten-array/src/main/java/.keep +0 -0
  603. data/tracks/java/exercises/food-chain/.meta/readme.go.tmpl +17 -0
  604. data/tracks/java/exercises/food-chain/README.md +82 -0
  605. data/tracks/java/exercises/gigasecond/.meta/readme.go.tmpl +17 -0
  606. data/tracks/java/exercises/gigasecond/README.md +23 -0
  607. data/tracks/java/exercises/grade-school/.meta/readme.go.tmpl +17 -0
  608. data/tracks/java/exercises/grade-school/README.md +54 -0
  609. data/tracks/java/exercises/hamming/.meta/readme.go.tmpl +17 -0
  610. data/tracks/java/exercises/hamming/HINTS.md +12 -0
  611. data/tracks/java/exercises/hamming/README.md +68 -0
  612. data/tracks/java/exercises/hello-world/.meta/readme.go.tmpl +17 -0
  613. data/tracks/java/exercises/hello-world/README.md +39 -0
  614. data/tracks/java/exercises/hexadecimal/.meta/readme.go.tmpl +17 -0
  615. data/tracks/java/exercises/hexadecimal/README.md +26 -0
  616. data/tracks/java/exercises/isogram/.meta/readme.go.tmpl +17 -0
  617. data/tracks/java/exercises/isogram/README.md +42 -0
  618. data/tracks/java/exercises/kindergarten-garden/.meta/readme.go.tmpl +17 -0
  619. data/tracks/java/exercises/kindergarten-garden/README.md +78 -0
  620. data/tracks/java/exercises/largest-series-product/.meta/readme.go.tmpl +17 -0
  621. data/tracks/java/exercises/largest-series-product/README.md +32 -0
  622. data/tracks/java/exercises/largest-series-product/src/test/java/LargestSeriesProductCalculatorTest.java +0 -4
  623. data/tracks/java/exercises/linked-list/.meta/readme.go.tmpl +17 -0
  624. data/tracks/java/exercises/linked-list/README.md +46 -0
  625. data/tracks/java/exercises/list-ops/.meta/readme.go.tmpl +17 -0
  626. data/tracks/java/exercises/list-ops/HINTS.md +3 -0
  627. data/tracks/java/exercises/list-ops/README.md +27 -0
  628. data/tracks/java/exercises/list-ops/src/example/java/ListOps.java +43 -25
  629. data/tracks/java/exercises/list-ops/src/main/java/ListOps.java +44 -0
  630. data/tracks/java/exercises/list-ops/src/test/java/ListOpsTest.java +119 -249
  631. data/tracks/java/exercises/luhn/.meta/readme.go.tmpl +17 -0
  632. data/tracks/java/exercises/luhn/README.md +83 -0
  633. data/tracks/java/exercises/matrix/.meta/readme.go.tmpl +17 -0
  634. data/tracks/java/exercises/matrix/README.md +57 -0
  635. data/tracks/java/exercises/meetup/.meta/readme.go.tmpl +17 -0
  636. data/tracks/java/exercises/meetup/README.md +42 -0
  637. data/tracks/java/exercises/meetup/src/test/java/MeetupTest.java +1 -2
  638. data/tracks/java/exercises/minesweeper/.meta/readme.go.tmpl +17 -0
  639. data/tracks/java/exercises/minesweeper/README.md +42 -0
  640. data/tracks/java/exercises/minesweeper/src/main/java/.keep +0 -0
  641. data/tracks/java/exercises/nth-prime/.meta/readme.go.tmpl +17 -0
  642. data/tracks/java/exercises/nth-prime/README.md +27 -0
  643. data/tracks/java/exercises/nth-prime/src/test/java/PrimeCalculatorTest.java +4 -4
  644. data/tracks/java/exercises/nucleotide-count/.meta/readme.go.tmpl +17 -0
  645. data/tracks/java/exercises/nucleotide-count/README.md +45 -0
  646. data/tracks/java/exercises/nucleotide-count/src/main/java/.keep +0 -0
  647. data/tracks/java/exercises/nucleotide-count/src/test/java/NucleotideTest.java +3 -3
  648. data/tracks/java/exercises/ocr-numbers/.meta/readme.go.tmpl +17 -0
  649. data/tracks/java/exercises/ocr-numbers/README.md +97 -0
  650. data/tracks/java/exercises/ocr-numbers/src/main/java/.keep +0 -0
  651. data/tracks/java/exercises/ocr-numbers/src/test/java/OpticalCharacterReaderTest.java +0 -4
  652. data/tracks/java/exercises/octal/.meta/readme.go.tmpl +17 -0
  653. data/tracks/java/exercises/octal/README.md +61 -0
  654. data/tracks/java/exercises/palindrome-products/.meta/readme.go.tmpl +17 -0
  655. data/tracks/java/exercises/palindrome-products/README.md +52 -0
  656. data/tracks/java/exercises/palindrome-products/src/test/java/PalindromeCalculatorTest.java +4 -4
  657. data/tracks/java/exercises/pangram/.meta/readme.go.tmpl +17 -0
  658. data/tracks/java/exercises/pangram/README.md +27 -0
  659. data/tracks/java/exercises/pascals-triangle/.meta/readme.go.tmpl +17 -0
  660. data/tracks/java/exercises/pascals-triangle/README.md +33 -0
  661. data/tracks/java/exercises/pascals-triangle/src/test/java/PascalsTriangleGeneratorTest.java +2 -2
  662. data/tracks/java/exercises/perfect-numbers/.meta/readme.go.tmpl +17 -0
  663. data/tracks/java/exercises/perfect-numbers/README.md +36 -0
  664. data/tracks/java/exercises/perfect-numbers/src/test/java/NaturalNumberTest.java +0 -4
  665. data/tracks/java/exercises/phone-number/.meta/readme.go.tmpl +17 -0
  666. data/tracks/java/exercises/phone-number/README.md +46 -0
  667. data/tracks/java/exercises/pig-latin/.meta/readme.go.tmpl +17 -0
  668. data/tracks/java/exercises/pig-latin/README.md +36 -0
  669. data/tracks/java/exercises/poker/.meta/readme.go.tmpl +17 -0
  670. data/tracks/java/exercises/poker/README.md +24 -0
  671. data/tracks/java/exercises/poker/src/example/java/Card.java +20 -20
  672. data/tracks/java/exercises/poker/src/example/java/Hand.java +96 -91
  673. data/tracks/java/exercises/poker/src/example/java/Poker.java +27 -20
  674. data/tracks/java/exercises/poker/src/main/java/.keep +0 -0
  675. data/tracks/java/exercises/poker/src/test/java/PokerTest.java +33 -34
  676. data/tracks/java/exercises/prime-factors/.meta/readme.go.tmpl +17 -0
  677. data/tracks/java/exercises/prime-factors/README.md +48 -0
  678. data/tracks/java/exercises/pythagorean-triplet/.meta/readme.go.tmpl +17 -0
  679. data/tracks/java/exercises/pythagorean-triplet/README.md +36 -0
  680. data/tracks/java/exercises/pythagorean-triplet/src/main/java/.keep +0 -0
  681. data/tracks/java/exercises/pythagorean-triplet/src/test/java/PythagoreanTripletTest.java +6 -6
  682. data/tracks/java/exercises/queen-attack/.meta/readme.go.tmpl +17 -0
  683. data/tracks/java/exercises/queen-attack/README.md +45 -0
  684. data/tracks/java/exercises/queen-attack/src/main/java/.keep +0 -0
  685. data/tracks/java/exercises/queen-attack/src/test/java/QueenAttackCalculatorTest.java +0 -4
  686. data/tracks/java/exercises/raindrops/.meta/readme.go.tmpl +17 -0
  687. data/tracks/java/exercises/raindrops/README.md +36 -0
  688. data/tracks/java/exercises/rectangles/.meta/readme.go.tmpl +17 -0
  689. data/tracks/java/exercises/rectangles/README.md +79 -0
  690. data/tracks/java/exercises/rectangles/src/main/java/.keep +0 -0
  691. data/tracks/java/exercises/rna-transcription/.meta/readme.go.tmpl +17 -0
  692. data/tracks/java/exercises/rna-transcription/README.md +37 -0
  693. data/tracks/java/exercises/robot-name/.meta/readme.go.tmpl +17 -0
  694. data/tracks/java/exercises/robot-name/README.md +34 -0
  695. data/tracks/java/exercises/robot-simulator/.meta/readme.go.tmpl +17 -0
  696. data/tracks/java/exercises/robot-simulator/README.md +46 -0
  697. data/tracks/java/exercises/roman-numerals/.meta/readme.go.tmpl +17 -0
  698. data/tracks/java/exercises/roman-numerals/README.md +61 -0
  699. data/tracks/java/exercises/run-length-encoding/.meta/readme.go.tmpl +17 -0
  700. data/tracks/java/exercises/run-length-encoding/README.md +42 -0
  701. data/tracks/java/exercises/run-length-encoding/src/main/java/.keep +0 -0
  702. data/tracks/java/exercises/saddle-points/.meta/readme.go.tmpl +17 -0
  703. data/tracks/java/exercises/saddle-points/README.md +45 -0
  704. data/tracks/java/exercises/scrabble-score/.meta/readme.go.tmpl +17 -0
  705. data/tracks/java/exercises/scrabble-score/README.md +56 -0
  706. data/tracks/java/exercises/secret-handshake/.meta/readme.go.tmpl +17 -0
  707. data/tracks/java/exercises/secret-handshake/README.md +47 -0
  708. data/tracks/java/exercises/series/.meta/readme.go.tmpl +17 -0
  709. data/tracks/java/exercises/series/README.md +39 -0
  710. data/tracks/java/exercises/series/src/main/java/.keep +0 -0
  711. data/tracks/java/exercises/series/src/test/java/SeriesTest.java +14 -14
  712. data/tracks/java/exercises/settings.gradle +5 -1
  713. data/tracks/java/exercises/sieve/.meta/readme.go.tmpl +17 -0
  714. data/tracks/java/exercises/sieve/README.md +46 -0
  715. data/tracks/java/exercises/sieve/src/main/java/Sieve.java +11 -0
  716. data/tracks/java/exercises/simple-cipher/.meta/readme.go.tmpl +17 -0
  717. data/tracks/java/exercises/simple-cipher/README.md +109 -0
  718. data/tracks/java/exercises/simple-linked-list/.meta/readme.go.tmpl +17 -0
  719. data/tracks/java/exercises/simple-linked-list/README.md +40 -0
  720. data/tracks/java/exercises/simple-linked-list/src/test/java/SimpleLinkedListTest.java +2 -2
  721. data/tracks/java/exercises/space-age/.meta/readme.go.tmpl +17 -0
  722. data/tracks/java/exercises/space-age/README.md +36 -0
  723. data/tracks/java/exercises/spiral-matrix/.meta/readme.go.tmpl +17 -0
  724. data/tracks/java/exercises/spiral-matrix/README.md +42 -0
  725. data/tracks/java/exercises/spiral-matrix/build.gradle +18 -0
  726. data/tracks/java/exercises/spiral-matrix/src/example/java/Coordinate.java +31 -0
  727. data/tracks/java/exercises/spiral-matrix/src/example/java/Direction.java +29 -0
  728. data/tracks/java/exercises/spiral-matrix/src/example/java/SpiralMatrixBuilder.java +29 -0
  729. data/tracks/java/exercises/spiral-matrix/src/main/java/.keep +0 -0
  730. data/tracks/java/exercises/spiral-matrix/src/test/java/SpiralMatrixBuilderTest.java +86 -0
  731. data/tracks/java/exercises/strain/.meta/readme.go.tmpl +17 -0
  732. data/tracks/java/exercises/strain/README.md +52 -0
  733. data/tracks/java/exercises/sublist/.meta/readme.go.tmpl +17 -0
  734. data/tracks/java/exercises/sublist/README.md +33 -0
  735. data/tracks/java/exercises/sum-of-multiples/.meta/readme.go.tmpl +17 -0
  736. data/tracks/java/exercises/sum-of-multiples/README.md +30 -0
  737. data/tracks/java/exercises/sum-of-multiples/src/test/java/SumOfMultiplesTest.java +12 -12
  738. data/tracks/java/exercises/transpose/.meta/readme.go.tmpl +17 -0
  739. data/tracks/java/exercises/transpose/README.md +77 -0
  740. data/tracks/java/exercises/transpose/src/test/java/TransposeTest.java +11 -11
  741. data/tracks/java/exercises/triangle/.meta/readme.go.tmpl +17 -0
  742. data/tracks/java/exercises/triangle/README.md +38 -0
  743. data/tracks/java/exercises/triangle/src/test/java/TriangleTest.java +6 -6
  744. data/tracks/java/exercises/trinary/.meta/readme.go.tmpl +17 -0
  745. data/tracks/java/exercises/trinary/README.md +40 -0
  746. data/tracks/java/exercises/twelve-days/.meta/readme.go.tmpl +17 -0
  747. data/tracks/java/exercises/twelve-days/README.md +47 -0
  748. data/tracks/java/exercises/twelve-days/src/main/java/TwelveDays.java +9 -0
  749. data/tracks/java/exercises/two-fer/.meta/readme.go.tmpl +17 -0
  750. data/tracks/java/exercises/two-fer/README.md +100 -0
  751. data/tracks/java/exercises/two-fer/src/test/java/TwoferTest.java +3 -3
  752. data/tracks/java/exercises/word-count/.meta/readme.go.tmpl +17 -0
  753. data/tracks/java/exercises/word-count/README.md +31 -0
  754. data/tracks/java/exercises/word-count/src/main/java/.keep +0 -0
  755. data/tracks/java/exercises/word-search/.meta/readme.go.tmpl +17 -0
  756. data/tracks/java/exercises/word-search/README.md +42 -0
  757. data/tracks/java/exercises/wordy/.meta/readme.go.tmpl +17 -0
  758. data/tracks/java/exercises/wordy/README.md +75 -0
  759. data/tracks/java/exercises/wordy/src/main/java/.keep +0 -0
  760. data/tracks/java/exercises/wordy/src/test/java/WordProblemSolverTest.java +0 -4
  761. data/tracks/java/gradle/wrapper/gradle-wrapper.jar +0 -0
  762. data/tracks/java/gradle/wrapper/gradle-wrapper.properties +2 -2
  763. data/tracks/javascript/.travis.yml +1 -1
  764. data/tracks/javascript/config.json +9 -0
  765. data/tracks/javascript/exercises/bob/bob.spec.js +59 -30
  766. data/tracks/javascript/exercises/bob/example.js +2 -1
  767. data/tracks/javascript/exercises/list-ops/example.js +76 -0
  768. data/tracks/javascript/exercises/list-ops/list-ops.spec.js +168 -0
  769. data/tracks/kotlin/bin/README.md +3 -0
  770. data/tracks/kotlin/bin/journey-test.sh +1 -3
  771. data/tracks/kotlin/bin/unit-tests.sh +5 -1
  772. data/tracks/kotlin/config.json +63 -0
  773. data/tracks/kotlin/exercises/complex-numbers/build.gradle +28 -0
  774. data/tracks/kotlin/exercises/complex-numbers/src/example/kotlin/ComplexNumber.kt +28 -0
  775. data/tracks/kotlin/exercises/complex-numbers/src/main/kotlin/ComplexNumber.kt +1 -0
  776. data/tracks/kotlin/exercises/complex-numbers/src/test/kotlin/ComplexNumberTest.kt +266 -0
  777. data/tracks/kotlin/exercises/grains/build.gradle +28 -0
  778. data/tracks/kotlin/exercises/grains/src/example/kotlin/Board.kt +21 -0
  779. data/tracks/kotlin/exercises/grains/src/main/kotlin/.keep +0 -0
  780. data/tracks/kotlin/exercises/grains/src/test/kotlin/BoardTest.kt +91 -0
  781. data/tracks/kotlin/exercises/minesweeper/build.gradle +28 -0
  782. data/tracks/kotlin/exercises/minesweeper/src/example/kotlin/MinesweeperBoard.kt +54 -0
  783. data/tracks/kotlin/exercises/minesweeper/src/main/kotlin/.keep +0 -0
  784. data/tracks/kotlin/exercises/minesweeper/src/test/kotlin/MinesweeperBoardTest.kt +241 -0
  785. data/tracks/kotlin/exercises/prime-factors/build.gradle +28 -0
  786. data/tracks/kotlin/exercises/prime-factors/src/example/kotlin/PrimeFactorCalculator.kt +24 -0
  787. data/tracks/kotlin/exercises/prime-factors/src/main/kotlin/.keep +0 -0
  788. data/tracks/kotlin/exercises/prime-factors/src/test/kotlin/PrimeFactorCalculatorTest.kt +51 -0
  789. data/tracks/kotlin/exercises/robot-simulator/build.gradle +28 -0
  790. data/tracks/kotlin/exercises/robot-simulator/src/example/kotlin/GridPosition.kt +1 -0
  791. data/tracks/kotlin/exercises/robot-simulator/src/example/kotlin/Orientation.kt +1 -0
  792. data/tracks/kotlin/exercises/robot-simulator/src/example/kotlin/Robot.kt +34 -0
  793. data/tracks/kotlin/exercises/robot-simulator/src/main/kotlin/GridPosition.kt +1 -0
  794. data/tracks/kotlin/exercises/robot-simulator/src/main/kotlin/Orientation.kt +5 -0
  795. data/tracks/kotlin/exercises/robot-simulator/src/starterSource/kotlin/.keep +0 -0
  796. data/tracks/kotlin/exercises/robot-simulator/src/test/kotlin/RobotTest.kt +213 -0
  797. data/tracks/kotlin/exercises/saddle-points/build.gradle +28 -0
  798. data/tracks/kotlin/exercises/saddle-points/src/example/kotlin/Matrix.kt +31 -0
  799. data/tracks/kotlin/exercises/saddle-points/src/example/kotlin/MatrixCoordinate.kt +1 -0
  800. data/tracks/kotlin/exercises/saddle-points/src/main/kotlin/MatrixCoordinate.kt +1 -0
  801. data/tracks/kotlin/exercises/saddle-points/src/test/kotlin/MatrixTest.kt +80 -0
  802. data/tracks/kotlin/exercises/secret-handshake/build.gradle +28 -0
  803. data/tracks/kotlin/exercises/secret-handshake/src/example/kotlin/HandshakeCalculator.kt +21 -0
  804. data/tracks/kotlin/exercises/secret-handshake/src/example/kotlin/Signal.kt +1 -0
  805. data/tracks/kotlin/exercises/secret-handshake/src/main/kotlin/Signal.kt +5 -0
  806. data/tracks/kotlin/exercises/secret-handshake/src/test/kotlin/HandshakeCalculatorTest.kt +105 -0
  807. data/tracks/kotlin/exercises/settings.gradle +9 -0
  808. data/tracks/kotlin/exercises/spiral-matrix/build.gradle +28 -0
  809. data/tracks/kotlin/exercises/spiral-matrix/src/example/kotlin/SpiralMatrix.kt +48 -0
  810. data/tracks/kotlin/exercises/spiral-matrix/src/main/kotlin/.keep +0 -0
  811. data/tracks/kotlin/exercises/spiral-matrix/src/test/kotlin/SpiralMatrixTest.kt +77 -0
  812. data/tracks/kotlin/exercises/sublist/build.gradle +28 -0
  813. data/tracks/kotlin/exercises/sublist/src/example/kotlin/Relationship.kt +5 -0
  814. data/tracks/kotlin/exercises/sublist/src/example/kotlin/Sublist.kt +19 -0
  815. data/tracks/kotlin/exercises/sublist/src/main/kotlin/Relationship.kt +5 -0
  816. data/tracks/kotlin/exercises/sublist/src/test/kotlin/SublistTest.kt +147 -0
  817. data/tracks/kotlin/gradle/wrapper/gradle-wrapper.jar +0 -0
  818. data/tracks/kotlin/gradle/wrapper/gradle-wrapper.properties +2 -2
  819. data/tracks/kotlin/gradlew +3 -3
  820. data/tracks/lfe/.travis.yml +1 -1
  821. data/tracks/lisp/.travis.yml +1 -1
  822. data/tracks/lisp/bin/xlisp-test.lisp +14 -12
  823. data/tracks/objective-c/.travis.yml +1 -1
  824. data/tracks/objective-c/config.json +11 -0
  825. data/tracks/objective-c/exercises/rna-transcription/RNATranscriptionExample.h +5 -0
  826. data/tracks/objective-c/exercises/rna-transcription/RNATranscriptionExample.m +46 -0
  827. data/tracks/objective-c/exercises/rna-transcription/RNATranscriptionTest.m +47 -0
  828. data/tracks/objective-c/xcodeProject/ObjectiveC.xcodeproj/project.pbxproj +19 -0
  829. data/tracks/ocaml/.travis.yml +1 -1
  830. data/tracks/perl5/.travis.yml +1 -1
  831. data/tracks/perl5/bin/cpanfile +0 -1
  832. data/tracks/perl5/bin/exercise-gen.pl +12 -4
  833. data/tracks/perl6/.travis.yml +1 -1
  834. data/tracks/perl6/bin/exercise-gen.pl6 +11 -3
  835. data/tracks/php/.travis.yml +1 -1
  836. data/tracks/powershell/.travis.yml +1 -1
  837. data/tracks/purescript/.travis.yml +1 -1
  838. data/tracks/purescript/exercises/accumulate/test/Main.purs +2 -2
  839. data/tracks/purescript/exercises/hamming/src/Hamming.purs +3 -0
  840. data/tracks/python/README.md +1 -1
  841. data/tracks/r/.travis.yml +1 -1
  842. data/tracks/r/config.json +7 -0
  843. data/tracks/r/exercises/beer-song/beer-song.R +7 -0
  844. data/tracks/r/exercises/beer-song/example.R +32 -0
  845. data/tracks/r/exercises/beer-song/test_beer-song.R +288 -0
  846. data/tracks/racket/.travis.yml +1 -1
  847. data/tracks/racket/README.md +1 -1
  848. data/tracks/ruby/.travis.yml +0 -1
  849. data/tracks/ruby/bin/local-status-check +2 -3
  850. data/tracks/ruby/docs/EXERCISE_README_INSERT.md +0 -5
  851. data/tracks/ruby/exercises/accumulate/accumulate_test.rb +0 -1
  852. data/tracks/ruby/exercises/acronym/acronym_test.rb +0 -1
  853. data/tracks/ruby/exercises/all-your-base/all_your_base_test.rb +0 -1
  854. data/tracks/ruby/exercises/allergies/allergies_test.rb +0 -1
  855. data/tracks/ruby/exercises/alphametics/.meta/generator/test_template.erb +0 -1
  856. data/tracks/ruby/exercises/alphametics/alphametics_test.rb +0 -1
  857. data/tracks/ruby/exercises/anagram/anagram_test.rb +0 -1
  858. data/tracks/ruby/exercises/atbash-cipher/atbash_cipher_test.rb +0 -1
  859. data/tracks/ruby/exercises/beer-song/beer_song_test.rb +0 -1
  860. data/tracks/ruby/exercises/binary-search-tree/binary_search_tree_test.rb +0 -1
  861. data/tracks/ruby/exercises/binary-search/binary_search_test.rb +0 -1
  862. data/tracks/ruby/exercises/binary/binary_test.rb +0 -1
  863. data/tracks/ruby/exercises/bob/bob_test.rb +0 -1
  864. data/tracks/ruby/exercises/bowling/.meta/generator/test_template.erb +0 -1
  865. data/tracks/ruby/exercises/bowling/bowling_test.rb +0 -1
  866. data/tracks/ruby/exercises/bracket-push/bracket_push_test.rb +0 -1
  867. data/tracks/ruby/exercises/circular-buffer/circular_buffer_test.rb +0 -1
  868. data/tracks/ruby/exercises/clock/clock_test.rb +0 -1
  869. data/tracks/ruby/exercises/collatz-conjecture/collatz_conjecture_test.rb +0 -1
  870. data/tracks/ruby/exercises/connect/.meta/generator/test_template.erb +0 -1
  871. data/tracks/ruby/exercises/connect/connect_test.rb +0 -1
  872. data/tracks/ruby/exercises/crypto-square/crypto_square_test.rb +0 -1
  873. data/tracks/ruby/exercises/custom-set/custom_set_test.rb +0 -1
  874. data/tracks/ruby/exercises/diamond/diamond_test.rb +0 -1
  875. data/tracks/ruby/exercises/difference-of-squares/difference_of_squares_test.rb +0 -1
  876. data/tracks/ruby/exercises/dominoes/.meta/generator/dominoes_case.rb +1 -1
  877. data/tracks/ruby/exercises/dominoes/.meta/generator/test_template.erb +0 -1
  878. data/tracks/ruby/exercises/dominoes/dominoes_test.rb +1 -2
  879. data/tracks/ruby/exercises/etl/etl_test.rb +0 -1
  880. data/tracks/ruby/exercises/flatten-array/flatten_array_test.rb +0 -1
  881. data/tracks/ruby/exercises/food-chain/food_chain_test.rb +0 -1
  882. data/tracks/ruby/exercises/gigasecond/gigasecond_test.rb +0 -1
  883. data/tracks/ruby/exercises/grade-school/grade_school_test.rb +0 -1
  884. data/tracks/ruby/exercises/grains/grains_test.rb +0 -1
  885. data/tracks/ruby/exercises/hamming/hamming_test.rb +0 -1
  886. data/tracks/ruby/exercises/hello-world/.meta/generator/test_template.erb +0 -1
  887. data/tracks/ruby/exercises/hello-world/hello_world_test.rb +0 -1
  888. data/tracks/ruby/exercises/hexadecimal/hexadecimal_test.rb +0 -1
  889. data/tracks/ruby/exercises/house/house_test.rb +0 -1
  890. data/tracks/ruby/exercises/isogram/isogram_test.rb +0 -1
  891. data/tracks/ruby/exercises/kindergarten-garden/kindergarten_garden_test.rb +0 -1
  892. data/tracks/ruby/exercises/largest-series-product/largest_series_product_test.rb +0 -1
  893. data/tracks/ruby/exercises/leap/.meta/generator/test_template.erb +0 -1
  894. data/tracks/ruby/exercises/leap/leap_test.rb +0 -1
  895. data/tracks/ruby/exercises/linked-list/linked_list_test.rb +0 -1
  896. data/tracks/ruby/exercises/list-ops/list_ops_test.rb +0 -0
  897. data/tracks/ruby/exercises/luhn/luhn_test.rb +0 -1
  898. data/tracks/ruby/exercises/matrix/matrix_test.rb +0 -1
  899. data/tracks/ruby/exercises/meetup/meetup_test.rb +0 -1
  900. data/tracks/ruby/exercises/minesweeper/minesweeper_test.rb +0 -1
  901. data/tracks/ruby/exercises/nth-prime/nth_prime_test.rb +0 -1
  902. data/tracks/ruby/exercises/nucleotide-count/nucleotide_count_test.rb +0 -1
  903. data/tracks/ruby/exercises/ocr-numbers/ocr_numbers_test.rb +0 -1
  904. data/tracks/ruby/exercises/octal/octal_test.rb +0 -1
  905. data/tracks/ruby/exercises/palindrome-products/palindrome_products_test.rb +0 -1
  906. data/tracks/ruby/exercises/pangram/pangram_test.rb +0 -1
  907. data/tracks/ruby/exercises/pascals-triangle/pascals_triangle_test.rb +0 -1
  908. data/tracks/ruby/exercises/perfect-numbers/perfect_numbers_test.rb +0 -0
  909. data/tracks/ruby/exercises/phone-number/phone_number_test.rb +0 -1
  910. data/tracks/ruby/exercises/pig-latin/pig_latin_test.rb +0 -1
  911. data/tracks/ruby/exercises/point-mutations/point_mutations_test.rb +0 -1
  912. data/tracks/ruby/exercises/poker/poker_test.rb +0 -1
  913. data/tracks/ruby/exercises/prime-factors/prime_factors_test.rb +0 -1
  914. data/tracks/ruby/exercises/protein-translation/protein_translation_test.rb +0 -1
  915. data/tracks/ruby/exercises/proverb/proverb_test.rb +0 -1
  916. data/tracks/ruby/exercises/pythagorean-triplet/pythagorean_triplet_test.rb +0 -1
  917. data/tracks/ruby/exercises/queen-attack/queen_attack_test.rb +0 -1
  918. data/tracks/ruby/exercises/rail-fence-cipher/rail_fence_cipher_test.rb +0 -0
  919. data/tracks/ruby/exercises/raindrops/raindrops_test.rb +0 -1
  920. data/tracks/ruby/exercises/rna-transcription/rna_transcription_test.rb +0 -1
  921. data/tracks/ruby/exercises/robot-name/robot_name_test.rb +0 -2
  922. data/tracks/ruby/exercises/robot-simulator/robot_simulator_test.rb +0 -1
  923. data/tracks/ruby/exercises/roman-numerals/roman_numerals_test.rb +0 -1
  924. data/tracks/ruby/exercises/run-length-encoding/run_length_encoding_test.rb +0 -1
  925. data/tracks/ruby/exercises/saddle-points/saddle_points_test.rb +0 -1
  926. data/tracks/ruby/exercises/say/say_test.rb +0 -1
  927. data/tracks/ruby/exercises/scale-generator/scale_generator_test.rb +0 -1
  928. data/tracks/ruby/exercises/scrabble-score/scrabble_score_test.rb +0 -1
  929. data/tracks/ruby/exercises/secret-handshake/secret_handshake_test.rb +0 -1
  930. data/tracks/ruby/exercises/series/series_test.rb +1 -2
  931. data/tracks/ruby/exercises/sieve/sieve_test.rb +0 -1
  932. data/tracks/ruby/exercises/simple-cipher/simple_cipher_test.rb +0 -1
  933. data/tracks/ruby/exercises/simple-linked-list/simple_linked_list_test.rb +0 -0
  934. data/tracks/ruby/exercises/space-age/.meta/generator/test_template.erb +0 -1
  935. data/tracks/ruby/exercises/space-age/space_age_test.rb +0 -1
  936. data/tracks/ruby/exercises/strain/strain_test.rb +0 -1
  937. data/tracks/ruby/exercises/sum-of-multiples/sum_of_multiples_test.rb +0 -1
  938. data/tracks/ruby/exercises/tournament/tournament_test.rb +0 -1
  939. data/tracks/ruby/exercises/transpose/transpose_test.rb +0 -1
  940. data/tracks/ruby/exercises/triangle/triangle_test.rb +1 -2
  941. data/tracks/ruby/exercises/trinary/trinary_test.rb +0 -1
  942. data/tracks/ruby/exercises/twelve-days/twelve_days_test.rb +0 -1
  943. data/tracks/ruby/exercises/two-bucket/two_bucket_test.rb +0 -1
  944. data/tracks/ruby/exercises/word-count/word_count_test.rb +0 -1
  945. data/tracks/ruby/exercises/wordy/wordy_test.rb +0 -1
  946. data/tracks/ruby/lib/generator/test_template.erb +0 -1
  947. data/tracks/ruby/test/fixtures/xruby/exercises/alpha-beta/.meta/generator/test_template.erb +0 -1
  948. data/tracks/ruby/test/fixtures/xruby/exercises/alpha/.meta/generator/test_template.erb +0 -1
  949. data/tracks/ruby/test/fixtures/xruby/lib/generator/test_template.erb +0 -1
  950. data/tracks/ruby/test/generator/implementation_test.rb +0 -1
  951. data/tracks/scala/.travis.yml +1 -1
  952. data/tracks/scala/config.json +7 -0
  953. data/tracks/scala/exercises/spiral-matrix/build.sbt +3 -0
  954. data/tracks/scala/exercises/spiral-matrix/example.scala +48 -0
  955. data/tracks/scala/exercises/spiral-matrix/src/main/scala/.keep +0 -0
  956. data/tracks/scala/exercises/spiral-matrix/src/test/scala/SpiralMatrixTest.scala +52 -0
  957. data/tracks/scala/testgen/src/main/scala/SpiralMatrixTestGenerator.scala +17 -0
  958. data/tracks/scheme/.travis.yml +1 -1
  959. data/tracks/smalltalk/.travis.yml +1 -1
  960. data/tracks/sml/.github/stale.yml +21 -0
  961. data/tracks/sml/.travis.yml +1 -1
  962. data/tracks/sml/SETUP.md +43 -0
  963. data/tracks/sml/docs/EXERCISE_README_INSERT.md +9 -26
  964. data/tracks/sml/docs/INSTALLATION.md +30 -0
  965. data/tracks/sml/docs/RESOURCES.md +33 -0
  966. data/tracks/sml/docs/TESTS.md +5 -0
  967. data/tracks/sml/exercises/accumulate/accumulate.sml +10 -0
  968. data/tracks/sml/exercises/accumulate/example.sml +2 -10
  969. data/tracks/sml/exercises/accumulate/test_accumulate.sml +53 -10
  970. data/tracks/sml/exercises/allergies/allergies.sml +17 -0
  971. data/tracks/sml/exercises/allergies/example.sml +23 -21
  972. data/tracks/sml/exercises/allergies/test_allergies.sml +129 -23
  973. data/tracks/sml/exercises/anagram/anagram.sml +6 -0
  974. data/tracks/sml/exercises/anagram/test_anagram.sml +49 -11
  975. data/tracks/sml/exercises/flatten-array/example.sml +4 -4
  976. data/tracks/sml/exercises/flatten-array/flatten-array.sml +6 -0
  977. data/tracks/sml/exercises/flatten-array/test_flatten_array.sml +53 -6
  978. data/tracks/sml/exercises/hamming/hamming.sml +3 -0
  979. data/tracks/sml/exercises/hamming/test_hamming.sml +57 -19
  980. data/tracks/sml/exercises/nth-prime/example.sml +7 -6
  981. data/tracks/sml/exercises/nth-prime/nth-prime.sml +2 -0
  982. data/tracks/sml/exercises/nth-prime/test_nth_prime.sml +67 -10
  983. data/tracks/swift/.gitignore +4 -0
  984. data/tracks/swift/.travis.yml +4 -4
  985. data/tracks/swift/Dangerfile +1 -1
  986. data/tracks/swift/allProjects.xcworkspace.source/contents.xcworkspacedata +4 -0
  987. data/tracks/swift/allProjects.xcworkspace.source/xcshareddata/xcschemes/AllTest.xcscheme +46 -0
  988. data/tracks/swift/allProjectsPopulateWorkspace.sh +35 -0
  989. data/tracks/swift/exercises/acronym/Sources/AcronymExample.swift +2 -4
  990. data/tracks/swift/exercises/crypto-square/Sources/CryptoSquareExample.swift +2 -4
  991. data/tracks/swift/exercises/custom-set/Sources/CustomSetExample.swift +2 -2
  992. data/tracks/swift/exercises/hamming/Sources/HammingExample.swift +2 -4
  993. data/tracks/swift/exercises/luhn/Sources/LuhnExample.swift +1 -1
  994. data/tracks/swift/exercises/nth-prime/Sources/NthPrimeExample.swift +2 -4
  995. data/tracks/swift/exercises/ocr-numbers/Sources/OcrNumbersExample.swift +1 -1
  996. data/tracks/swift/exercises/palindrome-products/Sources/PalindromeProductsExample.swift +1 -2
  997. data/tracks/swift/exercises/phone-number/Sources/PhoneNumberExample.swift +1 -1
  998. data/tracks/swift/exercises/poker/Sources/PokerExample.swift +11 -9
  999. data/tracks/swift/exercises/pythagorean-triplet/Sources/PythagoreanTripletExample.swift +1 -1
  1000. data/tracks/swift/exercises/pythagorean-triplet/Tests/PythagoreanTripletTests/PythagoreanTripletTests.swift +3 -3
  1001. data/tracks/swift/exercises/rna-transcription/Sources/RnaTranscriptionExample.swift +11 -3
  1002. data/tracks/swift/exercises/rna-transcription/Tests/RnaTranscriptionTests/RnaTranscriptionTests.swift +35 -5
  1003. data/tracks/swift/exercises/scrabble-score/Tests/ScrabbleScoreTests/ScrabbleScoreTests.swift +2 -2
  1004. data/tracks/swift/exercises/secret-handshake/Sources/SecretHandshakeExample.swift +2 -4
  1005. data/tracks/swift/exercises/series/Sources/SeriesExample.swift +5 -7
  1006. data/tracks/swift/exercises/sum-of-multiples/Sources/SumOfMultiplesExample.swift +3 -7
  1007. data/tracks/swift/exercises/transpose/Sources/TransposeExample.swift +1 -1
  1008. data/tracks/swift/exercises/triangle/Sources/TriangleExample.swift +2 -2
  1009. data/tracks/swift/exercises/word-count/Sources/WordCountExample.swift +2 -4
  1010. data/tracks/tcl/.travis.yml +1 -1
  1011. data/tracks/teco/.travis.yml +1 -1
  1012. data/tracks/typescript/.travis.yml +1 -1
  1013. data/tracks/vbnet/.travis.yml +1 -1
  1014. data/tracks/vimscript/.travis.yml +1 -1
  1015. data/tracks/vimscript/README.md +48 -4
  1016. data/tracks/vimscript/config.json +7 -0
  1017. data/tracks/vimscript/docs/EXERCISE_README_INSERT.md +5 -108
  1018. data/tracks/vimscript/exercises/pangram/example.vim +11 -0
  1019. data/tracks/vimscript/exercises/pangram/pangram.vader +52 -0
  1020. data/tracks/vimscript/exercises/pangram/pangram.vim +19 -0
  1021. data/tracks/vimscript/lib/generate.vim +13 -2
  1022. metadata +420 -49
  1023. data/tracks/crystal/src/generator/generate.cr +0 -15
  1024. data/tracks/csharp/generators/Properties/launchSettings.json +0 -7
  1025. data/tracks/java/exercises/all-your-base/src/main/java/BaseConverter.java +0 -5
  1026. data/tracks/java/exercises/anagram/src/main/java/Anagram.java +0 -2
  1027. data/tracks/java/exercises/beer-song/src/main/java/BeerSong.java +0 -3
  1028. data/tracks/java/exercises/binary-search/src/main/java/BinarySearch.java +0 -4
  1029. data/tracks/java/exercises/bracket-push/src/main/java/BracketChecker.java +0 -5
  1030. data/tracks/java/exercises/change/src/main/java/ChangeCalculator.java +0 -5
  1031. data/tracks/java/exercises/collatz-conjecture/src/main/java/CollatzCalculator.java +0 -7
  1032. data/tracks/java/exercises/diamond/src/main/java/DiamondPrinter.java +0 -5
  1033. data/tracks/java/exercises/flatten-array/src/main/java/Flattener.java +0 -5
  1034. data/tracks/java/exercises/kindergarten-garden/src/main/java/KindergartenGarden.java +0 -15
  1035. data/tracks/java/exercises/minesweeper/src/main/java/MinesweeperBoard.java +0 -5
  1036. data/tracks/java/exercises/nucleotide-count/src/main/java/DNA.java +0 -2
  1037. data/tracks/java/exercises/ocr-numbers/src/main/java/OpticalCharacterReader.java +0 -5
  1038. data/tracks/java/exercises/poker/src/main/java/Poker.java +0 -2
  1039. data/tracks/java/exercises/pythagorean-triplet/src/main/java/PythagoreanTriplet.java +0 -3
  1040. data/tracks/java/exercises/queen-attack/src/main/java/BoardCoordinate.java +0 -5
  1041. data/tracks/java/exercises/queen-attack/src/main/java/QueenAttackCalculator.java +0 -5
  1042. data/tracks/java/exercises/rectangles/src/main/java/RectangleCounter.java +0 -5
  1043. data/tracks/java/exercises/robot-simulator/src/main/java/Robot.java +0 -5
  1044. data/tracks/java/exercises/run-length-encoding/src/main/java/RunLengthEncoding.java +0 -9
  1045. data/tracks/java/exercises/saddle-points/src/main/java/Matrix.java +0 -5
  1046. data/tracks/java/exercises/series/src/main/java/Series.java +0 -3
  1047. data/tracks/java/exercises/sublist/src/main/java/RelationshipComputer.java +0 -5
  1048. data/tracks/java/exercises/word-count/src/main/java/WordCount.java +0 -2
  1049. data/tracks/java/exercises/wordy/src/main/java/WordProblemSolver.java +0 -5
  1050. data/tracks/ruby/bin/enable-executable +0 -19
  1051. data/tracks/ruby/bin/executable-tests-check +0 -14
@@ -0,0 +1,17 @@
1
+ # {{ .Spec.Name }}
2
+
3
+ {{ .Spec.Description -}}
4
+ {{- with .Hints }}
5
+ {{ . }}
6
+ {{ end }}
7
+ {{- with .TrackInsert }}
8
+ {{ . }}
9
+ {{ end }}
10
+ {{- with .Spec.Credits -}}
11
+ ## Source
12
+
13
+ {{ . }}
14
+ {{ end }}
15
+ ## Submitting Incomplete Solutions
16
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
17
+
@@ -0,0 +1,65 @@
1
+ # Hello World
2
+
3
+ The classical introductory exercise. Just say "Hello, World!".
4
+
5
+ ["Hello, World!"](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program) is
6
+ the traditional first program for beginning programming in a new language
7
+ or environment.
8
+
9
+ The objectives are simple:
10
+
11
+ - Write a function that returns the string "Hello, World!".
12
+ - Run the test suite and make sure that it succeeds.
13
+ - Submit your solution and check it at the website.
14
+
15
+ If everything goes well, you will be ready to fetch your first real exercise.
16
+
17
+ ## Running tests
18
+
19
+ In order to run the tests, issue the following command from the exercise
20
+ directory:
21
+
22
+ For running the tests provided, `rebar3` is used as it is the official build and
23
+ dependency management tool for erlang now. Please refer to [the tracks installation
24
+ instructions](http://exercism.io/languages/erlang/installation) on how to do that.
25
+
26
+ In order to run the tests, you can issue the following command from the exercise
27
+ directory.
28
+
29
+ ```bash
30
+ $ rebar3 eunit
31
+ ```
32
+
33
+ ### Test versioning
34
+
35
+ Each problem defines a macro `TEST_VERSION` in the test file and
36
+ verifies that the solution defines and exports a function `test_version`
37
+ returning that same value.
38
+
39
+ To make tests pass, add the following to your solution:
40
+
41
+ ```erlang
42
+ -export([test_version/0]).
43
+
44
+ test_version() ->
45
+ 1.
46
+ ```
47
+
48
+ The benefit of this is that reviewers can see against which test version
49
+ an iteration was written if, for example, a previously posted solution
50
+ does not solve the current problem or passes current tests.
51
+
52
+ ## Questions?
53
+
54
+ For detailed information about the Erlang track, please refer to the
55
+ [help page](http://exercism.io/languages/erlang) on the Exercism site.
56
+ This covers the basic information on setting up the development
57
+ environment expected by the exercises.
58
+
59
+ ## Source
60
+
61
+ This is an exercise to introduce users to using Exercism [http://en.wikipedia.org/wiki/%22Hello,_world!%22_program](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program)
62
+
63
+ ## Submitting Incomplete Solutions
64
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
65
+
@@ -0,0 +1,17 @@
1
+ # {{ .Spec.Name }}
2
+
3
+ {{ .Spec.Description -}}
4
+ {{- with .Hints }}
5
+ {{ . }}
6
+ {{ end }}
7
+ {{- with .TrackInsert }}
8
+ {{ . }}
9
+ {{ end }}
10
+ {{- with .Spec.Credits -}}
11
+ ## Source
12
+
13
+ {{ . }}
14
+ {{ end }}
15
+ ## Submitting Incomplete Solutions
16
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
17
+
@@ -0,0 +1,64 @@
1
+ # Largest Series Product
2
+
3
+ Given a string of digits, calculate the largest product for a contiguous
4
+ substring of digits of length n.
5
+
6
+ For example, for the input `'1027839564'`, the largest product for a
7
+ series of 3 digits is 270 (9 * 5 * 6), and the largest product for a
8
+ series of 5 digits is 7560 (7 * 8 * 3 * 9 * 5).
9
+
10
+ Note that these series are only required to occupy *adjacent positions*
11
+ in the input; the digits need not be *numerically consecutive*.
12
+
13
+ For the input `'73167176531330624919225119674426574742355349194934'`,
14
+ the largest product for a series of 6 digits is 23520.
15
+
16
+ ## Running tests
17
+
18
+ In order to run the tests, issue the following command from the exercise
19
+ directory:
20
+
21
+ For running the tests provided, `rebar3` is used as it is the official build and
22
+ dependency management tool for erlang now. Please refer to [the tracks installation
23
+ instructions](http://exercism.io/languages/erlang/installation) on how to do that.
24
+
25
+ In order to run the tests, you can issue the following command from the exercise
26
+ directory.
27
+
28
+ ```bash
29
+ $ rebar3 eunit
30
+ ```
31
+
32
+ ### Test versioning
33
+
34
+ Each problem defines a macro `TEST_VERSION` in the test file and
35
+ verifies that the solution defines and exports a function `test_version`
36
+ returning that same value.
37
+
38
+ To make tests pass, add the following to your solution:
39
+
40
+ ```erlang
41
+ -export([test_version/0]).
42
+
43
+ test_version() ->
44
+ 1.
45
+ ```
46
+
47
+ The benefit of this is that reviewers can see against which test version
48
+ an iteration was written if, for example, a previously posted solution
49
+ does not solve the current problem or passes current tests.
50
+
51
+ ## Questions?
52
+
53
+ For detailed information about the Erlang track, please refer to the
54
+ [help page](http://exercism.io/languages/erlang) on the Exercism site.
55
+ This covers the basic information on setting up the development
56
+ environment expected by the exercises.
57
+
58
+ ## Source
59
+
60
+ A variation on Problem 8 at Project Euler [http://projecteuler.net/problem=8](http://projecteuler.net/problem=8)
61
+
62
+ ## Submitting Incomplete Solutions
63
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
64
+
@@ -0,0 +1,17 @@
1
+ # {{ .Spec.Name }}
2
+
3
+ {{ .Spec.Description -}}
4
+ {{- with .Hints }}
5
+ {{ . }}
6
+ {{ end }}
7
+ {{- with .TrackInsert }}
8
+ {{ . }}
9
+ {{ end }}
10
+ {{- with .Spec.Credits -}}
11
+ ## Source
12
+
13
+ {{ . }}
14
+ {{ end }}
15
+ ## Submitting Incomplete Solutions
16
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
17
+
@@ -0,0 +1,77 @@
1
+ # Leap
2
+
3
+ Given a year, report if it is a leap year.
4
+
5
+ The tricky thing here is that a leap year in the Gregorian calendar occurs:
6
+
7
+ ```plain
8
+ on every year that is evenly divisible by 4
9
+ except every year that is evenly divisible by 100
10
+ unless the year is also evenly divisible by 400
11
+ ```
12
+
13
+ For example, 1997 is not a leap year, but 1996 is. 1900 is not a leap
14
+ year, but 2000 is.
15
+
16
+ If your language provides a method in the standard library that does
17
+ this look-up, pretend it doesn't exist and implement it yourself.
18
+
19
+ ## Notes
20
+
21
+ Though our exercise adopts some very simple rules, there is more to
22
+ learn!
23
+
24
+ For a delightful, four minute explanation of the whole leap year
25
+ phenomenon, go watch [this youtube video][video].
26
+
27
+ [video]: http://www.youtube.com/watch?v=xX96xng7sAE
28
+
29
+ ## Running tests
30
+
31
+ In order to run the tests, issue the following command from the exercise
32
+ directory:
33
+
34
+ For running the tests provided, `rebar3` is used as it is the official build and
35
+ dependency management tool for erlang now. Please refer to [the tracks installation
36
+ instructions](http://exercism.io/languages/erlang/installation) on how to do that.
37
+
38
+ In order to run the tests, you can issue the following command from the exercise
39
+ directory.
40
+
41
+ ```bash
42
+ $ rebar3 eunit
43
+ ```
44
+
45
+ ### Test versioning
46
+
47
+ Each problem defines a macro `TEST_VERSION` in the test file and
48
+ verifies that the solution defines and exports a function `test_version`
49
+ returning that same value.
50
+
51
+ To make tests pass, add the following to your solution:
52
+
53
+ ```erlang
54
+ -export([test_version/0]).
55
+
56
+ test_version() ->
57
+ 1.
58
+ ```
59
+
60
+ The benefit of this is that reviewers can see against which test version
61
+ an iteration was written if, for example, a previously posted solution
62
+ does not solve the current problem or passes current tests.
63
+
64
+ ## Questions?
65
+
66
+ For detailed information about the Erlang track, please refer to the
67
+ [help page](http://exercism.io/languages/erlang) on the Exercism site.
68
+ This covers the basic information on setting up the development
69
+ environment expected by the exercises.
70
+
71
+ ## Source
72
+
73
+ JavaRanch Cattle Drive, exercise 3 [http://www.javaranch.com/leap.jsp](http://www.javaranch.com/leap.jsp)
74
+
75
+ ## Submitting Incomplete Solutions
76
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
77
+
@@ -0,0 +1,17 @@
1
+ # {{ .Spec.Name }}
2
+
3
+ {{ .Spec.Description -}}
4
+ {{- with .Hints }}
5
+ {{ . }}
6
+ {{ end }}
7
+ {{- with .TrackInsert }}
8
+ {{ . }}
9
+ {{ end }}
10
+ {{- with .Spec.Credits -}}
11
+ ## Source
12
+
13
+ {{ . }}
14
+ {{ end }}
15
+ ## Submitting Incomplete Solutions
16
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
17
+
@@ -0,0 +1,115 @@
1
+ # Luhn
2
+
3
+ Given a number determine whether or not it is valid per the Luhn formula.
4
+
5
+ The [Luhn algorithm](https://en.wikipedia.org/wiki/Luhn_algorithm) is
6
+ a simple checksum formula used to validate a variety of identification
7
+ numbers, such as credit card numbers and Canadian Social Insurance
8
+ Numbers.
9
+
10
+ The task is to check if a given string is valid.
11
+
12
+ Validating a Number
13
+ ------
14
+
15
+ Strings of length 1 or less are not valid. Spaces are allowed in the input,
16
+ but they should be stripped before checking. All other non-digit characters
17
+ are disallowed.
18
+
19
+ ## Example 1: valid credit card number
20
+
21
+ ```
22
+ 4539 1488 0343 6467
23
+ ```
24
+
25
+ The first step of the Luhn algorithm is to double every second digit,
26
+ starting from the right. We will be doubling
27
+
28
+ ```
29
+ 4_3_ 1_8_ 0_4_ 6_6_
30
+ ```
31
+
32
+ If doubling the number results in a number greater than 9 then subtract 9
33
+ from the product. The results of our doubling:
34
+
35
+ ```
36
+ 8569 2478 0383 3437
37
+ ```
38
+
39
+ Then sum all of the digits:
40
+
41
+ ```
42
+ 8+5+6+9+2+4+7+8+0+3+8+3+3+4+3+7 = 80
43
+ ```
44
+
45
+ If the sum is evenly divisible by 10, then the number is valid. This number is valid!
46
+
47
+ ## Example 2: invalid credit card number
48
+
49
+ ```
50
+ 8273 1232 7352 0569
51
+ ```
52
+
53
+ Double the second digits, starting from the right
54
+
55
+ ```
56
+ 7253 2262 5312 0539
57
+ ```
58
+
59
+ Sum the digits
60
+
61
+ ```
62
+ 7+2+5+3+2+2+6+2+5+3+1+2+0+5+3+9 = 57
63
+ ```
64
+
65
+ 57 is not evenly divisible by 10, so this number is not valid.
66
+
67
+ ## Running tests
68
+
69
+ In order to run the tests, issue the following command from the exercise
70
+ directory:
71
+
72
+ For running the tests provided, `rebar3` is used as it is the official build and
73
+ dependency management tool for erlang now. Please refer to [the tracks installation
74
+ instructions](http://exercism.io/languages/erlang/installation) on how to do that.
75
+
76
+ In order to run the tests, you can issue the following command from the exercise
77
+ directory.
78
+
79
+ ```bash
80
+ $ rebar3 eunit
81
+ ```
82
+
83
+ ### Test versioning
84
+
85
+ Each problem defines a macro `TEST_VERSION` in the test file and
86
+ verifies that the solution defines and exports a function `test_version`
87
+ returning that same value.
88
+
89
+ To make tests pass, add the following to your solution:
90
+
91
+ ```erlang
92
+ -export([test_version/0]).
93
+
94
+ test_version() ->
95
+ 1.
96
+ ```
97
+
98
+ The benefit of this is that reviewers can see against which test version
99
+ an iteration was written if, for example, a previously posted solution
100
+ does not solve the current problem or passes current tests.
101
+
102
+ ## Questions?
103
+
104
+ For detailed information about the Erlang track, please refer to the
105
+ [help page](http://exercism.io/languages/erlang) on the Exercism site.
106
+ This covers the basic information on setting up the development
107
+ environment expected by the exercises.
108
+
109
+ ## Source
110
+
111
+ The Luhn Algorithm on Wikipedia [http://en.wikipedia.org/wiki/Luhn_algorithm](http://en.wikipedia.org/wiki/Luhn_algorithm)
112
+
113
+ ## Submitting Incomplete Solutions
114
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
115
+
@@ -0,0 +1,17 @@
1
+ # {{ .Spec.Name }}
2
+
3
+ {{ .Spec.Description -}}
4
+ {{- with .Hints }}
5
+ {{ . }}
6
+ {{ end }}
7
+ {{- with .TrackInsert }}
8
+ {{ . }}
9
+ {{ end }}
10
+ {{- with .Spec.Credits -}}
11
+ ## Source
12
+
13
+ {{ . }}
14
+ {{ end }}
15
+ ## Submitting Incomplete Solutions
16
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
17
+
@@ -0,0 +1,74 @@
1
+ # Meetup
2
+
3
+ Calculate the date of meetups.
4
+
5
+ Typically meetups happen on the same day of the week. In this exercise, you will take
6
+ a description of a meetup date, and return the actual meetup date.
7
+
8
+ Examples of general descriptions are:
9
+
10
+ - the first Monday of January 2017
11
+ - the third Tuesday of January 2017
12
+ - the Wednesteenth of January 2017
13
+ - the last Thursday of January 2017
14
+
15
+ Note that "Monteenth", "Tuesteenth", etc are all made up words. There
16
+ was a meetup whose members realized that there are exactly 7 numbered days in a month that
17
+ end in '-teenth'. Therefore, one is guaranteed that each day of the week
18
+ (Monday, Tuesday, ...) will have exactly one date that is named with '-teenth'
19
+ in every month.
20
+
21
+ Given examples of a meetup dates, each containing a month, day, year, and descriptor
22
+ (first, second, teenth, etc), calculate the date of the actual meetup.
23
+ For example, if given "First Monday of January 2017", the correct meetup date is 2017/1/2
24
+
25
+
26
+ ## Running tests
27
+
28
+ In order to run the tests, issue the following command from the exercise
29
+ directory:
30
+
31
+ For running the tests provided, `rebar3` is used as it is the official build and
32
+ dependency management tool for erlang now. Please refer to [the tracks installation
33
+ instructions](http://exercism.io/languages/erlang/installation) on how to do that.
34
+
35
+ In order to run the tests, you can issue the following command from the exercise
36
+ directory.
37
+
38
+ ```bash
39
+ $ rebar3 eunit
40
+ ```
41
+
42
+ ### Test versioning
43
+
44
+ Each problem defines a macro `TEST_VERSION` in the test file and
45
+ verifies that the solution defines and exports a function `test_version`
46
+ returning that same value.
47
+
48
+ To make tests pass, add the following to your solution:
49
+
50
+ ```erlang
51
+ -export([test_version/0]).
52
+
53
+ test_version() ->
54
+ 1.
55
+ ```
56
+
57
+ The benefit of this is that reviewers can see against which test version
58
+ an iteration was written if, for example, a previously posted solution
59
+ does not solve the current problem or passes current tests.
60
+
61
+ ## Questions?
62
+
63
+ For detailed information about the Erlang track, please refer to the
64
+ [help page](http://exercism.io/languages/erlang) on the Exercism site.
65
+ This covers the basic information on setting up the development
66
+ environment expected by the exercises.
67
+
68
+ ## Source
69
+
70
+ Jeremy Hinegardner mentioned a Boulder meetup that happens on the Wednesteenth of every month [https://twitter.com/copiousfreetime](https://twitter.com/copiousfreetime)
71
+
72
+ ## Submitting Incomplete Solutions
73
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
74
+