trackler 2.2.0.4 → 2.2.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (486) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/bash/config.json +10 -2
  4. data/tracks/bash/exercises/word-count/example.awk +12 -0
  5. data/tracks/bash/exercises/word-count/example.sh +21 -0
  6. data/tracks/c/config.json +0 -2
  7. data/tracks/ceylon/config.json +0 -2
  8. data/tracks/{erlang/exercises/all-your-base/.meta/readme.go.tmpl → clojure/config/exercise_readme.go.tmpl} +0 -1
  9. data/tracks/clojure/exercises/accumulate/README.md +35 -0
  10. data/tracks/clojure/exercises/acronym/README.md +15 -0
  11. data/tracks/clojure/exercises/all-your-base/README.md +35 -0
  12. data/tracks/clojure/exercises/allergies/README.md +37 -0
  13. data/tracks/clojure/exercises/anagram/README.md +13 -0
  14. data/tracks/clojure/exercises/atbash-cipher/README.md +34 -0
  15. data/tracks/clojure/exercises/bank-account/README.md +30 -0
  16. data/tracks/clojure/exercises/beer-song/README.md +327 -0
  17. data/tracks/clojure/exercises/binary/README.md +35 -0
  18. data/tracks/clojure/exercises/binary-search/README.md +41 -0
  19. data/tracks/clojure/exercises/binary-search-tree/README.md +60 -0
  20. data/tracks/clojure/exercises/bob/README.md +18 -0
  21. data/tracks/clojure/exercises/bracket-push/README.md +10 -0
  22. data/tracks/clojure/exercises/change/README.md +23 -0
  23. data/tracks/clojure/exercises/clock/README.md +13 -0
  24. data/tracks/clojure/exercises/crypto-square/README.md +74 -0
  25. data/tracks/clojure/exercises/difference-of-squares/README.md +19 -0
  26. data/tracks/clojure/exercises/etl/README.md +51 -0
  27. data/tracks/clojure/exercises/flatten-array/README.md +18 -0
  28. data/tracks/clojure/exercises/gigasecond/README.md +11 -0
  29. data/tracks/clojure/exercises/grade-school/README.md +42 -0
  30. data/tracks/clojure/exercises/grains/README.md +34 -0
  31. data/tracks/clojure/exercises/hamming/README.md +42 -0
  32. data/tracks/clojure/exercises/hello-world/README.md +51 -0
  33. data/tracks/clojure/exercises/hexadecimal/README.md +14 -0
  34. data/tracks/clojure/exercises/isogram/README.md +19 -0
  35. data/tracks/clojure/exercises/kindergarten-garden/README.md +66 -0
  36. data/tracks/clojure/exercises/largest-series-product/README.md +20 -0
  37. data/tracks/clojure/exercises/leap/README.md +33 -0
  38. data/tracks/clojure/exercises/luhn/README.md +71 -0
  39. data/tracks/clojure/exercises/meetup/README.md +30 -0
  40. data/tracks/clojure/exercises/minesweeper/README.md +30 -0
  41. data/tracks/clojure/exercises/nth-prime/README.md +15 -0
  42. data/tracks/clojure/exercises/nucleotide-count/README.md +33 -0
  43. data/tracks/clojure/exercises/octal/README.md +49 -0
  44. data/tracks/clojure/exercises/pangram/README.md +15 -0
  45. data/tracks/clojure/exercises/pascals-triangle/README.md +21 -0
  46. data/tracks/clojure/exercises/perfect-numbers/README.md +24 -0
  47. data/tracks/clojure/exercises/phone-number/README.md +34 -0
  48. data/tracks/clojure/exercises/pig-latin/README.md +24 -0
  49. data/tracks/clojure/exercises/pov/README.md +46 -0
  50. data/tracks/clojure/exercises/prime-factors/README.md +36 -0
  51. data/tracks/clojure/exercises/queen-attack/README.md +33 -0
  52. data/tracks/clojure/exercises/raindrops/README.md +24 -0
  53. data/tracks/clojure/exercises/rna-transcription/README.md +25 -0
  54. data/tracks/clojure/exercises/robot-name/README.md +22 -0
  55. data/tracks/clojure/exercises/robot-simulator/README.md +34 -0
  56. data/tracks/clojure/exercises/roman-numerals/README.md +49 -0
  57. data/tracks/clojure/exercises/rotational-cipher/README.md +36 -0
  58. data/tracks/clojure/exercises/scrabble-score/README.md +44 -0
  59. data/tracks/clojure/exercises/secret-handshake/README.md +35 -0
  60. data/tracks/clojure/exercises/sieve/README.md +34 -0
  61. data/tracks/clojure/exercises/space-age/README.md +24 -0
  62. data/tracks/clojure/exercises/strain/README.md +40 -0
  63. data/tracks/clojure/exercises/sublist/README.md +21 -0
  64. data/tracks/clojure/exercises/sum-of-multiples/README.md +18 -0
  65. data/tracks/clojure/exercises/triangle/README.md +26 -0
  66. data/tracks/clojure/exercises/trinary/README.md +28 -0
  67. data/tracks/clojure/exercises/word-count/README.md +19 -0
  68. data/tracks/clojure/exercises/wordy/README.md +63 -0
  69. data/tracks/{erlang/exercises/allergies/.meta/readme.go.tmpl → crystal/config/exercise_readme.go.tmpl} +0 -1
  70. data/tracks/crystal/config.json +0 -2
  71. data/tracks/crystal/exercises/acronym/README.md +38 -0
  72. data/tracks/crystal/exercises/anagram/README.md +36 -0
  73. data/tracks/crystal/exercises/atbash-cipher/README.md +57 -0
  74. data/tracks/crystal/exercises/binary/README.md +58 -0
  75. data/tracks/crystal/exercises/binary-search-tree/README.md +83 -0
  76. data/tracks/crystal/exercises/bob/README.md +41 -0
  77. data/tracks/crystal/exercises/bracket-push/README.md +33 -0
  78. data/tracks/crystal/exercises/difference-of-squares/README.md +42 -0
  79. data/tracks/crystal/exercises/flatten-array/README.md +41 -0
  80. data/tracks/crystal/exercises/forth/README.md +52 -0
  81. data/tracks/crystal/exercises/gigasecond/README.md +34 -0
  82. data/tracks/crystal/exercises/hamming/README.md +65 -0
  83. data/tracks/crystal/exercises/hello-world/README.md +78 -0
  84. data/tracks/crystal/exercises/largest-series-product/README.md +43 -0
  85. data/tracks/crystal/exercises/leap/README.md +56 -0
  86. data/tracks/crystal/exercises/pangram/README.md +38 -0
  87. data/tracks/crystal/exercises/pascals-triangle/README.md +44 -0
  88. data/tracks/crystal/exercises/raindrops/README.md +47 -0
  89. data/tracks/crystal/exercises/react/README.md +42 -0
  90. data/tracks/crystal/exercises/rna-transcription/README.md +48 -0
  91. data/tracks/crystal/exercises/roman-numerals/README.md +72 -0
  92. data/tracks/crystal/exercises/run-length-encoding/README.md +53 -0
  93. data/tracks/crystal/exercises/sieve/README.md +57 -0
  94. data/tracks/csharp/config.json +0 -2
  95. data/tracks/delphi/config.json +0 -2
  96. data/tracks/ecmascript/config.json +63 -2
  97. data/tracks/erlang/{exercises/anagram/.meta/readme.go.tmpl → config/exercise_readme.go.tmpl} +0 -1
  98. data/tracks/erlang/config.json +0 -2
  99. data/tracks/erlang/exercises/accumulate/README.md +0 -1
  100. data/tracks/erlang/exercises/all-your-base/README.md +0 -1
  101. data/tracks/erlang/exercises/allergies/README.md +0 -1
  102. data/tracks/erlang/exercises/anagram/README.md +0 -1
  103. data/tracks/erlang/exercises/atbash-cipher/README.md +0 -1
  104. data/tracks/erlang/exercises/bank-account/README.md +0 -1
  105. data/tracks/erlang/exercises/beer-song/README.md +0 -1
  106. data/tracks/erlang/exercises/bob/README.md +0 -1
  107. data/tracks/erlang/exercises/circular-buffer/README.md +0 -1
  108. data/tracks/erlang/exercises/clock/README.md +0 -1
  109. data/tracks/erlang/exercises/collatz-conjecture/README.md +0 -1
  110. data/tracks/erlang/exercises/difference-of-squares/README.md +0 -1
  111. data/tracks/erlang/exercises/etl/README.md +0 -1
  112. data/tracks/erlang/exercises/gigasecond/README.md +0 -1
  113. data/tracks/erlang/exercises/grade-school/README.md +0 -1
  114. data/tracks/erlang/exercises/grains/README.md +0 -1
  115. data/tracks/erlang/exercises/hamming/README.md +0 -1
  116. data/tracks/erlang/exercises/hello-world/README.md +0 -1
  117. data/tracks/erlang/exercises/largest-series-product/README.md +0 -1
  118. data/tracks/erlang/exercises/leap/README.md +0 -1
  119. data/tracks/erlang/exercises/luhn/README.md +0 -1
  120. data/tracks/erlang/exercises/meetup/README.md +0 -1
  121. data/tracks/erlang/exercises/nucleotide-count/README.md +0 -1
  122. data/tracks/erlang/exercises/parallel-letter-frequency/README.md +0 -1
  123. data/tracks/erlang/exercises/phone-number/README.md +0 -1
  124. data/tracks/erlang/exercises/rna-transcription/README.md +0 -1
  125. data/tracks/erlang/exercises/robot-simulator/README.md +0 -1
  126. data/tracks/erlang/exercises/roman-numerals/README.md +0 -1
  127. data/tracks/erlang/exercises/rotational-cipher/README.md +0 -1
  128. data/tracks/erlang/exercises/scrabble-score/README.md +0 -1
  129. data/tracks/erlang/exercises/series/README.md +0 -1
  130. data/tracks/erlang/exercises/space-age/README.md +0 -1
  131. data/tracks/erlang/exercises/spiral-matrix/README.md +0 -1
  132. data/tracks/erlang/exercises/strain/README.md +0 -1
  133. data/tracks/erlang/exercises/sum-of-multiples/README.md +0 -1
  134. data/tracks/erlang/exercises/triangle/README.md +0 -1
  135. data/tracks/erlang/exercises/word-count/README.md +0 -1
  136. data/tracks/erlang/exercises/zipper/README.md +0 -1
  137. data/tracks/factor/config.json +0 -2
  138. data/tracks/fsharp/config.json +0 -2
  139. data/tracks/go/config.json +12 -6
  140. data/tracks/go/exercises/bank-account/bank_account_test.go +60 -1
  141. data/tracks/go/exercises/error-handling/common.go +17 -0
  142. data/tracks/go/exercises/error-handling/error_handling_test.go +37 -4
  143. data/tracks/haskell/config.json +0 -2
  144. data/tracks/java/config.json +10 -2
  145. data/tracks/{erlang/exercises/accumulate → java/exercises/forth}/.meta/readme.go.tmpl +0 -0
  146. data/tracks/java/exercises/forth/README.md +41 -0
  147. data/tracks/java/exercises/forth/build.gradle +18 -0
  148. data/tracks/java/exercises/forth/src/example/java/ForthEvaluator.java +154 -0
  149. data/tracks/java/exercises/forth/src/example/java/Token.java +90 -0
  150. data/tracks/java/exercises/forth/src/main/java/.keep +0 -0
  151. data/tracks/java/exercises/forth/src/test/java/ForthEvaluatorTest.java +355 -0
  152. data/tracks/java/exercises/settings.gradle +1 -0
  153. data/tracks/javascript/config.json +0 -2
  154. data/tracks/kotlin/config.json +30 -2
  155. data/tracks/kotlin/exercises/forth/README.md +32 -0
  156. data/tracks/kotlin/exercises/forth/build.gradle +28 -0
  157. data/tracks/kotlin/exercises/forth/src/example/kotlin/ForthEvaluator.kt +138 -0
  158. data/tracks/kotlin/exercises/forth/src/main/kotlin/.keep +0 -0
  159. data/tracks/kotlin/exercises/forth/src/test/kotlin/ForthEvaluatorTest.kt +352 -0
  160. data/tracks/kotlin/exercises/meetup/README.md +33 -0
  161. data/tracks/kotlin/exercises/meetup/build.gradle +28 -0
  162. data/tracks/kotlin/exercises/meetup/src/example/kotlin/Meetup.kt +45 -0
  163. data/tracks/kotlin/exercises/meetup/src/example/kotlin/MeetupSchedule.kt +1 -0
  164. data/tracks/kotlin/exercises/meetup/src/main/kotlin/MeetupSchedule.kt +5 -0
  165. data/tracks/kotlin/exercises/meetup/src/test/kotlin/MeetupTest.kt +771 -0
  166. data/tracks/kotlin/exercises/say/README.md +72 -0
  167. data/tracks/kotlin/exercises/say/build.gradle +28 -0
  168. data/tracks/kotlin/exercises/say/src/example/kotlin/NumberSpeller.kt +88 -0
  169. data/tracks/kotlin/exercises/say/src/main/kotlin/.keep +0 -0
  170. data/tracks/kotlin/exercises/say/src/test/kotlin/NumberSpellerTest.kt +138 -0
  171. data/tracks/kotlin/exercises/settings.gradle +3 -0
  172. data/tracks/lua/config.json +0 -2
  173. data/tracks/mips/config.json +0 -2
  174. data/tracks/ocaml/config.json +0 -2
  175. data/tracks/perl5/config.json +262 -67
  176. data/tracks/perl6/config.json +98 -26
  177. data/tracks/php/docs/INSTALLATION.md +1 -1
  178. data/tracks/powershell/config.json +0 -2
  179. data/tracks/purescript/config.json +0 -2
  180. data/tracks/python/README.md +2 -2
  181. data/tracks/python/config/exercise_readme.go.tmpl +16 -0
  182. data/tracks/python/config.json +280 -15
  183. data/tracks/python/exercises/accumulate/README.md +46 -0
  184. data/tracks/python/exercises/acronym/README.md +26 -0
  185. data/tracks/python/exercises/all-your-base/README.md +46 -0
  186. data/tracks/python/exercises/allergies/README.md +48 -0
  187. data/tracks/python/exercises/alphametics/README.md +46 -0
  188. data/tracks/python/exercises/anagram/README.md +24 -0
  189. data/tracks/python/exercises/atbash-cipher/README.md +45 -0
  190. data/tracks/python/exercises/beer-song/README.md +338 -0
  191. data/tracks/python/exercises/binary/README.md +46 -0
  192. data/tracks/python/exercises/binary-search/README.md +52 -0
  193. data/tracks/python/exercises/bob/README.md +29 -0
  194. data/tracks/python/exercises/book-store/README.md +85 -0
  195. data/tracks/python/exercises/bracket-push/README.md +21 -0
  196. data/tracks/python/exercises/circular-buffer/README.md +61 -0
  197. data/tracks/python/exercises/clock/README.md +24 -0
  198. data/tracks/python/exercises/crypto-square/README.md +85 -0
  199. data/tracks/python/exercises/diamond/README.md +70 -0
  200. data/tracks/python/exercises/difference-of-squares/README.md +30 -0
  201. data/tracks/python/exercises/etl/README.md +62 -0
  202. data/tracks/python/exercises/flatten-array/README.md +29 -0
  203. data/tracks/python/exercises/gigasecond/README.md +22 -0
  204. data/tracks/python/exercises/grade-school/README.md +53 -0
  205. data/tracks/python/exercises/grains/README.md +45 -0
  206. data/tracks/python/exercises/grep/README.md +82 -0
  207. data/tracks/python/exercises/hamming/README.md +53 -0
  208. data/tracks/python/exercises/hello-world/README.md +32 -0
  209. data/tracks/python/exercises/hexadecimal/README.md +25 -0
  210. data/tracks/python/exercises/house/README.md +124 -0
  211. data/tracks/python/exercises/isogram/README.md +30 -0
  212. data/tracks/python/exercises/kindergarten-garden/README.md +77 -0
  213. data/tracks/python/exercises/largest-series-product/README.md +31 -0
  214. data/tracks/python/exercises/leap/README.md +44 -0
  215. data/tracks/python/exercises/linked-list/README.md +45 -0
  216. data/tracks/python/exercises/list-ops/README.md +21 -0
  217. data/tracks/python/exercises/luhn/README.md +82 -0
  218. data/tracks/python/exercises/matrix/README.md +56 -0
  219. data/tracks/python/exercises/meetup/README.md +41 -0
  220. data/tracks/python/exercises/minesweeper/README.md +41 -0
  221. data/tracks/python/exercises/nth-prime/README.md +26 -0
  222. data/tracks/python/exercises/nucleotide-count/README.md +44 -0
  223. data/tracks/python/exercises/ocr-numbers/README.md +96 -0
  224. data/tracks/python/exercises/octal/README.md +60 -0
  225. data/tracks/python/exercises/palindrome-products/README.md +51 -0
  226. data/tracks/python/exercises/pangram/README.md +26 -0
  227. data/tracks/python/exercises/pascals-triangle/README.md +32 -0
  228. data/tracks/python/exercises/perfect-numbers/README.md +35 -0
  229. data/tracks/python/exercises/phone-number/README.md +45 -0
  230. data/tracks/python/exercises/pig-latin/README.md +35 -0
  231. data/tracks/python/exercises/point-mutations/README.md +52 -0
  232. data/tracks/python/exercises/poker/README.md +23 -0
  233. data/tracks/python/exercises/prime-factors/README.md +47 -0
  234. data/tracks/python/exercises/protein-translation/README.md +60 -0
  235. data/tracks/python/exercises/proverb/README.md +29 -0
  236. data/tracks/python/exercises/pythagorean-triplet/README.md +35 -0
  237. data/tracks/python/exercises/queen-attack/README.md +44 -0
  238. data/tracks/python/exercises/rail-fence-cipher/README.md +71 -0
  239. data/tracks/python/exercises/raindrops/README.md +35 -0
  240. data/tracks/python/exercises/rectangles/README.md +78 -0
  241. data/tracks/python/exercises/rna-transcription/README.md +36 -0
  242. data/tracks/python/exercises/robot-name/README.md +33 -0
  243. data/tracks/python/exercises/robot-simulator/README.md +45 -0
  244. data/tracks/python/exercises/roman-numerals/README.md +60 -0
  245. data/tracks/python/exercises/rotational-cipher/README.md +47 -0
  246. data/tracks/python/exercises/run-length-encoding/README.md +41 -0
  247. data/tracks/python/exercises/saddle-points/README.md +44 -0
  248. data/tracks/python/exercises/say/README.md +80 -0
  249. data/tracks/python/exercises/scale-generator/README.md +71 -0
  250. data/tracks/python/exercises/scrabble-score/README.md +55 -0
  251. data/tracks/python/exercises/secret-handshake/README.md +46 -0
  252. data/tracks/python/exercises/series/README.md +38 -0
  253. data/tracks/python/exercises/sieve/README.md +45 -0
  254. data/tracks/python/exercises/simple-cipher/README.md +101 -0
  255. data/tracks/python/exercises/space-age/README.md +35 -0
  256. data/tracks/python/exercises/strain/README.md +51 -0
  257. data/tracks/python/exercises/sublist/README.md +32 -0
  258. data/tracks/python/exercises/sum-of-multiples/README.md +29 -0
  259. data/tracks/python/exercises/tournament/README.md +79 -0
  260. data/tracks/python/exercises/transpose/README.md +76 -0
  261. data/tracks/python/exercises/triangle/README.md +37 -0
  262. data/tracks/python/exercises/trinary/README.md +39 -0
  263. data/tracks/python/exercises/twelve-days/README.md +46 -0
  264. data/tracks/python/exercises/variable-length-quantity/README.md +50 -0
  265. data/tracks/python/exercises/word-count/README.md +30 -0
  266. data/tracks/python/exercises/word-search/README.md +41 -0
  267. data/tracks/python/exercises/wordy/README.md +74 -0
  268. data/tracks/python/exercises/zebra-puzzle/README.md +43 -0
  269. data/tracks/python/test/check-exercises.py +2 -3
  270. data/tracks/r/config.json +0 -2
  271. data/tracks/ruby/.travis.yml +1 -1
  272. data/tracks/ruby/config/exercise_readme.go.tmpl +16 -0
  273. data/tracks/ruby/config.json +265 -4
  274. data/tracks/ruby/exercises/accumulate/README.md +76 -0
  275. data/tracks/ruby/exercises/acronym/README.md +41 -0
  276. data/tracks/ruby/exercises/all-your-base/README.md +61 -0
  277. data/tracks/ruby/exercises/allergies/README.md +63 -0
  278. data/tracks/ruby/exercises/alphametics/README.md +61 -0
  279. data/tracks/ruby/exercises/anagram/README.md +39 -0
  280. data/tracks/ruby/exercises/atbash-cipher/README.md +60 -0
  281. data/tracks/ruby/exercises/beer-song/README.md +353 -0
  282. data/tracks/ruby/exercises/binary/README.md +61 -0
  283. data/tracks/ruby/exercises/binary-search/README.md +67 -0
  284. data/tracks/ruby/exercises/binary-search-tree/README.md +86 -0
  285. data/tracks/ruby/exercises/bob/README.md +44 -0
  286. data/tracks/ruby/exercises/bowling/README.md +79 -0
  287. data/tracks/ruby/exercises/bracket-push/README.md +36 -0
  288. data/tracks/ruby/exercises/circular-buffer/README.md +76 -0
  289. data/tracks/ruby/exercises/clock/README.md +39 -0
  290. data/tracks/ruby/exercises/collatz-conjecture/README.md +59 -0
  291. data/tracks/ruby/exercises/connect/README.md +60 -0
  292. data/tracks/ruby/exercises/crypto-square/README.md +100 -0
  293. data/tracks/ruby/exercises/custom-set/README.md +37 -0
  294. data/tracks/ruby/exercises/diamond/README.md +85 -0
  295. data/tracks/ruby/exercises/difference-of-squares/README.md +45 -0
  296. data/tracks/ruby/exercises/dominoes/README.md +44 -0
  297. data/tracks/ruby/exercises/etl/README.md +77 -0
  298. data/tracks/ruby/exercises/flatten-array/README.md +44 -0
  299. data/tracks/ruby/exercises/food-chain/README.md +96 -0
  300. data/tracks/ruby/exercises/gigasecond/README.md +37 -0
  301. data/tracks/ruby/exercises/grade-school/README.md +68 -0
  302. data/tracks/ruby/exercises/grains/README.md +60 -0
  303. data/tracks/ruby/exercises/hamming/README.md +68 -0
  304. data/tracks/ruby/exercises/hello-world/README.md +47 -0
  305. data/tracks/ruby/exercises/hexadecimal/README.md +40 -0
  306. data/tracks/ruby/exercises/house/README.md +139 -0
  307. data/tracks/ruby/exercises/isogram/README.md +45 -0
  308. data/tracks/ruby/exercises/kindergarten-garden/README.md +92 -0
  309. data/tracks/ruby/exercises/largest-series-product/README.md +46 -0
  310. data/tracks/ruby/exercises/leap/README.md +59 -0
  311. data/tracks/ruby/exercises/linked-list/README.md +60 -0
  312. data/tracks/ruby/exercises/list-ops/README.md +36 -0
  313. data/tracks/ruby/exercises/luhn/README.md +97 -0
  314. data/tracks/ruby/exercises/matrix/README.md +71 -0
  315. data/tracks/ruby/exercises/meetup/README.md +56 -0
  316. data/tracks/ruby/exercises/minesweeper/README.md +56 -0
  317. data/tracks/ruby/exercises/nth-prime/README.md +41 -0
  318. data/tracks/ruby/exercises/nucleotide-count/README.md +59 -0
  319. data/tracks/ruby/exercises/ocr-numbers/README.md +111 -0
  320. data/tracks/ruby/exercises/octal/README.md +75 -0
  321. data/tracks/ruby/exercises/palindrome-products/README.md +66 -0
  322. data/tracks/ruby/exercises/pangram/README.md +41 -0
  323. data/tracks/ruby/exercises/pascals-triangle/README.md +47 -0
  324. data/tracks/ruby/exercises/perfect-numbers/README.md +50 -0
  325. data/tracks/ruby/exercises/phone-number/README.md +60 -0
  326. data/tracks/ruby/exercises/pig-latin/README.md +50 -0
  327. data/tracks/ruby/exercises/point-mutations/README.md +67 -0
  328. data/tracks/ruby/exercises/poker/README.md +38 -0
  329. data/tracks/ruby/exercises/prime-factors/README.md +62 -0
  330. data/tracks/ruby/exercises/protein-translation/README.md +75 -0
  331. data/tracks/ruby/exercises/proverb/README.md +44 -0
  332. data/tracks/ruby/exercises/pythagorean-triplet/README.md +50 -0
  333. data/tracks/ruby/exercises/queen-attack/README.md +59 -0
  334. data/tracks/ruby/exercises/rail-fence-cipher/README.md +86 -0
  335. data/tracks/ruby/exercises/raindrops/README.md +50 -0
  336. data/tracks/ruby/exercises/rna-transcription/README.md +51 -0
  337. data/tracks/ruby/exercises/robot-name/README.md +57 -0
  338. data/tracks/ruby/exercises/robot-simulator/README.md +60 -0
  339. data/tracks/ruby/exercises/roman-numerals/README.md +75 -0
  340. data/tracks/ruby/exercises/run-length-encoding/README.md +56 -0
  341. data/tracks/ruby/exercises/saddle-points/README.md +59 -0
  342. data/tracks/ruby/exercises/say/README.md +95 -0
  343. data/tracks/ruby/exercises/scale-generator/README.md +86 -0
  344. data/tracks/ruby/exercises/scrabble-score/README.md +70 -0
  345. data/tracks/ruby/exercises/secret-handshake/README.md +61 -0
  346. data/tracks/ruby/exercises/series/README.md +53 -0
  347. data/tracks/ruby/exercises/sieve/README.md +60 -0
  348. data/tracks/ruby/exercises/simple-cipher/README.md +116 -0
  349. data/tracks/ruby/exercises/simple-linked-list/README.md +54 -0
  350. data/tracks/ruby/exercises/space-age/README.md +50 -0
  351. data/tracks/ruby/exercises/strain/README.md +66 -0
  352. data/tracks/ruby/exercises/sum-of-multiples/README.md +44 -0
  353. data/tracks/ruby/exercises/tournament/README.md +94 -0
  354. data/tracks/ruby/exercises/transpose/README.md +91 -0
  355. data/tracks/ruby/exercises/triangle/README.md +52 -0
  356. data/tracks/ruby/exercises/trinary/README.md +54 -0
  357. data/tracks/ruby/exercises/twelve-days/README.md +61 -0
  358. data/tracks/ruby/exercises/two-bucket/README.md +62 -0
  359. data/tracks/ruby/exercises/word-count/README.md +45 -0
  360. data/tracks/ruby/exercises/wordy/README.md +89 -0
  361. data/tracks/rust/README.md +3 -3
  362. data/tracks/rust/_test/WINDOWS_README.md +44 -0
  363. data/tracks/rust/config.json +9 -2
  364. data/tracks/rust/exercises/pig-latin/Cargo-example.toml +8 -0
  365. data/tracks/rust/exercises/pig-latin/Cargo.lock +4 -0
  366. data/tracks/rust/exercises/pig-latin/Cargo.toml +6 -0
  367. data/tracks/rust/exercises/pig-latin/README.md +56 -0
  368. data/tracks/rust/exercises/pig-latin/example.rs +28 -0
  369. data/tracks/rust/exercises/pig-latin/tests/pig-latin.rs +120 -0
  370. data/tracks/rust/problem_ordering.md +2 -2
  371. data/tracks/sml/config.json +0 -2
  372. data/tracks/swift/config/exercise_readme.go.tmpl +16 -0
  373. data/tracks/swift/config.json +304 -79
  374. data/tracks/swift/exercises/accumulate/README.md +43 -0
  375. data/tracks/swift/exercises/acronym/README.md +23 -0
  376. data/tracks/swift/exercises/all-your-base/README.md +43 -0
  377. data/tracks/swift/exercises/allergies/README.md +45 -0
  378. data/tracks/swift/exercises/anagram/README.md +21 -0
  379. data/tracks/swift/exercises/atbash-cipher/README.md +42 -0
  380. data/tracks/swift/exercises/beer-song/README.md +335 -0
  381. data/tracks/swift/exercises/binary/README.md +43 -0
  382. data/tracks/swift/exercises/binary-search/README.md +49 -0
  383. data/tracks/swift/exercises/binary-search-tree/README.md +68 -0
  384. data/tracks/swift/exercises/bob/README.md +26 -0
  385. data/tracks/swift/exercises/bowling/README.md +61 -0
  386. data/tracks/swift/exercises/bracket-push/README.md +18 -0
  387. data/tracks/swift/exercises/clock/README.md +21 -0
  388. data/tracks/swift/exercises/crypto-square/README.md +82 -0
  389. data/tracks/swift/exercises/custom-set/README.md +19 -0
  390. data/tracks/swift/exercises/difference-of-squares/README.md +27 -0
  391. data/tracks/swift/exercises/dominoes/README.md +26 -0
  392. data/tracks/swift/exercises/etl/README.md +59 -0
  393. data/tracks/swift/exercises/flatten-array/README.md +26 -0
  394. data/tracks/swift/exercises/food-chain/README.md +78 -0
  395. data/tracks/swift/exercises/gigasecond/README.md +19 -0
  396. data/tracks/swift/exercises/grade-school/README.md +50 -0
  397. data/tracks/swift/exercises/grains/README.md +42 -0
  398. data/tracks/swift/exercises/hamming/README.md +50 -0
  399. data/tracks/swift/exercises/hello-world/README.md +29 -0
  400. data/tracks/swift/exercises/hexadecimal/README.md +22 -0
  401. data/tracks/swift/exercises/house/README.md +121 -0
  402. data/tracks/swift/exercises/isogram/README.md +27 -0
  403. data/tracks/swift/exercises/kindergarten-garden/README.md +74 -0
  404. data/tracks/swift/exercises/largest-series-product/README.md +28 -0
  405. data/tracks/swift/exercises/leap/README.md +41 -0
  406. data/tracks/swift/exercises/linked-list/README.md +42 -0
  407. data/tracks/swift/exercises/luhn/README.md +79 -0
  408. data/tracks/swift/exercises/matrix/README.md +53 -0
  409. data/tracks/swift/exercises/meetup/README.md +38 -0
  410. data/tracks/swift/exercises/minesweeper/README.md +38 -0
  411. data/tracks/swift/exercises/nth-prime/README.md +23 -0
  412. data/tracks/swift/exercises/nucleotide-count/README.md +41 -0
  413. data/tracks/swift/exercises/ocr-numbers/README.md +93 -0
  414. data/tracks/swift/exercises/octal/README.md +57 -0
  415. data/tracks/swift/exercises/palindrome-products/README.md +48 -0
  416. data/tracks/swift/exercises/pangram/README.md +23 -0
  417. data/tracks/swift/exercises/pascals-triangle/README.md +29 -0
  418. data/tracks/swift/exercises/perfect-numbers/README.md +32 -0
  419. data/tracks/swift/exercises/phone-number/README.md +42 -0
  420. data/tracks/swift/exercises/pig-latin/README.md +32 -0
  421. data/tracks/swift/exercises/poker/README.md +20 -0
  422. data/tracks/swift/exercises/prime-factors/README.md +44 -0
  423. data/tracks/swift/exercises/pythagorean-triplet/README.md +32 -0
  424. data/tracks/swift/exercises/queen-attack/README.md +41 -0
  425. data/tracks/swift/exercises/raindrops/README.md +32 -0
  426. data/tracks/swift/exercises/rna-transcription/README.md +33 -0
  427. data/tracks/swift/exercises/robot-name/README.md +30 -0
  428. data/tracks/swift/exercises/robot-simulator/README.md +42 -0
  429. data/tracks/swift/exercises/roman-numerals/README.md +57 -0
  430. data/tracks/swift/exercises/run-length-encoding/README.md +38 -0
  431. data/tracks/swift/exercises/saddle-points/README.md +41 -0
  432. data/tracks/swift/exercises/scrabble-score/README.md +52 -0
  433. data/tracks/swift/exercises/secret-handshake/README.md +43 -0
  434. data/tracks/swift/exercises/series/README.md +35 -0
  435. data/tracks/swift/exercises/sieve/README.md +42 -0
  436. data/tracks/swift/exercises/simple-cipher/README.md +98 -0
  437. data/tracks/swift/exercises/simple-linked-list/README.md +36 -0
  438. data/tracks/swift/exercises/space-age/README.md +32 -0
  439. data/tracks/swift/exercises/strain/README.md +48 -0
  440. data/tracks/swift/exercises/sublist/README.md +29 -0
  441. data/tracks/swift/exercises/sum-of-multiples/README.md +26 -0
  442. data/tracks/swift/exercises/tournament/README.md +76 -0
  443. data/tracks/swift/exercises/transpose/README.md +73 -0
  444. data/tracks/swift/exercises/triangle/README.md +34 -0
  445. data/tracks/swift/exercises/trinary/README.md +36 -0
  446. data/tracks/swift/exercises/twelve-days/README.md +43 -0
  447. data/tracks/swift/exercises/word-count/README.md +27 -0
  448. data/tracks/swift/exercises/wordy/README.md +71 -0
  449. data/tracks/typescript/README.md +1 -1
  450. data/tracks/typescript/config.json +63 -3
  451. data/tracks/vimscript/config.json +0 -2
  452. metadata +371 -40
  453. data/tracks/erlang/exercises/atbash-cipher/.meta/readme.go.tmpl +0 -17
  454. data/tracks/erlang/exercises/bank-account/.meta/readme.go.tmpl +0 -17
  455. data/tracks/erlang/exercises/beer-song/.meta/readme.go.tmpl +0 -17
  456. data/tracks/erlang/exercises/bob/.meta/readme.go.tmpl +0 -17
  457. data/tracks/erlang/exercises/circular-buffer/.meta/readme.go.tmpl +0 -17
  458. data/tracks/erlang/exercises/clock/.meta/readme.go.tmpl +0 -17
  459. data/tracks/erlang/exercises/collatz-conjecture/.meta/readme.go.tmpl +0 -17
  460. data/tracks/erlang/exercises/difference-of-squares/.meta/readme.go.tmpl +0 -17
  461. data/tracks/erlang/exercises/etl/.meta/readme.go.tmpl +0 -17
  462. data/tracks/erlang/exercises/gigasecond/.meta/readme.go.tmpl +0 -17
  463. data/tracks/erlang/exercises/grade-school/.meta/readme.go.tmpl +0 -17
  464. data/tracks/erlang/exercises/grains/.meta/readme.go.tmpl +0 -17
  465. data/tracks/erlang/exercises/hamming/.meta/readme.go.tmpl +0 -17
  466. data/tracks/erlang/exercises/hello-world/.meta/readme.go.tmpl +0 -17
  467. data/tracks/erlang/exercises/largest-series-product/.meta/readme.go.tmpl +0 -17
  468. data/tracks/erlang/exercises/leap/.meta/readme.go.tmpl +0 -17
  469. data/tracks/erlang/exercises/luhn/.meta/readme.go.tmpl +0 -17
  470. data/tracks/erlang/exercises/meetup/.meta/readme.go.tmpl +0 -17
  471. data/tracks/erlang/exercises/nucleotide-count/.meta/readme.go.tmpl +0 -17
  472. data/tracks/erlang/exercises/parallel-letter-frequency/.meta/readme.go.tmpl +0 -17
  473. data/tracks/erlang/exercises/phone-number/.meta/readme.go.tmpl +0 -17
  474. data/tracks/erlang/exercises/rna-transcription/.meta/readme.go.tmpl +0 -17
  475. data/tracks/erlang/exercises/robot-simulator/.meta/readme.go.tmpl +0 -17
  476. data/tracks/erlang/exercises/roman-numerals/.meta/readme.go.tmpl +0 -17
  477. data/tracks/erlang/exercises/rotational-cipher/.meta/readme.go.tmpl +0 -17
  478. data/tracks/erlang/exercises/scrabble-score/.meta/readme.go.tmpl +0 -17
  479. data/tracks/erlang/exercises/series/.meta/readme.go.tmpl +0 -17
  480. data/tracks/erlang/exercises/space-age/.meta/readme.go.tmpl +0 -17
  481. data/tracks/erlang/exercises/spiral-matrix/.meta/readme.go.tmpl +0 -17
  482. data/tracks/erlang/exercises/strain/.meta/readme.go.tmpl +0 -17
  483. data/tracks/erlang/exercises/sum-of-multiples/.meta/readme.go.tmpl +0 -17
  484. data/tracks/erlang/exercises/triangle/.meta/readme.go.tmpl +0 -17
  485. data/tracks/erlang/exercises/word-count/.meta/readme.go.tmpl +0 -17
  486. data/tracks/erlang/exercises/zipper/.meta/readme.go.tmpl +0 -17
@@ -0,0 +1,68 @@
1
+ # Binary Search Tree
2
+
3
+ Insert and search for numbers in a binary tree.
4
+
5
+ When we need to represent sorted data, an array does not make a good
6
+ data structure.
7
+
8
+ Say we have the array `[1, 3, 4, 5]`, and we add 2 to it so it becomes
9
+ `[1, 3, 4, 5, 2]` now we must sort the entire array again! We can
10
+ improve on this by realizing that we only need to make space for the new
11
+ item `[1, nil, 3, 4, 5]`, and then adding the item in the space we
12
+ added. But this still requires us to shift many elements down by one.
13
+
14
+ Binary Search Trees, however, can operate on sorted data much more
15
+ efficiently.
16
+
17
+ A binary search tree consists of a series of connected nodes. Each node
18
+ contains a piece of data (e.g. the number 3), a variable named `left`,
19
+ and a variable named `right`. The `left` and `right` variables point at
20
+ `nil`, or other nodes. Since these other nodes in turn have other nodes
21
+ beneath them, we say that the left and right variables are pointing at
22
+ subtrees. All data in the left subtree is less than or equal to the
23
+ current node's data, and all data in the right subtree is greater than
24
+ the current node's data.
25
+
26
+ For example, if we had a node containing the data 4, and we added the
27
+ data 2, our tree would look like this:
28
+
29
+ 4
30
+ /
31
+ 2
32
+
33
+ If we then added 6, it would look like this:
34
+
35
+ 4
36
+ / \
37
+ 2 6
38
+
39
+ If we then added 3, it would look like this
40
+
41
+ 4
42
+ / \
43
+ 2 6
44
+ \
45
+ 3
46
+
47
+ And if we then added 1, 5, and 7, it would look like this
48
+
49
+ 4
50
+ / \
51
+ / \
52
+ 2 6
53
+ / \ / \
54
+ 1 3 5 7
55
+
56
+ ## Setup
57
+
58
+ Go through the project setup instructions for Xcode using Swift:
59
+
60
+ http://exercism.io/languages/swift
61
+
62
+
63
+ ## Source
64
+
65
+ Josh Cheek [https://twitter.com/josh_cheek](https://twitter.com/josh_cheek)
66
+
67
+ ## Submitting Incomplete Solutions
68
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,26 @@
1
+ # Bob
2
+
3
+ Bob is a lackadaisical teenager. In conversation, his responses are very limited.
4
+
5
+ Bob answers 'Sure.' if you ask him a question.
6
+
7
+ He answers 'Whoa, chill out!' if you yell at him.
8
+
9
+ He says 'Fine. Be that way!' if you address him without actually saying
10
+ anything.
11
+
12
+ He answers 'Whatever.' to anything else.
13
+
14
+ ## Setup
15
+
16
+ Go through the project setup instructions for Xcode using Swift:
17
+
18
+ http://exercism.io/languages/swift
19
+
20
+
21
+ ## Source
22
+
23
+ Inspired by the 'Deaf Grandma' exercise in Chris Pine's Learn to Program tutorial. [http://pine.fm/LearnToProgram/?Chapter=06](http://pine.fm/LearnToProgram/?Chapter=06)
24
+
25
+ ## Submitting Incomplete Solutions
26
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,61 @@
1
+ # Bowling
2
+
3
+ Score a bowling game.
4
+
5
+ Bowling is game where players roll a heavy ball to knock down pins
6
+ arranged in a triangle. Write code to keep track of the score
7
+ of a game of bowling.
8
+
9
+ ## Scoring Bowling
10
+
11
+ The game consists of 10 frames. A frame is composed of one or two ball throws with 10 pins standing at frame initialization. There are three cases for the tabulation of a frame.
12
+
13
+ * An open frame is where a score of less than 10 is recorded for the frame. In this case the score for the frame is the number of pins knocked down.
14
+
15
+ * A spare is where all ten pins are knocked down after the second throw. The total value of a spare is 10 plus the number of pins knocked down in their next throw.
16
+
17
+ * A strike is where all ten pins are knocked down after the first throw. The total value of a strike is 10 plus the number of pins knocked down in their next two throws. If a strike is immediately followed by a second strike, then we can not total the value of first strike until they throw the ball one more time.
18
+
19
+ Here is a three frame example:
20
+
21
+ | Frame 1 | Frame 2 | Frame 3 |
22
+ | :-------------: |:-------------:| :---------------------:|
23
+ | X (strike) | 5/ (spare) | 9 0 (open frame) |
24
+
25
+ Frame 1 is (10 + 5 + 5) = 20
26
+
27
+ Frame 2 is (5 + 5 + 9) = 19
28
+
29
+ Frame 3 is (9 + 0) = 9
30
+
31
+ This means the current running total is 48.
32
+
33
+ The tenth frame in the game is a special case. If someone throws a strike or a spare then they get a fill ball. Fill balls exist to calculate the total of the 10th frame. Scoring a strike or spare on the fill ball does not give the player more fill balls. The total value of the 10th frame is the total number of pins knocked down.
34
+
35
+ For a tenth frame of X1/ (strike and a spare), the total value is 20.
36
+
37
+ For a tenth frame of XXX (three strikes), the total value is 30.
38
+
39
+ ## Requirements
40
+
41
+ Write code to keep track of the score of a game of bowling. It should
42
+ support two operations:
43
+
44
+ * `roll(pins : int)` is called each time the player rolls a ball. The
45
+ argument is the number of pins knocked down.
46
+ * `score() : int` is called only at the very end of the game. It
47
+ returns the total score for that game.
48
+
49
+ ## Setup
50
+
51
+ Go through the project setup instructions for Xcode using Swift:
52
+
53
+ http://exercism.io/languages/swift
54
+
55
+
56
+ ## Source
57
+
58
+ The Bowling Game Kata at but UncleBob [http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata](http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata)
59
+
60
+ ## Submitting Incomplete Solutions
61
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,18 @@
1
+ # Bracket Push
2
+
3
+ Given a string containing brackets `[]`, braces `{}` and parentheses `()`,
4
+ verify that all the pairs are matched and nested correctly.
5
+
6
+ ## Setup
7
+
8
+ Go through the project setup instructions for Xcode using Swift:
9
+
10
+ http://exercism.io/languages/swift
11
+
12
+
13
+ ## Source
14
+
15
+ Ginna Baker
16
+
17
+ ## Submitting Incomplete Solutions
18
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,21 @@
1
+ # Clock
2
+
3
+ Implement a clock that handles times without dates.
4
+
5
+ You should be able to add and subtract minutes to it.
6
+
7
+ Two clocks that represent the same time should be equal to each other.
8
+
9
+ ## Setup
10
+
11
+ Go through the project setup instructions for Xcode using Swift:
12
+
13
+ http://exercism.io/languages/swift
14
+
15
+
16
+ ## Source
17
+
18
+ Pairing session with Erin Drummond [https://twitter.com/ebdrummond](https://twitter.com/ebdrummond)
19
+
20
+ ## Submitting Incomplete Solutions
21
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,82 @@
1
+ # Crypto Square
2
+
3
+ Implement the classic method for composing secret messages called a square code.
4
+
5
+ Given an English text, output the encoded version of that text.
6
+
7
+ First, the input is normalized: the spaces and punctuation are removed
8
+ from the English text and the message is downcased.
9
+
10
+ Then, the normalized characters are broken into rows. These rows can be
11
+ regarded as forming a rectangle when printed with intervening newlines.
12
+
13
+ For example, the sentence
14
+
15
+ > If man was meant to stay on the ground, god would have given us roots.
16
+
17
+ is normalized to:
18
+
19
+ > ifmanwasmeanttostayonthegroundgodwouldhavegivenusroots
20
+
21
+ The plaintext should be organized in to a rectangle. The size of the
22
+ rectangle (`r x c`) should be decided by the length of the message,
23
+ such that `c >= r` and `c - r <= 1`, where `c` is the number of columns
24
+ and `r` is the number of rows.
25
+
26
+ Our normalized text is 54 characters long, dictating a rectangle with
27
+ `c = 8` and `r = 7`:
28
+
29
+ ```plain
30
+ ifmanwas
31
+ meanttos
32
+ tayonthe
33
+ groundgo
34
+ dwouldha
35
+ vegivenu
36
+ sroots
37
+ ```
38
+
39
+ The coded message is obtained by reading down the columns going left to
40
+ right.
41
+
42
+ The message above is coded as:
43
+
44
+ ```plain
45
+ imtgdvsfearwermayoogoanouuiontnnlvtwttddesaohghnsseoau
46
+ ```
47
+
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.
51
+
52
+ ```plain
53
+ imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau
54
+ ```
55
+
56
+ Notice that were we to stack these, we could visually decode the
57
+ cyphertext back in to the original message:
58
+
59
+ ```plain
60
+ imtgdvs
61
+ fearwer
62
+ mayoogo
63
+ anouuio
64
+ ntnnlvt
65
+ wttddes
66
+ aohghn
67
+ sseoau
68
+ ```
69
+
70
+ ## Setup
71
+
72
+ Go through the project setup instructions for Xcode using Swift:
73
+
74
+ http://exercism.io/languages/swift
75
+
76
+
77
+ ## Source
78
+
79
+ J Dalbey's Programming Practice problems [http://users.csc.calpoly.edu/~jdalbey/103/Projects/ProgrammingPractice.html](http://users.csc.calpoly.edu/~jdalbey/103/Projects/ProgrammingPractice.html)
80
+
81
+ ## Submitting Incomplete Solutions
82
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,19 @@
1
+ # Custom Set
2
+
3
+ Create a custom set type.
4
+
5
+ Sometimes it is necessary to define a custom data structure of some
6
+ type, like a set. In this exercise you will define your own set. How it
7
+ works internally doesn't matter, as long as it behaves like a set of
8
+ unique elements.
9
+
10
+ ## Setup
11
+
12
+ Go through the project setup instructions for Xcode using Swift:
13
+
14
+ http://exercism.io/languages/swift
15
+
16
+
17
+
18
+ ## Submitting Incomplete Solutions
19
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,27 @@
1
+ # Difference Of Squares
2
+
3
+ Find the difference between the square of the sum and the sum of the squares of the first N natural numbers.
4
+
5
+ The square of the sum of the first ten natural numbers is
6
+ (1 + 2 + ... + 10)² = 55² = 3025.
7
+
8
+ The sum of the squares of the first ten natural numbers is
9
+ 1² + 2² + ... + 10² = 385.
10
+
11
+ Hence the difference between the square of the sum of the first
12
+ ten natural numbers and the sum of the squares of the first ten
13
+ natural numbers is 3025 - 385 = 2640.
14
+
15
+ ## Setup
16
+
17
+ Go through the project setup instructions for Xcode using Swift:
18
+
19
+ http://exercism.io/languages/swift
20
+
21
+
22
+ ## Source
23
+
24
+ Problem 6 at Project Euler [http://projecteuler.net/problem=6](http://projecteuler.net/problem=6)
25
+
26
+ ## Submitting Incomplete Solutions
27
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,26 @@
1
+ # Dominoes
2
+
3
+ Make a chain of dominoes.
4
+
5
+ Compute a way to order a given set of dominoes in such a way that they form a
6
+ correct domino chain (the dots on one half of a stone match the dots on the
7
+ neighbouring half of an adjacent stone) and that dots on the halfs of the stones
8
+ which don't have a neighbour (the first and last stone) match each other.
9
+
10
+ For example given the stones `21`, `23` and `13` you should compute something
11
+ like `12 23 31` or `32 21 13` or `13 32 21` etc, where the first and last numbers are the same.
12
+
13
+ For stones 12, 41 and 23 the resulting chain is not valid: 41 12 23's first and last numbers are not the same. 4 != 3
14
+
15
+ Some test cases may use duplicate stones in a chain solution, assume that multiple Domino sets are being used.
16
+
17
+ ## Setup
18
+
19
+ Go through the project setup instructions for Xcode using Swift:
20
+
21
+ http://exercism.io/languages/swift
22
+
23
+
24
+
25
+ ## Submitting Incomplete Solutions
26
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,59 @@
1
+ # Etl
2
+
3
+ We are going to do the `Transform` step of an Extract-Transform-Load.
4
+
5
+ ### ETL
6
+ 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
+ we're going to migrate this."
8
+
9
+ (Typically, this is followed by, "We're only going to need to run this
10
+ once." That's then typically followed by much forehead slapping and
11
+ moaning about how stupid we could possibly be.)
12
+
13
+ ### The goal
14
+ We're going to extract some scrabble scores from a legacy system.
15
+
16
+ The old system stored a list of letters per score:
17
+
18
+ - 1 point: "A", "E", "I", "O", "U", "L", "N", "R", "S", "T",
19
+ - 2 points: "D", "G",
20
+ - 3 points: "B", "C", "M", "P",
21
+ - 4 points: "F", "H", "V", "W", "Y",
22
+ - 5 points: "K",
23
+ - 8 points: "J", "X",
24
+ - 10 points: "Q", "Z",
25
+
26
+ The shiny new scrabble system instead stores the score per letter, which
27
+ makes it much faster and easier to calculate the score for a word. It
28
+ also stores the letters in lower-case regardless of the case of the
29
+ input letters:
30
+
31
+ - "a" is worth 1 point.
32
+ - "b" is worth 3 points.
33
+ - "c" is worth 3 points.
34
+ - "d" is worth 2 points.
35
+ - Etc.
36
+
37
+ Your mission, should you choose to accept it, is to transform the legacy data
38
+ format to the shiny new format.
39
+
40
+ ### Notes
41
+
42
+ A final note about scoring, Scrabble is played around the world in a
43
+ variety of languages, each with its own unique scoring table. For
44
+ example, an "E" is scored at 2 in the Māori-language version of the
45
+ game while being scored at 4 in the Hawaiian-language version.
46
+
47
+ ## Setup
48
+
49
+ Go through the project setup instructions for Xcode using Swift:
50
+
51
+ http://exercism.io/languages/swift
52
+
53
+
54
+ ## Source
55
+
56
+ The Jumpstart Lab team [http://jumpstartlab.com](http://jumpstartlab.com)
57
+
58
+ ## Submitting Incomplete Solutions
59
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,26 @@
1
+ # Flatten Array
2
+
3
+ Take a nested list and return a single flattened list with all values except nil/null.
4
+
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
+
7
+ For Example
8
+
9
+ input: [1,[2,3,null,4],[null],5]
10
+
11
+ output: [1,2,3,4,5]
12
+
13
+
14
+ ## Setup
15
+
16
+ Go through the project setup instructions for Xcode using Swift:
17
+
18
+ http://exercism.io/languages/swift
19
+
20
+
21
+ ## Source
22
+
23
+ Interview Question [https://reference.wolfram.com/language/ref/Flatten.html](https://reference.wolfram.com/language/ref/Flatten.html)
24
+
25
+ ## Submitting Incomplete Solutions
26
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,78 @@
1
+ # Food Chain
2
+
3
+ Generate the lyrics of the song 'I Know an Old Lady Who Swallowed a Fly'.
4
+
5
+ While you could copy/paste the lyrics,
6
+ or read them from a file, this problem is much more
7
+ interesting if you approach it algorithmically.
8
+
9
+ This is a [cumulative song](http://en.wikipedia.org/wiki/Cumulative_song) of unknown origin.
10
+
11
+ This is one of many common variants.
12
+
13
+ ```plain
14
+ I know an old lady who swallowed a fly.
15
+ I don't know why she swallowed the fly. Perhaps she'll die.
16
+
17
+ I know an old lady who swallowed a spider.
18
+ It wriggled and jiggled and tickled inside her.
19
+ She swallowed the spider to catch the fly.
20
+ I don't know why she swallowed the fly. Perhaps she'll die.
21
+
22
+ I know an old lady who swallowed a bird.
23
+ How absurd to swallow a bird!
24
+ She swallowed the bird to catch the spider that wriggled and jiggled and tickled inside her.
25
+ She swallowed the spider to catch the fly.
26
+ I don't know why she swallowed the fly. Perhaps she'll die.
27
+
28
+ I know an old lady who swallowed a cat.
29
+ Imagine that, to swallow a cat!
30
+ She swallowed the cat to catch the bird.
31
+ She swallowed the bird to catch the spider that wriggled and jiggled and tickled inside her.
32
+ She swallowed the spider to catch the fly.
33
+ I don't know why she swallowed the fly. Perhaps she'll die.
34
+
35
+ I know an old lady who swallowed a dog.
36
+ What a hog, to swallow a dog!
37
+ She swallowed the dog to catch the cat.
38
+ She swallowed the cat to catch the bird.
39
+ She swallowed the bird to catch the spider that wriggled and jiggled and tickled inside her.
40
+ She swallowed the spider to catch the fly.
41
+ I don't know why she swallowed the fly. Perhaps she'll die.
42
+
43
+ I know an old lady who swallowed a goat.
44
+ Just opened her throat and swallowed a goat!
45
+ She swallowed the goat to catch the dog.
46
+ She swallowed the dog to catch the cat.
47
+ She swallowed the cat to catch the bird.
48
+ She swallowed the bird to catch the spider that wriggled and jiggled and tickled inside her.
49
+ She swallowed the spider to catch the fly.
50
+ I don't know why she swallowed the fly. Perhaps she'll die.
51
+
52
+ I know an old lady who swallowed a cow.
53
+ I don't know how she swallowed a cow!
54
+ She swallowed the cow to catch the goat.
55
+ She swallowed the goat to catch the dog.
56
+ She swallowed the dog to catch the cat.
57
+ She swallowed the cat to catch the bird.
58
+ She swallowed the bird to catch the spider that wriggled and jiggled and tickled inside her.
59
+ She swallowed the spider to catch the fly.
60
+ I don't know why she swallowed the fly. Perhaps she'll die.
61
+
62
+ I know an old lady who swallowed a horse.
63
+ She's dead, of course!
64
+ ```
65
+
66
+ ## Setup
67
+
68
+ Go through the project setup instructions for Xcode using Swift:
69
+
70
+ http://exercism.io/languages/swift
71
+
72
+
73
+ ## Source
74
+
75
+ Wikipedia [http://en.wikipedia.org/wiki/There_Was_an_Old_Lady_Who_Swallowed_a_Fly](http://en.wikipedia.org/wiki/There_Was_an_Old_Lady_Who_Swallowed_a_Fly)
76
+
77
+ ## Submitting Incomplete Solutions
78
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,19 @@
1
+ # Gigasecond
2
+
3
+ Calculate the moment when someone has lived for 10^9 seconds.
4
+
5
+ A gigasecond is 10^9 (1,000,000,000) seconds.
6
+
7
+ ## Setup
8
+
9
+ Go through the project setup instructions for Xcode using Swift:
10
+
11
+ http://exercism.io/languages/swift
12
+
13
+
14
+ ## Source
15
+
16
+ Chapter 9 in Chris Pine's online Learn to Program tutorial. [http://pine.fm/LearnToProgram/?Chapter=09](http://pine.fm/LearnToProgram/?Chapter=09)
17
+
18
+ ## Submitting Incomplete Solutions
19
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,50 @@
1
+ # Grade School
2
+
3
+ Given students' names along with the grade that they are in, create a roster
4
+ for the school.
5
+
6
+ In the end, you should be able to:
7
+
8
+ - Add a student's name to the roster for a grade
9
+ - "Add Jim to grade 2."
10
+ - "OK."
11
+ - Get a list of all students enrolled in a grade
12
+ - "Which students are in grade 2?"
13
+ - "We've only got Jim just now."
14
+ - Get a sorted list of all students in all grades. Grades should sort
15
+ as 1, 2, 3, etc., and students within a grade should be sorted
16
+ alphabetically by name.
17
+ - "Who all is enrolled in school right now?"
18
+ - "Grade 1: Anna, Barb, and Charlie. Grade 2: Alex, Peter, and Zoe.
19
+ Grade 3…"
20
+
21
+ Note that all our students only have one name. (It's a small town, what
22
+ do you want?)
23
+
24
+
25
+ ## For bonus points
26
+
27
+ Did you get the tests passing and the code clean? If you want to, these
28
+ are some additional things you could try:
29
+
30
+ - If you're working in a language with mutable data structures and your
31
+ implementation allows outside code to mutate the school's internal DB
32
+ directly, see if you can prevent this. Feel free to introduce additional
33
+ tests.
34
+
35
+ Then please share your thoughts in a comment on the submission. Did this
36
+ experiment make the code better? Worse? Did you learn anything from it?
37
+
38
+ ## Setup
39
+
40
+ Go through the project setup instructions for Xcode using Swift:
41
+
42
+ http://exercism.io/languages/swift
43
+
44
+
45
+ ## Source
46
+
47
+ A pairing session with Phil Battos at gSchool [http://gschool.it](http://gschool.it)
48
+
49
+ ## Submitting Incomplete Solutions
50
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,42 @@
1
+ # Grains
2
+
3
+ Calculate the number of grains of wheat on a chessboard given that the number
4
+ on each square doubles.
5
+
6
+ There once was a wise servant who saved the life of a prince. The king
7
+ promised to pay whatever the servant could dream up. Knowing that the
8
+ king loved chess, the servant told the king he would like to have grains
9
+ of wheat. One grain on the first square of a chess board. Two grains on
10
+ the next. Four on the third, and so on.
11
+
12
+ There are 64 squares on a chessboard.
13
+
14
+ Write code that shows:
15
+ - how many grains were on each square, and
16
+ - the total number of grains
17
+
18
+
19
+ ## For bonus points
20
+
21
+ Did you get the tests passing and the code clean? If you want to, these
22
+ are some additional things you could try:
23
+
24
+ - Optimize for speed.
25
+ - Optimize for readability.
26
+
27
+ Then please share your thoughts in a comment on the submission. Did this
28
+ experiment make the code better? Worse? Did you learn anything from it?
29
+
30
+ ## Setup
31
+
32
+ Go through the project setup instructions for Xcode using Swift:
33
+
34
+ http://exercism.io/languages/swift
35
+
36
+
37
+ ## Source
38
+
39
+ JavaRanch Cattle Drive, exercise 6 [http://www.javaranch.com/grains.jsp](http://www.javaranch.com/grains.jsp)
40
+
41
+ ## Submitting Incomplete Solutions
42
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,50 @@
1
+ # Hamming
2
+
3
+ Calculate the Hamming difference between two DNA strands.
4
+
5
+ A mutation is simply a mistake that occurs during the creation or
6
+ copying of a nucleic acid, in particular DNA. Because nucleic acids are
7
+ vital to cellular functions, mutations tend to cause a ripple effect
8
+ throughout the cell. Although mutations are technically mistakes, a very
9
+ rare mutation may equip the cell with a beneficial attribute. In fact,
10
+ the macro effects of evolution are attributable by the accumulated
11
+ result of beneficial microscopic mutations over many generations.
12
+
13
+ The simplest and most common type of nucleic acid mutation is a point
14
+ mutation, which replaces one base with another at a single nucleotide.
15
+
16
+ By counting the number of differences between two homologous DNA strands
17
+ taken from different genomes with a common ancestor, we get a measure of
18
+ the minimum number of point mutations that could have occurred on the
19
+ evolutionary path between the two strands.
20
+
21
+ This is called the 'Hamming distance'.
22
+
23
+ It is found by comparing two DNA strands and counting how many of the
24
+ nucleotides are different from their equivalent in the other string.
25
+
26
+ GAGCCTACTAACGGGAT
27
+ CATCGTAATGACGGCCT
28
+ ^ ^ ^ ^ ^ ^^
29
+
30
+ The Hamming distance between these two DNA strands is 7.
31
+
32
+ # Implementation notes
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.
37
+
38
+ ## Setup
39
+
40
+ Go through the project setup instructions for Xcode using Swift:
41
+
42
+ http://exercism.io/languages/swift
43
+
44
+
45
+ ## Source
46
+
47
+ The Calculating Point Mutations problem at Rosalind [http://rosalind.info/problems/hamm/](http://rosalind.info/problems/hamm/)
48
+
49
+ ## Submitting Incomplete Solutions
50
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.