trackler 2.2.1.166 → 2.2.1.167

Sign up to get free protection for your applications and to get access to all the features.
Files changed (382) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/cfml/docs/RESOURCES.md +1 -1
  4. data/tracks/clojure/config/maintainers.json +21 -21
  5. data/tracks/clojure/config.json +305 -305
  6. data/tracks/clojure/exercises/accumulate/README.md +0 -3
  7. data/tracks/clojure/exercises/accumulate/src/accumulate.clj +5 -0
  8. data/tracks/clojure/exercises/acronym/README.md +0 -1
  9. data/tracks/clojure/exercises/all-your-base/README.md +1 -1
  10. data/tracks/clojure/exercises/allergies/README.md +0 -1
  11. data/tracks/clojure/exercises/armstrong-numbers/README.md +2 -3
  12. data/tracks/clojure/exercises/armstrong-numbers/src/armstrong_numbers.clj +3 -1
  13. data/tracks/clojure/exercises/atbash-cipher/README.md +2 -1
  14. data/tracks/clojure/exercises/beer-song/README.md +2 -2
  15. data/tracks/clojure/exercises/binary/README.md +2 -0
  16. data/tracks/clojure/exercises/bracket-push/README.md +3 -2
  17. data/tracks/clojure/exercises/change/README.md +1 -1
  18. data/tracks/clojure/exercises/collatz-conjecture/README.md +3 -4
  19. data/tracks/clojure/exercises/collatz-conjecture/src/collatz_conjecture.clj +3 -1
  20. data/tracks/clojure/exercises/complex-numbers/README.md +3 -2
  21. data/tracks/clojure/exercises/complex-numbers/src/complex_numbers.clj +25 -8
  22. data/tracks/clojure/exercises/crypto-square/README.md +31 -26
  23. data/tracks/clojure/exercises/diamond/README.md +8 -0
  24. data/tracks/clojure/exercises/dominoes/README.md +2 -0
  25. data/tracks/clojure/exercises/dominoes/src/dominoes.clj +3 -1
  26. data/tracks/clojure/exercises/etl/README.md +3 -1
  27. data/tracks/clojure/exercises/flatten-array/README.md +1 -2
  28. data/tracks/clojure/exercises/grade-school/README.md +0 -1
  29. data/tracks/clojure/exercises/grains/README.md +0 -1
  30. data/tracks/clojure/exercises/hamming/README.md +4 -3
  31. data/tracks/clojure/exercises/isbn-verifier/README.md +28 -24
  32. data/tracks/clojure/exercises/isbn-verifier/src/isbn_verifier.clj +3 -1
  33. data/tracks/clojure/exercises/isbn-verifier/test/isbn_verifier_test.clj +3 -0
  34. data/tracks/clojure/exercises/isogram/README.md +2 -1
  35. data/tracks/clojure/exercises/kindergarten-garden/README.md +13 -13
  36. data/tracks/clojure/exercises/largest-series-product/src/largest_series_product.clj +5 -0
  37. data/tracks/clojure/exercises/leap/README.md +1 -1
  38. data/tracks/clojure/exercises/leap/src/leap.clj +5 -0
  39. data/tracks/clojure/exercises/luhn/README.md +7 -7
  40. data/tracks/clojure/exercises/luhn/src/luhn.clj +5 -0
  41. data/tracks/clojure/exercises/meetup/README.md +16 -13
  42. data/tracks/clojure/exercises/meetup/src/meetup.clj +5 -0
  43. data/tracks/clojure/exercises/nth-prime/src/nth_prime.clj +5 -0
  44. data/tracks/clojure/exercises/nucleotide-count/README.md +8 -22
  45. data/tracks/clojure/exercises/nucleotide-count/src/nucleotide_count.clj +9 -0
  46. data/tracks/clojure/exercises/octal/README.md +6 -2
  47. data/tracks/clojure/exercises/octal/src/octal.clj +5 -0
  48. data/tracks/clojure/exercises/pangram/README.md +1 -1
  49. data/tracks/clojure/exercises/pangram/src/pangram.clj +5 -0
  50. data/tracks/clojure/exercises/pascals-triangle/README.md +2 -2
  51. data/tracks/clojure/exercises/pascals-triangle/src/pascals_triangle.clj +7 -0
  52. data/tracks/clojure/exercises/perfect-numbers/README.md +2 -2
  53. data/tracks/clojure/exercises/perfect-numbers/src/perfect_numbers.clj +5 -0
  54. data/tracks/clojure/exercises/phone-number/README.md +4 -3
  55. data/tracks/clojure/exercises/phone-number/src/phone_number.clj +13 -0
  56. data/tracks/clojure/exercises/pig-latin/README.md +4 -4
  57. data/tracks/clojure/exercises/pig-latin/src/pig_latin.clj +5 -0
  58. data/tracks/clojure/exercises/poker/README.md +3 -2
  59. data/tracks/clojure/exercises/poker/src/poker.clj +3 -1
  60. data/tracks/clojure/exercises/pov/README.md +3 -5
  61. data/tracks/clojure/exercises/pov/src/pov.clj +9 -0
  62. data/tracks/clojure/exercises/prime-factors/src/prime_factors.clj +5 -0
  63. data/tracks/clojure/exercises/protein-translation/README.md +10 -2
  64. data/tracks/clojure/exercises/protein-translation/src/protein_translation.clj +9 -0
  65. data/tracks/clojure/exercises/proverb/README.md +8 -0
  66. data/tracks/clojure/exercises/queen-attack/README.md +1 -1
  67. data/tracks/clojure/exercises/queen-attack/src/queen_attack.clj +9 -0
  68. data/tracks/clojure/exercises/raindrops/src/raindrops.clj +5 -0
  69. data/tracks/clojure/exercises/reverse-string/README.md +2 -3
  70. data/tracks/clojure/exercises/rna-transcription/README.md +2 -2
  71. data/tracks/clojure/exercises/robot-name/src/robot_name.clj +13 -0
  72. data/tracks/clojure/exercises/robot-simulator/src/robot_simulator.clj +17 -0
  73. data/tracks/clojure/exercises/roman-numerals/README.md +1 -1
  74. data/tracks/clojure/exercises/roman-numerals/src/roman_numerals.clj +5 -0
  75. data/tracks/clojure/exercises/rotational-cipher/README.md +2 -1
  76. data/tracks/clojure/exercises/rotational-cipher/src/rotational_cipher.clj +5 -0
  77. data/tracks/clojure/exercises/run-length-encoding/README.md +0 -6
  78. data/tracks/clojure/exercises/say/README.md +2 -4
  79. data/tracks/clojure/exercises/scrabble-score/README.md +3 -1
  80. data/tracks/clojure/exercises/scrabble-score/src/scrabble_score.clj +9 -0
  81. data/tracks/clojure/exercises/secret-handshake/README.md +2 -2
  82. data/tracks/clojure/exercises/secret-handshake/src/secret_handshake.clj +5 -0
  83. data/tracks/clojure/exercises/series/README.md +7 -8
  84. data/tracks/clojure/exercises/series/src/series.clj +3 -1
  85. data/tracks/clojure/exercises/sieve/README.md +5 -3
  86. data/tracks/clojure/exercises/sieve/src/sieve.clj +5 -0
  87. data/tracks/clojure/exercises/space-age/README.md +1 -1
  88. data/tracks/clojure/exercises/space-age/src/space_age.clj +33 -0
  89. data/tracks/clojure/exercises/spiral-matrix/README.md +6 -8
  90. data/tracks/clojure/exercises/spiral-matrix/src/spiral_matrix.clj +3 -1
  91. data/tracks/clojure/exercises/strain/src/strain.clj +9 -0
  92. data/tracks/clojure/exercises/sublist/src/sublist.clj +5 -0
  93. data/tracks/clojure/exercises/sum-of-multiples/README.md +3 -6
  94. data/tracks/clojure/exercises/sum-of-multiples/src/sum_of_multiples.clj +5 -0
  95. data/tracks/clojure/exercises/triangle/README.md +10 -7
  96. data/tracks/clojure/exercises/triangle/src/triangle.clj +5 -0
  97. data/tracks/clojure/exercises/trinary/README.md +1 -1
  98. data/tracks/clojure/exercises/trinary/src/trinary.clj +5 -0
  99. data/tracks/clojure/exercises/two-fer/README.md +2 -2
  100. data/tracks/clojure/exercises/word-count/README.md +1 -2
  101. data/tracks/clojure/exercises/wordy/README.md +0 -5
  102. data/tracks/clojure/exercises/wordy/src/wordy.clj +5 -0
  103. data/tracks/csharp/config.json +1 -0
  104. data/tracks/csharp/exercises/accumulate/Accumulate.csproj +1 -1
  105. data/tracks/csharp/exercises/acronym/Acronym.csproj +1 -1
  106. data/tracks/csharp/exercises/all-your-base/AllYourBase.csproj +1 -1
  107. data/tracks/csharp/exercises/allergies/Allergies.csproj +1 -1
  108. data/tracks/csharp/exercises/alphametics/Alphametics.csproj +2 -2
  109. data/tracks/csharp/exercises/anagram/Anagram.csproj +1 -1
  110. data/tracks/csharp/exercises/armstrong-numbers/ArmstrongNumbers.csproj +1 -1
  111. data/tracks/csharp/exercises/atbash-cipher/AtbashCipher.csproj +1 -1
  112. data/tracks/csharp/exercises/bank-account/BankAccount.csproj +1 -1
  113. data/tracks/csharp/exercises/beer-song/BeerSong.csproj +1 -1
  114. data/tracks/csharp/exercises/binary/Binary.csproj +1 -1
  115. data/tracks/csharp/exercises/binary-search/BinarySearch.csproj +1 -1
  116. data/tracks/csharp/exercises/binary-search-tree/BinarySearchTree.csproj +1 -1
  117. data/tracks/csharp/exercises/bob/Bob.csproj +1 -1
  118. data/tracks/csharp/exercises/book-store/BookStore.csproj +1 -1
  119. data/tracks/csharp/exercises/bowling/Bowling.csproj +1 -1
  120. data/tracks/csharp/exercises/bracket-push/BracketPush.csproj +1 -1
  121. data/tracks/csharp/exercises/change/Change.csproj +1 -1
  122. data/tracks/csharp/exercises/circular-buffer/CircularBuffer.csproj +1 -1
  123. data/tracks/csharp/exercises/clock/Clock.csproj +1 -1
  124. data/tracks/csharp/exercises/collatz-conjecture/CollatzConjecture.csproj +1 -1
  125. data/tracks/csharp/exercises/complex-numbers/ComplexNumbers.csproj +1 -1
  126. data/tracks/csharp/exercises/connect/Connect.csproj +1 -1
  127. data/tracks/csharp/exercises/crypto-square/CryptoSquare.csproj +1 -1
  128. data/tracks/csharp/exercises/custom-set/CustomSet.csproj +1 -1
  129. data/tracks/csharp/exercises/diamond/Diamond.csproj +3 -3
  130. data/tracks/csharp/exercises/difference-of-squares/DifferenceOfSquares.csproj +1 -1
  131. data/tracks/csharp/exercises/diffie-hellman/DiffieHellman.csproj +1 -1
  132. data/tracks/csharp/exercises/dominoes/Dominoes.csproj +1 -1
  133. data/tracks/csharp/exercises/dot-dsl/DotDsl.csproj +1 -1
  134. data/tracks/csharp/exercises/error-handling/ErrorHandling.csproj +1 -1
  135. data/tracks/csharp/exercises/etl/Etl.csproj +1 -1
  136. data/tracks/csharp/exercises/flatten-array/FlattenArray.csproj +1 -1
  137. data/tracks/csharp/exercises/food-chain/FoodChain.csproj +1 -1
  138. data/tracks/csharp/exercises/forth/Forth.csproj +2 -2
  139. data/tracks/csharp/exercises/gigasecond/Gigasecond.csproj +1 -1
  140. data/tracks/csharp/exercises/go-counting/GoCounting.csproj +1 -1
  141. data/tracks/csharp/exercises/grade-school/GradeSchool.csproj +1 -1
  142. data/tracks/csharp/exercises/grains/Grains.csproj +1 -1
  143. data/tracks/csharp/exercises/grep/Grep.csproj +1 -1
  144. data/tracks/csharp/exercises/hamming/Hamming.csproj +1 -1
  145. data/tracks/csharp/exercises/hangman/Hangman.csproj +1 -1
  146. data/tracks/csharp/exercises/hello-world/HelloWorld.csproj +1 -1
  147. data/tracks/csharp/exercises/hexadecimal/Hexadecimal.csproj +1 -1
  148. data/tracks/csharp/exercises/house/House.csproj +1 -1
  149. data/tracks/csharp/exercises/isbn-verifier/IsbnVerifier.csproj +1 -1
  150. data/tracks/csharp/exercises/isogram/Isogram.csproj +1 -1
  151. data/tracks/csharp/exercises/kindergarten-garden/KindergartenGarden.csproj +1 -1
  152. data/tracks/csharp/exercises/largest-series-product/LargestSeriesProduct.csproj +1 -1
  153. data/tracks/csharp/exercises/leap/Leap.csproj +1 -1
  154. data/tracks/csharp/exercises/ledger/Ledger.csproj +1 -1
  155. data/tracks/csharp/exercises/linked-list/LinkedList.csproj +1 -1
  156. data/tracks/csharp/exercises/list-ops/ListOps.csproj +1 -1
  157. data/tracks/csharp/exercises/luhn/Luhn.csproj +1 -1
  158. data/tracks/csharp/exercises/markdown/Markdown.csproj +1 -1
  159. data/tracks/csharp/exercises/matrix/Matrix.csproj +1 -1
  160. data/tracks/csharp/exercises/meetup/Meetup.csproj +1 -1
  161. data/tracks/csharp/exercises/minesweeper/Minesweeper.csproj +1 -1
  162. data/tracks/csharp/exercises/nth-prime/NthPrime.csproj +1 -1
  163. data/tracks/csharp/exercises/nucleotide-count/NucleotideCount.csproj +1 -1
  164. data/tracks/csharp/exercises/ocr-numbers/OcrNumbers.csproj +1 -1
  165. data/tracks/csharp/exercises/octal/Octal.csproj +1 -1
  166. data/tracks/csharp/exercises/palindrome-products/PalindromeProducts.csproj +1 -1
  167. data/tracks/csharp/exercises/pangram/Pangram.csproj +1 -1
  168. data/tracks/csharp/exercises/parallel-letter-frequency/ParallelLetterFrequency.csproj +1 -1
  169. data/tracks/csharp/exercises/pascals-triangle/PascalsTriangle.csproj +1 -1
  170. data/tracks/csharp/exercises/perfect-numbers/PerfectNumbers.csproj +1 -1
  171. data/tracks/csharp/exercises/phone-number/PhoneNumber.csproj +1 -1
  172. data/tracks/csharp/exercises/pig-latin/PigLatin.csproj +1 -1
  173. data/tracks/csharp/exercises/poker/Poker.csproj +1 -1
  174. data/tracks/csharp/exercises/pov/Pov.csproj +1 -1
  175. data/tracks/csharp/exercises/prime-factors/PrimeFactors.csproj +1 -1
  176. data/tracks/csharp/exercises/protein-translation/ProteinTranslation.csproj +1 -1
  177. data/tracks/csharp/exercises/proverb/Proverb.csproj +1 -1
  178. data/tracks/csharp/exercises/pythagorean-triplet/PythagoreanTriplet.csproj +1 -1
  179. data/tracks/csharp/exercises/queen-attack/QueenAttack.csproj +1 -1
  180. data/tracks/csharp/exercises/rail-fence-cipher/RailFenceCipher.csproj +1 -1
  181. data/tracks/csharp/exercises/raindrops/Raindrops.csproj +1 -1
  182. data/tracks/csharp/exercises/rational-numbers/RationalNumbers.csproj +1 -1
  183. data/tracks/csharp/exercises/react/React.csproj +1 -1
  184. data/tracks/csharp/exercises/rectangles/Rectangles.csproj +1 -1
  185. data/tracks/csharp/exercises/reverse-string/ReverseString.csproj +1 -1
  186. data/tracks/csharp/exercises/rna-transcription/RnaTranscription.csproj +1 -1
  187. data/tracks/csharp/exercises/robot-name/RobotName.csproj +1 -1
  188. data/tracks/csharp/exercises/robot-simulator/RobotSimulator.csproj +1 -1
  189. data/tracks/csharp/exercises/roman-numerals/RomanNumerals.csproj +1 -1
  190. data/tracks/csharp/exercises/rotational-cipher/RotationalCipher.csproj +1 -1
  191. data/tracks/csharp/exercises/run-length-encoding/RunLengthEncoding.csproj +1 -1
  192. data/tracks/csharp/exercises/saddle-points/SaddlePoints.csproj +1 -1
  193. data/tracks/csharp/exercises/say/Say.csproj +1 -1
  194. data/tracks/csharp/exercises/scale-generator/ScaleGenerator.csproj +1 -1
  195. data/tracks/csharp/exercises/scrabble-score/ScrabbleScore.csproj +1 -1
  196. data/tracks/csharp/exercises/secret-handshake/SecretHandshake.csproj +1 -1
  197. data/tracks/csharp/exercises/series/Series.csproj +1 -1
  198. data/tracks/csharp/exercises/sgf-parsing/SgfParsing.csproj +2 -2
  199. data/tracks/csharp/exercises/sieve/Sieve.csproj +1 -1
  200. data/tracks/csharp/exercises/simple-cipher/SimpleCipher.csproj +1 -1
  201. data/tracks/csharp/exercises/simple-linked-list/SimpleLinkedList.csproj +1 -1
  202. data/tracks/csharp/exercises/space-age/SpaceAge.csproj +1 -1
  203. data/tracks/csharp/exercises/spiral-matrix/SpiralMatrix.csproj +1 -1
  204. data/tracks/csharp/exercises/strain/Strain.csproj +1 -1
  205. data/tracks/csharp/exercises/sublist/Sublist.csproj +1 -1
  206. data/tracks/csharp/exercises/sum-of-multiples/SumOfMultiples.csproj +1 -1
  207. data/tracks/csharp/exercises/tournament/Tournament.csproj +1 -1
  208. data/tracks/csharp/exercises/transpose/Transpose.csproj +1 -1
  209. data/tracks/csharp/exercises/tree-building/TreeBuilding.csproj +1 -1
  210. data/tracks/csharp/exercises/triangle/Triangle.csproj +1 -1
  211. data/tracks/csharp/exercises/trinary/Trinary.csproj +1 -1
  212. data/tracks/csharp/exercises/twelve-days/TwelveDays.csproj +1 -1
  213. data/tracks/csharp/exercises/two-bucket/TwoBucket.csproj +1 -1
  214. data/tracks/csharp/exercises/two-fer/TwoFer.csproj +1 -1
  215. data/tracks/csharp/exercises/variable-length-quantity/VariableLengthQuantity.csproj +1 -1
  216. data/tracks/csharp/exercises/word-count/WordCount.csproj +1 -1
  217. data/tracks/csharp/exercises/word-search/WordSearch.csproj +1 -1
  218. data/tracks/csharp/exercises/wordy/Wordy.csproj +1 -1
  219. data/tracks/csharp/exercises/zebra-puzzle/ZebraPuzzle.csproj +1 -1
  220. data/tracks/csharp/exercises/zipper/Zipper.csproj +1 -1
  221. data/tracks/fsharp/config.json +1 -0
  222. data/tracks/fsharp/exercises/accumulate/Accumulate.fsproj +1 -1
  223. data/tracks/fsharp/exercises/acronym/Acronym.fsproj +1 -1
  224. data/tracks/fsharp/exercises/all-your-base/AllYourBase.fsproj +1 -1
  225. data/tracks/fsharp/exercises/allergies/Allergies.fsproj +1 -1
  226. data/tracks/fsharp/exercises/alphametics/Alphametics.fsproj +1 -1
  227. data/tracks/fsharp/exercises/anagram/Anagram.fsproj +1 -1
  228. data/tracks/fsharp/exercises/armstrong-numbers/ArmstrongNumbers.fsproj +1 -1
  229. data/tracks/fsharp/exercises/atbash-cipher/AtbashCipher.fsproj +1 -1
  230. data/tracks/fsharp/exercises/bank-account/BankAccount.fsproj +1 -1
  231. data/tracks/fsharp/exercises/beer-song/BeerSong.fsproj +1 -1
  232. data/tracks/fsharp/exercises/binary/Binary.fsproj +1 -1
  233. data/tracks/fsharp/exercises/binary-search/BinarySearch.fsproj +1 -1
  234. data/tracks/fsharp/exercises/binary-search-tree/BinarySearchTree.fsproj +1 -1
  235. data/tracks/fsharp/exercises/bob/Bob.fsproj +1 -1
  236. data/tracks/fsharp/exercises/book-store/BookStore.fsproj +1 -1
  237. data/tracks/fsharp/exercises/bowling/Bowling.fsproj +1 -1
  238. data/tracks/fsharp/exercises/bracket-push/BracketPush.fsproj +1 -1
  239. data/tracks/fsharp/exercises/change/Change.fsproj +1 -1
  240. data/tracks/fsharp/exercises/circular-buffer/CircularBuffer.fsproj +1 -1
  241. data/tracks/fsharp/exercises/clock/Clock.fsproj +1 -1
  242. data/tracks/fsharp/exercises/collatz-conjecture/CollatzConjecture.fsproj +1 -1
  243. data/tracks/fsharp/exercises/complex-numbers/ComplexNumbers.fsproj +1 -1
  244. data/tracks/fsharp/exercises/connect/Connect.fsproj +1 -1
  245. data/tracks/fsharp/exercises/crypto-square/CryptoSquare.fsproj +1 -1
  246. data/tracks/fsharp/exercises/custom-set/CustomSet.fsproj +1 -1
  247. data/tracks/fsharp/exercises/diamond/Diamond.fsproj +1 -1
  248. data/tracks/fsharp/exercises/difference-of-squares/DifferenceOfSquares.fsproj +1 -1
  249. data/tracks/fsharp/exercises/diffie-hellman/DiffieHellman.fsproj +1 -1
  250. data/tracks/fsharp/exercises/dominoes/Dominoes.fsproj +1 -1
  251. data/tracks/fsharp/exercises/dot-dsl/DotDsl.fsproj +1 -1
  252. data/tracks/fsharp/exercises/error-handling/ErrorHandling.fsproj +1 -1
  253. data/tracks/fsharp/exercises/etl/Etl.fsproj +1 -1
  254. data/tracks/fsharp/exercises/food-chain/FoodChain.fsproj +1 -1
  255. data/tracks/fsharp/exercises/forth/Forth.fsproj +1 -1
  256. data/tracks/fsharp/exercises/gigasecond/Gigasecond.fsproj +1 -1
  257. data/tracks/fsharp/exercises/go-counting/GoCounting.fsproj +1 -1
  258. data/tracks/fsharp/exercises/grade-school/GradeSchool.fsproj +1 -1
  259. data/tracks/fsharp/exercises/grains/Grains.fsproj +1 -1
  260. data/tracks/fsharp/exercises/grep/Grep.fsproj +1 -1
  261. data/tracks/fsharp/exercises/hamming/Hamming.fsproj +1 -1
  262. data/tracks/fsharp/exercises/hangman/Hangman.fsproj +1 -1
  263. data/tracks/fsharp/exercises/hello-world/HelloWorld.fsproj +1 -1
  264. data/tracks/fsharp/exercises/hexadecimal/Hexadecimal.fsproj +1 -1
  265. data/tracks/fsharp/exercises/house/House.fsproj +1 -1
  266. data/tracks/fsharp/exercises/isbn-verifier/IsbnVerifier.fsproj +1 -1
  267. data/tracks/fsharp/exercises/isogram/Isogram.fsproj +1 -1
  268. data/tracks/fsharp/exercises/kindergarten-garden/KindergartenGarden.fsproj +1 -1
  269. data/tracks/fsharp/exercises/largest-series-product/LargestSeriesProduct.fsproj +1 -1
  270. data/tracks/fsharp/exercises/leap/Leap.fsproj +1 -1
  271. data/tracks/fsharp/exercises/ledger/Ledger.fsproj +1 -1
  272. data/tracks/fsharp/exercises/lens-person/LensPerson.fsproj +1 -1
  273. data/tracks/fsharp/exercises/linked-list/LinkedList.fsproj +1 -1
  274. data/tracks/fsharp/exercises/list-ops/ListOps.fsproj +1 -1
  275. data/tracks/fsharp/exercises/luhn/Luhn.fsproj +1 -1
  276. data/tracks/fsharp/exercises/markdown/Markdown.fsproj +1 -1
  277. data/tracks/fsharp/exercises/matrix/Matrix.fsproj +1 -1
  278. data/tracks/fsharp/exercises/meetup/Meetup.fsproj +1 -1
  279. data/tracks/fsharp/exercises/minesweeper/Minesweeper.fsproj +1 -1
  280. data/tracks/fsharp/exercises/nth-prime/NthPrime.fsproj +1 -1
  281. data/tracks/fsharp/exercises/nucleotide-count/NucleotideCount.fsproj +1 -1
  282. data/tracks/fsharp/exercises/ocr-numbers/OcrNumbers.fsproj +1 -1
  283. data/tracks/fsharp/exercises/octal/Octal.fsproj +1 -1
  284. data/tracks/fsharp/exercises/palindrome-products/PalindromeProducts.fsproj +1 -1
  285. data/tracks/fsharp/exercises/pangram/Pangram.fsproj +1 -1
  286. data/tracks/fsharp/exercises/parallel-letter-frequency/ParallelLetterFrequency.fsproj +1 -1
  287. data/tracks/fsharp/exercises/pascals-triangle/PascalsTriangle.fsproj +1 -1
  288. data/tracks/fsharp/exercises/perfect-numbers/PerfectNumbers.fsproj +1 -1
  289. data/tracks/fsharp/exercises/phone-number/PhoneNumber.fsproj +1 -1
  290. data/tracks/fsharp/exercises/pig-latin/PigLatin.fsproj +1 -1
  291. data/tracks/fsharp/exercises/poker/Poker.fsproj +1 -1
  292. data/tracks/fsharp/exercises/pov/Pov.fsproj +1 -1
  293. data/tracks/fsharp/exercises/prime-factors/PrimeFactors.fsproj +1 -1
  294. data/tracks/fsharp/exercises/protein-translation/ProteinTranslation.fsproj +1 -1
  295. data/tracks/fsharp/exercises/proverb/Proverb.fsproj +1 -1
  296. data/tracks/fsharp/exercises/pythagorean-triplet/PythagoreanTriplet.fsproj +1 -1
  297. data/tracks/fsharp/exercises/queen-attack/QueenAttack.fsproj +1 -1
  298. data/tracks/fsharp/exercises/rail-fence-cipher/RailFenceCipher.fsproj +1 -1
  299. data/tracks/fsharp/exercises/raindrops/Raindrops.fsproj +1 -1
  300. data/tracks/fsharp/exercises/rational-numbers/RationalNumbers.fsproj +1 -1
  301. data/tracks/fsharp/exercises/react/React.fsproj +1 -1
  302. data/tracks/fsharp/exercises/rectangles/Rectangles.fsproj +1 -1
  303. data/tracks/fsharp/exercises/reverse-string/ReverseString.fsproj +1 -1
  304. data/tracks/fsharp/exercises/rna-transcription/RnaTranscription.fsproj +1 -1
  305. data/tracks/fsharp/exercises/robot-name/RobotName.fsproj +1 -1
  306. data/tracks/fsharp/exercises/robot-simulator/RobotSimulator.fsproj +1 -1
  307. data/tracks/fsharp/exercises/roman-numerals/RomanNumerals.fsproj +1 -1
  308. data/tracks/fsharp/exercises/rotational-cipher/RotationalCipher.fsproj +1 -1
  309. data/tracks/fsharp/exercises/run-length-encoding/RunLengthEncoding.fsproj +1 -1
  310. data/tracks/fsharp/exercises/saddle-points/SaddlePoints.fsproj +1 -1
  311. data/tracks/fsharp/exercises/say/Say.fsproj +1 -1
  312. data/tracks/fsharp/exercises/scale-generator/ScaleGenerator.fsproj +1 -1
  313. data/tracks/fsharp/exercises/scrabble-score/ScrabbleScore.fsproj +1 -1
  314. data/tracks/fsharp/exercises/secret-handshake/SecretHandshake.fsproj +1 -1
  315. data/tracks/fsharp/exercises/series/Series.fsproj +1 -1
  316. data/tracks/fsharp/exercises/sgf-parsing/SgfParsing.fsproj +1 -1
  317. data/tracks/fsharp/exercises/sieve/Sieve.fsproj +1 -1
  318. data/tracks/fsharp/exercises/simple-cipher/Example.fs +31 -21
  319. data/tracks/fsharp/exercises/simple-cipher/SimpleCipher.fs +8 -4
  320. data/tracks/fsharp/exercises/simple-cipher/SimpleCipher.fsproj +1 -1
  321. data/tracks/fsharp/exercises/simple-cipher/SimpleCipherTest.fs +51 -73
  322. data/tracks/fsharp/exercises/simple-linked-list/SimpleLinkedList.fsproj +1 -1
  323. data/tracks/fsharp/exercises/space-age/SpaceAge.fsproj +1 -1
  324. data/tracks/fsharp/exercises/spiral-matrix/SpiralMatrix.fsproj +1 -1
  325. data/tracks/fsharp/exercises/strain/Strain.fsproj +1 -1
  326. data/tracks/fsharp/exercises/sublist/Sublist.fsproj +1 -1
  327. data/tracks/fsharp/exercises/sum-of-multiples/SumOfMultiples.fsproj +1 -1
  328. data/tracks/fsharp/exercises/tournament/Tournament.fsproj +1 -1
  329. data/tracks/fsharp/exercises/transpose/Transpose.fsproj +1 -1
  330. data/tracks/fsharp/exercises/tree-building/TreeBuilding.fsproj +1 -1
  331. data/tracks/fsharp/exercises/triangle/Triangle.fsproj +1 -1
  332. data/tracks/fsharp/exercises/trinary/Trinary.fsproj +1 -1
  333. data/tracks/fsharp/exercises/twelve-days/TwelveDays.fsproj +1 -1
  334. data/tracks/fsharp/exercises/two-bucket/TwoBucket.fsproj +1 -1
  335. data/tracks/fsharp/exercises/two-fer/TwoFer.fsproj +1 -1
  336. data/tracks/fsharp/exercises/variable-length-quantity/VariableLengthQuantity.fsproj +1 -1
  337. data/tracks/fsharp/exercises/word-count/WordCount.fsproj +1 -1
  338. data/tracks/fsharp/exercises/word-search/WordSearch.fsproj +1 -1
  339. data/tracks/fsharp/exercises/wordy/Wordy.fsproj +1 -1
  340. data/tracks/fsharp/exercises/yacht/Yacht.fsproj +1 -1
  341. data/tracks/fsharp/exercises/zebra-puzzle/ZebraPuzzle.fsproj +1 -1
  342. data/tracks/fsharp/exercises/zipper/Zipper.fsproj +1 -1
  343. data/tracks/fsharp/generators/Generators.fs +53 -2
  344. data/tracks/fsharp/generators/Generators.fsproj +3 -3
  345. data/tracks/kotlin/exercises/atbash-cipher/.meta/version +1 -1
  346. data/tracks/kotlin/exercises/collatz-conjecture/.meta/version +1 -1
  347. data/tracks/kotlin/exercises/diamond/.meta/version +1 -1
  348. data/tracks/kotlin/exercises/grains/.meta/version +1 -1
  349. data/tracks/kotlin/exercises/largest-series-product/.meta/version +1 -1
  350. data/tracks/kotlin/exercises/nth-prime/.meta/version +1 -1
  351. data/tracks/kotlin/exercises/saddle-points/.meta/version +1 -1
  352. data/tracks/kotlin/exercises/sieve/.meta/version +1 -1
  353. data/tracks/kotlin/exercises/triangle/.meta/version +1 -1
  354. data/tracks/lua/config.json +1 -1
  355. data/tracks/ocaml/config/maintainers.json +11 -11
  356. data/tracks/ocaml/config.json +179 -175
  357. data/tracks/ocaml/docs/ABOUT.md +4 -8
  358. data/tracks/reasonml/.gitignore +2 -0
  359. data/tracks/reasonml/config.json +53 -6
  360. data/tracks/reasonml/docs/LEARNING.md +2 -0
  361. data/tracks/reasonml/docs/RESOURCES.md +6 -4
  362. data/tracks/reasonml/exercises/change/README.md +41 -0
  363. data/tracks/reasonml/exercises/change/__tests__/Change_test.re +39 -0
  364. data/tracks/reasonml/exercises/change/bsconfig.json +30 -0
  365. data/tracks/reasonml/exercises/change/package.json +20 -0
  366. data/tracks/reasonml/exercises/change/src/Example.re +37 -0
  367. data/tracks/reasonml/exercises/leap/__tests__/Leap_test.re +5 -4
  368. data/tracks/reasonml/exercises/leap/src/Example.re +1 -1
  369. data/tracks/reasonml/exercises/raindrops/README.md +33 -0
  370. data/tracks/reasonml/exercises/raindrops/__tests__/Raindrops_test.re +63 -0
  371. data/tracks/reasonml/exercises/raindrops/bsconfig.json +30 -0
  372. data/tracks/reasonml/exercises/raindrops/package-lock.json +5148 -0
  373. data/tracks/reasonml/exercises/raindrops/package.json +20 -0
  374. data/tracks/reasonml/exercises/raindrops/src/Example.re +18 -0
  375. data/tracks/reasonml/exercises/word-count/README.md +24 -0
  376. data/tracks/reasonml/exercises/word-count/__tests__/WordCount_test.re +78 -0
  377. data/tracks/reasonml/exercises/word-count/bsconfig.json +30 -0
  378. data/tracks/reasonml/exercises/word-count/package-lock.json +5853 -0
  379. data/tracks/reasonml/exercises/word-count/package.json +18 -0
  380. data/tracks/reasonml/exercises/word-count/src/Example.re +20 -0
  381. metadata +51 -3
  382. data/tracks/clojure/exercises/pov/.gitignore +0 -3
@@ -24,9 +24,6 @@ Check out the test suite to see the expected function signature.
24
24
  Keep your hands off that collect/map/fmap/whatchamacallit functionality
25
25
  provided by your standard library!
26
26
  Solve this one yourself using other basic tools instead.
27
-
28
- Lisp specific: it's perfectly fine to use `MAPCAR` or the equivalent,
29
- as this is idiomatic Lisp, not a library function.
30
27
  ## Source
31
28
 
32
29
  Conversation with James Edward Gray II [https://twitter.com/jeg2](https://twitter.com/jeg2)
@@ -0,0 +1,5 @@
1
+ (ns accumulate)
2
+
3
+ (defn accumulate [] ;; <- arglist goes here
4
+ ;; your code goes here
5
+ )
@@ -6,7 +6,6 @@ Techies love their TLA (Three Letter Acronyms)!
6
6
 
7
7
  Help generate some jargon by writing a program that converts a long name
8
8
  like Portable Network Graphics to its acronym (PNG).
9
-
10
9
  ## Source
11
10
 
12
11
  Julien Vanier [https://github.com/monkbroc](https://github.com/monkbroc)
@@ -6,6 +6,7 @@ Implement general base conversion. Given a number in base **a**,
6
6
  represented as a sequence of digits, convert it to base **b**.
7
7
 
8
8
  ## Note
9
+
9
10
  - Try to implement the conversion yourself.
10
11
  Do not use something else to perform the conversion for you.
11
12
 
@@ -28,7 +29,6 @@ The number 1120, *in base 3*, means:
28
29
 
29
30
  I think you got the idea!
30
31
 
31
-
32
32
  *Yes. Those three numbers above are exactly the same. Congratulations!*
33
33
 
34
34
  ## Submitting Incomplete Solutions
@@ -28,7 +28,6 @@ Note: a given score may include allergens **not** listed above (i.e.
28
28
  allergens that score 256, 512, 1024, etc.). Your program should
29
29
  ignore those components of the score. For example, if the allergy
30
30
  score is 257, your program should only report the eggs (1) allergy.
31
-
32
31
  ## Source
33
32
 
34
33
  Jumpstart Lab Warm-up [http://jumpstartlab.com](http://jumpstartlab.com)
@@ -1,4 +1,4 @@
1
- ## Armstrong numbers
1
+ # Armstrong Numbers
2
2
 
3
3
  An [Armstrong number](https://en.wikipedia.org/wiki/Narcissistic_number) is a number that is the sum of its own digits each raised to the power of the number of digits.
4
4
 
@@ -10,10 +10,9 @@ For example:
10
10
  - 154 is *not* an Armstrong number, because: `154 != 1^3 + 5^3 + 4^3 = 1 + 125 + 64 = 190`
11
11
 
12
12
  Write some code to determine whether a number is an Armstrong number.
13
-
14
13
  ## Source
15
14
 
16
- See more at [wikipedia](https://en.wikipedia.org/wiki/Narcissistic_number)
15
+ Wikipedia [https://en.wikipedia.org/wiki/Narcissistic_number](https://en.wikipedia.org/wiki/Narcissistic_number)
17
16
 
18
17
  ## Submitting Incomplete Solutions
19
18
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -1,3 +1,5 @@
1
1
  (ns armstrong-numbers)
2
2
 
3
- (defn armstrong? [n])
3
+ (defn armstrong? [n] ;; <- arglist goes here
4
+ ;; your code goes here
5
+ )
@@ -9,7 +9,7 @@ letter, the second with the second-last, and so on.
9
9
 
10
10
  An Atbash cipher for the Latin alphabet would be as follows:
11
11
 
12
- ```plain
12
+ ```text
13
13
  Plain: abcdefghijklmnopqrstuvwxyz
14
14
  Cipher: zyxwvutsrqponmlkjihgfedcba
15
15
  ```
@@ -23,6 +23,7 @@ being 5 letters, and punctuation is excluded. This is to make it harder to guess
23
23
  things based on word boundaries.
24
24
 
25
25
  ## Examples
26
+
26
27
  - Encoding `test` gives `gvhg`
27
28
  - Decoding `gvhg` gives `test`
28
29
  - Decoding `gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt` gives `thequickbrownfoxjumpsoverthelazydog`
@@ -1,10 +1,10 @@
1
1
  # Beer Song
2
2
 
3
- Produce the lyrics to that beloved classic, that field-trip favorite: 99 Bottles of Beer on the Wall.
3
+ Recite the lyrics to that beloved classic, that field-trip favorite: 99 Bottles of Beer on the Wall.
4
4
 
5
5
  Note that not all verses are identical.
6
6
 
7
- ```plain
7
+ ```text
8
8
  99 bottles of beer on the wall, 99 bottles of beer.
9
9
  Take one down and pass it around, 98 bottles of beer on the wall.
10
10
 
@@ -7,10 +7,12 @@ string, your program should produce a decimal output. The
7
7
  program should handle invalid inputs.
8
8
 
9
9
  ## Note
10
+
10
11
  - Implement the conversion yourself.
11
12
  Do not use something else to perform the conversion for you.
12
13
 
13
14
  ## About Binary (Base-2)
15
+
14
16
  Decimal is a base-10 system.
15
17
 
16
18
  A number 23 in base 10 notation can be understood
@@ -1,7 +1,8 @@
1
1
  # Bracket Push
2
2
 
3
- Given a string containing brackets `[]`, braces `{}` and parentheses `()`,
4
- verify that all the pairs are matched and nested correctly.
3
+ Given a string containing brackets `[]`, braces `{}`, parentheses `()`,
4
+ or any combination thereof, verify that any and all pairs are matched
5
+ and nested correctly.
5
6
  ## Source
6
7
 
7
8
  Ginna Baker
@@ -17,7 +17,7 @@ that the sum of the coins' value would equal the correct amount of change.
17
17
  - Can you ask for a change value smaller than the smallest coin value?
18
18
  ## Source
19
19
 
20
- Software Craftsmanship - Kata-logue [http://craftsmanship.sv.cmu.edu/exercises/coin-change-kata](http://craftsmanship.sv.cmu.edu/exercises/coin-change-kata)
20
+ Software Craftsmanship - Coin Change Kata [https://web.archive.org/web/20130115115225/http://craftsmanship.sv.cmu.edu:80/exercises/coin-change-kata](https://web.archive.org/web/20130115115225/http://craftsmanship.sv.cmu.edu:80/exercises/coin-change-kata)
21
21
 
22
22
  ## Submitting Incomplete Solutions
23
23
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -1,4 +1,4 @@
1
- ## Collatz Conjecture.
1
+ # Collatz Conjecture
2
2
 
3
3
  The Collatz Conjecture or 3x+1 problem can be summarized as follows:
4
4
 
@@ -10,6 +10,7 @@ always reach 1 eventually.
10
10
  Given a number n, return the number of steps required to reach 1.
11
11
 
12
12
  ## Examples
13
+
13
14
  Starting with n = 12, the steps would be as follows:
14
15
 
15
16
  0. 12
@@ -24,11 +25,9 @@ Starting with n = 12, the steps would be as follows:
24
25
  9. 1
25
26
 
26
27
  Resulting in 9 steps. So for input n = 12, the return value would be 9.
27
-
28
28
  ## Source
29
29
 
30
- An unsolved problem in mathematics named after mathematician Lothar Collatz
31
- see more at [collatz conjecture wikipedia](https://en.wikipedia.org/wiki/3x_%2B_1_problem)
30
+ An unsolved problem in mathematics named after mathematician Lothar Collatz [https://en.wikipedia.org/wiki/3x_%2B_1_problem](https://en.wikipedia.org/wiki/3x_%2B_1_problem)
32
31
 
33
32
  ## Submitting Incomplete Solutions
34
33
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -1,3 +1,5 @@
1
1
  (ns collatz-conjecture)
2
2
 
3
- (defn collatz [n])
3
+ (defn collatz [n] ;; <- arglist goes here
4
+ ;; your code goes here
5
+ )
@@ -1,3 +1,5 @@
1
+ # Complex Numbers
2
+
1
3
  A complex number is a number in the form `a + b * i` where `a` and `b` are real and `i` satisfies `i^2 = -1`.
2
4
 
3
5
  `a` is called the real part and `b` is called the imaginary part of `z`.
@@ -28,10 +30,9 @@ Implement the following operations:
28
30
 
29
31
 
30
32
  Assume the programming language you are using does not have an implementation of complex numbers.
31
-
32
33
  ## Source
33
34
 
34
- [wikipedia page](https://en.wikipedia.org/wiki/Complex_number)
35
+ Wikipedia [https://en.wikipedia.org/wiki/Complex_number](https://en.wikipedia.org/wiki/Complex_number)
35
36
 
36
37
  ## Submitting Incomplete Solutions
37
38
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -1,17 +1,34 @@
1
1
  (ns complex-numbers)
2
2
 
3
- (defn real [[a b]])
3
+ (defn real [[a b]] ;; <- arglist goes here
4
+ ;; your code goes here
5
+ )
4
6
 
5
- (defn imaginary [[a b]])
7
+ (defn imaginary [[a b]] ;; <- arglist goes here
8
+ ;; your code goes here
9
+ )
6
10
 
7
- (defn abs [[a b]])
11
+ (defn abs [[a b]] ;; <- arglist goes here
12
+ ;; your code goes here
13
+ )
8
14
 
9
- (defn conjugate [[a b]])
15
+ (defn conjugate [[a b]] ;; <- arglist goes here
16
+ ;; your code goes here
17
+ )
10
18
 
11
- (defn add [[a b] [c d]])
19
+ (defn add [[a b] [c d]] ;; <- arglist goes here
20
+ ;; your code goes here
21
+ )
12
22
 
13
- (defn sub [[a b] [c d]])
14
23
 
15
- (defn mul [[a b] [c d]])
24
+ (defn sub [[a b] [c d]] ;; <- arglist goes here
25
+ ;; your code goes here
26
+ )
16
27
 
17
- (defn div [[a b] [c d]])
28
+ (defn mul [[a b] [c d]] ;; <- arglist goes here
29
+ ;; your code goes here
30
+ )
31
+
32
+ (defn div [[a b] [c d]] ;; <- arglist goes here
33
+ ;; your code goes here
34
+ )
@@ -12,11 +12,15 @@ regarded as forming a rectangle when printed with intervening newlines.
12
12
 
13
13
  For example, the sentence
14
14
 
15
- > If man was meant to stay on the ground, god would have given us roots.
15
+ ```text
16
+ "If man was meant to stay on the ground, god would have given us roots."
17
+ ```
16
18
 
17
19
  is normalized to:
18
20
 
19
- > ifmanwasmeanttostayonthegroundgodwouldhavegivenusroots
21
+ ```text
22
+ "ifmanwasmeanttostayonthegroundgodwouldhavegivenusroots"
23
+ ```
20
24
 
21
25
  The plaintext should be organized in to a rectangle. The size of the
22
26
  rectangle (`r x c`) should be decided by the length of the message,
@@ -26,14 +30,14 @@ and `r` is the number of rows.
26
30
  Our normalized text is 54 characters long, dictating a rectangle with
27
31
  `c = 8` and `r = 7`:
28
32
 
29
- ```plain
30
- ifmanwas
31
- meanttos
32
- tayonthe
33
- groundgo
34
- dwouldha
35
- vegivenu
36
- sroots
33
+ ```text
34
+ "ifmanwas"
35
+ "meanttos"
36
+ "tayonthe"
37
+ "groundgo"
38
+ "dwouldha"
39
+ "vegivenu"
40
+ "sroots "
37
41
  ```
38
42
 
39
43
  The coded message is obtained by reading down the columns going left to
@@ -41,30 +45,31 @@ right.
41
45
 
42
46
  The message above is coded as:
43
47
 
44
- ```plain
45
- imtgdvsfearwermayoogoanouuiontnnlvtwttddesaohghnsseoau
48
+ ```text
49
+ "imtgdvsfearwermayoogoanouuiontnnlvtwttddesaohghnsseoau"
46
50
  ```
47
51
 
48
- Output the encoded text in chunks. Phrases that fill perfect squares
49
- `(r X r)` should be output in `r`-length chunks separated by spaces.
50
- Imperfect squares will have `n` empty spaces. Those spaces should be distributed evenly across the last `n` rows.
52
+ Output the encoded text in chunks that fill perfect rectangles `(r X c)`,
53
+ with `c` chunks of `r` length, separated by spaces. For phrases that are
54
+ `n` characters short of the perfect rectangle, pad each of the last `n`
55
+ chunks with a single trailing space.
51
56
 
52
- ```plain
53
- imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau
57
+ ```text
58
+ "imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau "
54
59
  ```
55
60
 
56
61
  Notice that were we to stack these, we could visually decode the
57
62
  cyphertext back in to the original message:
58
63
 
59
- ```plain
60
- imtgdvs
61
- fearwer
62
- mayoogo
63
- anouuio
64
- ntnnlvt
65
- wttddes
66
- aohghn
67
- sseoau
64
+ ```text
65
+ "imtgdvs"
66
+ "fearwer"
67
+ "mayoogo"
68
+ "anouuio"
69
+ "ntnnlvt"
70
+ "wttddes"
71
+ "aohghn "
72
+ "sseoau "
68
73
  ```
69
74
  ## Source
70
75
 
@@ -1,3 +1,5 @@
1
+ # Diamond
2
+
1
3
  The diamond kata takes as its input a letter, and outputs it in a diamond
2
4
  shape. Given a letter, it prints a diamond starting with 'A', with the
3
5
  supplied letter at the widest point.
@@ -49,3 +51,9 @@ E·······E
49
51
  ···B·B···
50
52
  ····A····
51
53
  ```
54
+ ## Source
55
+
56
+ Seb Rose [http://claysnow.co.uk/recycling-tests-in-tdd/](http://claysnow.co.uk/recycling-tests-in-tdd/)
57
+
58
+ ## Submitting Incomplete Solutions
59
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -1,3 +1,5 @@
1
+ # Dominoes
2
+
1
3
  Make a chain of dominoes.
2
4
 
3
5
  Compute a way to order a given set of dominoes in such a way that they form a
@@ -1,3 +1,5 @@
1
1
  (ns dominoes)
2
2
 
3
- (defn can-chain? [])
3
+ (defn can-chain? [] ;; <- arglist goes here
4
+ ;; your code goes here
5
+ )
@@ -1,8 +1,9 @@
1
- # Etl
1
+ # ETL
2
2
 
3
3
  We are going to do the `Transform` step of an Extract-Transform-Load.
4
4
 
5
5
  ### ETL
6
+
6
7
  Extract-Transform-Load (ETL) is a fancy way of saying, "We have some crufty, legacy data over in this system, and now we need it in this shiny new system over here, so
7
8
  we're going to migrate this."
8
9
 
@@ -11,6 +12,7 @@ once." That's then typically followed by much forehead slapping and
11
12
  moaning about how stupid we could possibly be.)
12
13
 
13
14
  ### The goal
15
+
14
16
  We're going to extract some scrabble scores from a legacy system.
15
17
 
16
18
  The old system stored a list of letters per score:
@@ -3,13 +3,12 @@
3
3
  Take a nested list and return a single flattened list with all values except nil/null.
4
4
 
5
5
  The challenge is to write a function that accepts an arbitrarily-deep nested list-like structure and returns a flattened structure without any nil/null values.
6
-
6
+
7
7
  For Example
8
8
 
9
9
  input: [1,[2,3,null,4],[null],5]
10
10
 
11
11
  output: [1,2,3,4,5]
12
-
13
12
  ## Source
14
13
 
15
14
  Interview Question [https://reference.wolfram.com/language/ref/Flatten.html](https://reference.wolfram.com/language/ref/Flatten.html)
@@ -21,7 +21,6 @@ In the end, you should be able to:
21
21
  Note that all our students only have one name. (It's a small town, what
22
22
  do you want?)
23
23
 
24
-
25
24
  ## For bonus points
26
25
 
27
26
  Did you get the tests passing and the code clean? If you want to, these
@@ -15,7 +15,6 @@ Write code that shows:
15
15
  - how many grains were on each square, and
16
16
  - the total number of grains
17
17
 
18
-
19
18
  ## For bonus points
20
19
 
21
20
  Did you get the tests passing and the code clean? If you want to, these
@@ -31,9 +31,10 @@ The Hamming distance between these two DNA strands is 7.
31
31
 
32
32
  # Implementation notes
33
33
 
34
- The Hamming distance is only defined for sequences of equal length. This means
35
- that based on the definition, each language could deal with getting sequences
36
- of equal length differently.
34
+ The Hamming distance is only defined for sequences of equal length, so
35
+ an attempt to calculate it between sequences of different lengths should
36
+ not work. The general handling of this situation (e.g., raising an
37
+ exception vs returning a special value) may differ between languages.
37
38
  ## Source
38
39
 
39
40
  The Calculating Point Mutations problem at Rosalind [http://rosalind.info/problems/hamm/](http://rosalind.info/problems/hamm/)
@@ -1,43 +1,47 @@
1
- Check if a given ISBN-10 is valid.
1
+ # ISBN Verifier
2
2
 
3
- ## Functionality
3
+ The [ISBN-10 verification process](https://en.wikipedia.org/wiki/International_Standard_Book_Number) is used to validate book identification
4
+ numbers. These normally contain dashes and look like: `3-598-21508-8`
4
5
 
5
- Given an unknown string the program should check if the provided string is a valid ISBN-10.
6
- Putting this into place requires some thinking about preprocessing/parsing of the string prior to calculating the check digit for the ISBN.
6
+ ## ISBN
7
7
 
8
- The program should allow for ISBN-10 without the separating dashes to be verified as well.
8
+ The ISBN-10 format is 9 digits (0 to 9) plus one check character (either a digit or an X only). In the case the check character is an X, this represents the value '10'. These may be communicated with or without hyphens, and can be checked for their validity by the following formula:
9
9
 
10
- ## ISBN
10
+ ```
11
+ (x1 * 10 + x2 * 9 + x3 * 8 + x4 * 7 + x5 * 6 + x6 * 5 + x7 * 4 + x8 * 3 + x9 * 2 + x10 * 1) mod 11 == 0
12
+ ```
11
13
 
12
- Let's take a random ISBN-10 number, say `3-598-21508-8` for this.
13
- The first digit block indicates the group where the ISBN belongs. Groups can consist of shared languages, geographic regions or countries. The leading '3' signals this ISBN is from a german speaking country.
14
- The following number block is to identify the publisher. Since this is a three digit publisher number there is a 5 digit title number for this book.
15
- The last digit in the ISBN is the check digit which is used to detect read errors.
14
+ If the result is 0, then it is a valid ISBN-10, otherwise it is invalid.
16
15
 
17
- The first 9 digits in the ISBN have to be between 0 and 9.
18
- The check digit can additionally be an 'X' to allow 10 to be a valid check digit as well.
16
+ ## Example
19
17
 
20
- A valid ISBN-10 is calculated with this formula `(x1 * 10 + x2 * 9 + x3 * 8 + x4 * 7 + x5 * 6 + x6 * 5 + x7 * 4 + x8 * 3 + x9 * 2 + x10 * 1) mod 11 == 0`
21
- So for our example ISBN this means:
22
- (3 * 10 + 5 * 9 + 9 * 8 + 8 * 7 + 2 * 6 + 1 * 5 + 5 * 4 + 0 * 3 + 8 * 2 + 8 * 1) mod 11 = 0
18
+ Let's take the ISBN-10 `3-598-21508-8`. We plug it in to the formula, and get:
19
+ ```
20
+ (3 * 10 + 5 * 9 + 9 * 8 + 8 * 7 + 2 * 6 + 1 * 5 + 5 * 4 + 0 * 3 + 8 * 2 + 8 * 1) mod 11 == 0
21
+ ```
22
+
23
+ Since the result is 0, this proves that our ISBN is valid.
24
+
25
+ ## Task
26
+
27
+ Given a string the program should check if the provided string is a valid ISBN-10.
28
+ Putting this into place requires some thinking about preprocessing/parsing of the string prior to calculating the check digit for the ISBN.
29
+
30
+ The program should be able to verify ISBN-10 both with and without separating dashes.
23
31
 
24
- Which proves that the ISBN is valid.
25
32
 
26
33
  ## Caveats
27
34
 
28
- Converting from string to number can be tricky in certain languages.
29
- It's getting even trickier since the check-digit of an ISBN-10 can be 'X'.
35
+ Converting from strings to numbers can be tricky in certain languages.
36
+ Now, it's even trickier since the check digit of an ISBN-10 may be 'X' (representing '10'). For instance `3-598-21507-X` is a valid ISBN-10.
30
37
 
31
38
  ## Bonus tasks
32
39
 
33
- * Generate a valid ISBN-13 from the input ISBN-10 (and maybe verify it again with a derived verifier)
34
-
35
- * Generate valid ISBN, maybe even from a given starting ISBN
40
+ * Generate a valid ISBN-13 from the input ISBN-10 (and maybe verify it again with a derived verifier).
36
41
 
37
- ## Source
42
+ * Generate valid ISBN, maybe even from a given starting ISBN.## Source
38
43
 
39
- Converting a string into a number and some basic processing utilizing a relatable real world example.
40
- [https://en.wikipedia.org/wiki/International_Standard_Book_Number#ISBN-10_check_digit_calculation](https://en.wikipedia.org/wiki/International_Standard_Book_Number#ISBN-10_check_digit_calculation)
44
+ Converting a string into a number and some basic processing utilizing a relatable real world example. [https://en.wikipedia.org/wiki/International_Standard_Book_Number#ISBN-10_check_digit_calculation](https://en.wikipedia.org/wiki/International_Standard_Book_Number#ISBN-10_check_digit_calculation)
41
45
 
42
46
  ## Submitting Incomplete Solutions
43
47
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -1,3 +1,5 @@
1
1
  (ns isbn-verifier)
2
2
 
3
- (defn isbn? [isbn])
3
+ (defn isbn? [isbn] ;; <- arglist goes here
4
+ ;; your code goes here
5
+ )
@@ -32,6 +32,9 @@
32
32
  (deftest too-long-isbn-and-no-dashes
33
33
  (is (= false (isbn? "3598215078X"))))
34
34
 
35
+ (deftest too-short-isbn
36
+ (is (= false (isbn? "00"))))
37
+
35
38
  (deftest isbn-without-check-digit
36
39
  (is (= false (isbn? "3-598-21507"))))
37
40
 
@@ -2,13 +2,14 @@
2
2
 
3
3
  Determine if a word or phrase is an isogram.
4
4
 
5
- An isogram (also known as a "nonpattern word") is a word or phrase without a repeating letter.
5
+ An isogram (also known as a "nonpattern word") is a word or phrase without a repeating letter, however spaces and hyphens are allowed to appear multiple times.
6
6
 
7
7
  Examples of isograms:
8
8
 
9
9
  - lumberjacks
10
10
  - background
11
11
  - downstream
12
+ - six-year-old
12
13
 
13
14
  The word *isograms*, however, is not an isogram, because the s repeats.
14
15
  ## Source
@@ -3,19 +3,19 @@
3
3
  Given a diagram, determine which plants each child in the kindergarten class is
4
4
  responsible for.
5
5
 
6
- The kindergarten class is learning about growing plants. The teachers
6
+ The kindergarten class is learning about growing plants. The teacher
7
7
  thought it would be a good idea to give them actual seeds, plant them in
8
8
  actual dirt, and grow actual plants.
9
9
 
10
10
  They've chosen to grow grass, clover, radishes, and violets.
11
11
 
12
- To this end, they've put little styrofoam cups along the window sills,
13
- and planted one type of plant in each cup, choosing randomly from the
14
- available types of seeds.
12
+ To this end, the children have put little cups along the window sills, and
13
+ planted one type of plant in each cup, choosing randomly from the available
14
+ types of seeds.
15
15
 
16
- ```plain
16
+ ```text
17
17
  [window][window][window]
18
- ........................ # each dot represents a styrofoam cup
18
+ ........................ # each dot represents a cup
19
19
  ........................
20
20
  ```
21
21
 
@@ -25,27 +25,27 @@ There are 12 children in the class:
25
25
  - Eve, Fred, Ginny, Harriet,
26
26
  - Ileana, Joseph, Kincaid, and Larry.
27
27
 
28
- Each child gets 4 cups, two on each row. The children are assigned to
29
- cups in alphabetical order.
28
+ Each child gets 4 cups, two on each row. Their teacher assigns cups to
29
+ the children alphabetically by their names.
30
30
 
31
31
  The following diagram represents Alice's plants:
32
32
 
33
- ```plain
33
+ ```text
34
34
  [window][window][window]
35
35
  VR......................
36
36
  RG......................
37
37
  ```
38
38
 
39
- So in the row nearest the window, she has a violet and a radish; in the
40
- row behind that, she has a radish and some grass.
39
+ In the first row, nearest the windows, she has a violet and a radish. In the
40
+ second row she has a radish and some grass.
41
41
 
42
42
  Your program will be given the plants from left-to-right starting with
43
43
  the row nearest the windows. From this, it should be able to determine
44
- which plants belong to which students.
44
+ which plants belong to each student.
45
45
 
46
46
  For example, if it's told that the garden looks like so:
47
47
 
48
- ```plain
48
+ ```text
49
49
  [window][window][window]
50
50
  VRCGVVRVCGGCCGVRGCVCGCGV
51
51
  VRCCCGCRRGVCGCRVVCVGCGCV
@@ -0,0 +1,5 @@
1
+ (ns largest-series-product)
2
+
3
+ (defn largest-product [] ;; <- arglist goes here
4
+ ;; your code goes here
5
+ )
@@ -4,7 +4,7 @@ Given a year, report if it is a leap year.
4
4
 
5
5
  The tricky thing here is that a leap year in the Gregorian calendar occurs:
6
6
 
7
- ```plain
7
+ ```text
8
8
  on every year that is evenly divisible by 4
9
9
  except every year that is evenly divisible by 100
10
10
  unless the year is also evenly divisible by 400
@@ -0,0 +1,5 @@
1
+ (ns leap)
2
+
3
+ (defn leap-year? [] ;; <- argslist goes here
4
+ ;; your code goes here
5
+ )