trackler 2.2.0.2 → 2.2.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (415) hide show
  1. checksums.yaml +4 -4
  2. data/fixtures/deprecation-fixtures/tracks/repo-nope/config.json +2 -0
  3. data/fixtures/deprecation-fixtures/tracks/repo-yepp/config.json +3 -0
  4. data/lib/trackler/track.rb +1 -1
  5. data/lib/trackler/version.rb +1 -1
  6. data/tracks/csharp/config/exercise_readme.go.tmpl +16 -0
  7. data/tracks/csharp/exercises/accumulate/README.md +44 -0
  8. data/tracks/csharp/exercises/acronym/README.md +21 -0
  9. data/tracks/csharp/exercises/all-your-base/README.md +41 -0
  10. data/tracks/csharp/exercises/allergies/README.md +46 -0
  11. data/tracks/csharp/exercises/alphametics/README.md +48 -0
  12. data/tracks/csharp/exercises/anagram/README.md +19 -0
  13. data/tracks/csharp/exercises/atbash-cipher/README.md +40 -0
  14. data/tracks/csharp/exercises/bank-account/README.md +41 -0
  15. data/tracks/csharp/exercises/beer-song/README.md +336 -0
  16. data/tracks/csharp/exercises/binary-search-tree/README.md +66 -0
  17. data/tracks/csharp/exercises/binary-search/README.md +47 -0
  18. data/tracks/csharp/exercises/bob/README.md +24 -0
  19. data/tracks/csharp/exercises/book-store/README.md +80 -0
  20. data/tracks/csharp/exercises/bowling/README.md +59 -0
  21. data/tracks/csharp/exercises/bracket-push/README.md +16 -0
  22. data/tracks/csharp/exercises/change/README.md +29 -0
  23. data/tracks/csharp/exercises/circular-buffer/README.md +56 -0
  24. data/tracks/csharp/exercises/clock/README.md +25 -0
  25. data/tracks/csharp/exercises/connect/README.md +40 -0
  26. data/tracks/csharp/exercises/crypto-square/README.md +80 -0
  27. data/tracks/csharp/exercises/custom-set/README.md +23 -0
  28. data/tracks/csharp/exercises/diamond/README.md +75 -0
  29. data/tracks/csharp/exercises/difference-of-squares/README.md +30 -0
  30. data/tracks/csharp/exercises/diffie-hellman/README.md +55 -0
  31. data/tracks/csharp/exercises/dominoes/README.md +24 -0
  32. data/tracks/csharp/exercises/dot-dsl/README.md +37 -0
  33. data/tracks/csharp/exercises/error-handling/README.md +19 -0
  34. data/tracks/csharp/exercises/etl/README.md +57 -0
  35. data/tracks/csharp/exercises/flatten-array/README.md +24 -0
  36. data/tracks/csharp/exercises/food-chain/README.md +80 -0
  37. data/tracks/csharp/exercises/forth/README.md +39 -0
  38. data/tracks/csharp/exercises/gigasecond/README.md +17 -0
  39. data/tracks/csharp/exercises/go-counting/README.md +43 -0
  40. data/tracks/csharp/exercises/grade-school/README.md +48 -0
  41. data/tracks/csharp/exercises/grains/README.md +40 -0
  42. data/tracks/csharp/exercises/grep/README.md +77 -0
  43. data/tracks/csharp/exercises/hamming/README.md +48 -0
  44. data/tracks/csharp/exercises/hangman/README.md +32 -0
  45. data/tracks/csharp/exercises/hello-world/README.md +27 -0
  46. data/tracks/csharp/exercises/house/README.md +123 -0
  47. data/tracks/csharp/exercises/isogram/README.md +25 -0
  48. data/tracks/csharp/exercises/kindergarten-garden/README.md +72 -0
  49. data/tracks/csharp/exercises/largest-series-product/README.md +26 -0
  50. data/tracks/csharp/exercises/leap/README.md +39 -0
  51. data/tracks/csharp/exercises/ledger/README.md +24 -0
  52. data/tracks/csharp/exercises/linked-list/README.md +40 -0
  53. data/tracks/csharp/exercises/list-ops/README.md +19 -0
  54. data/tracks/csharp/exercises/luhn/README.md +77 -0
  55. data/tracks/csharp/exercises/markdown/README.md +28 -0
  56. data/tracks/csharp/exercises/matrix/README.md +51 -0
  57. data/tracks/csharp/exercises/meetup/README.md +36 -0
  58. data/tracks/csharp/exercises/minesweeper/README.md +36 -0
  59. data/tracks/csharp/exercises/nth-prime/README.md +29 -0
  60. data/tracks/csharp/exercises/nucleotide-count/README.md +43 -0
  61. data/tracks/csharp/exercises/ocr-numbers/README.md +91 -0
  62. data/tracks/csharp/exercises/palindrome-products/README.md +51 -0
  63. data/tracks/csharp/exercises/pangram/README.md +21 -0
  64. data/tracks/csharp/exercises/parallel-letter-frequency/README.md +17 -0
  65. data/tracks/csharp/exercises/pascals-triangle/README.md +27 -0
  66. data/tracks/csharp/exercises/perfect-numbers/README.md +30 -0
  67. data/tracks/csharp/exercises/phone-number/README.md +40 -0
  68. data/tracks/csharp/exercises/pig-latin/README.md +30 -0
  69. data/tracks/csharp/exercises/poker/README.md +18 -0
  70. data/tracks/csharp/exercises/pov/README.md +52 -0
  71. data/tracks/csharp/exercises/prime-factors/README.md +42 -0
  72. data/tracks/csharp/exercises/protein-translation/README.md +55 -0
  73. data/tracks/csharp/exercises/proverb/README.md +28 -0
  74. data/tracks/csharp/exercises/pythagorean-triplet/README.md +30 -0
  75. data/tracks/csharp/exercises/queen-attack/README.md +39 -0
  76. data/tracks/csharp/exercises/rail-fence-cipher/README.md +66 -0
  77. data/tracks/csharp/exercises/raindrops/README.md +30 -0
  78. data/tracks/csharp/exercises/react/README.md +29 -0
  79. data/tracks/csharp/exercises/rectangles/README.md +73 -0
  80. data/tracks/csharp/exercises/rna-transcription/README.md +31 -0
  81. data/tracks/csharp/exercises/robot-name/README.md +28 -0
  82. data/tracks/csharp/exercises/robot-simulator/README.md +40 -0
  83. data/tracks/csharp/exercises/roman-numerals/README.md +59 -0
  84. data/tracks/csharp/exercises/rotational-cipher/README.md +42 -0
  85. data/tracks/csharp/exercises/run-length-encoding/README.md +36 -0
  86. data/tracks/csharp/exercises/saddle-points/README.md +44 -0
  87. data/tracks/csharp/exercises/say/README.md +75 -0
  88. data/tracks/csharp/exercises/scale-generator/README.md +66 -0
  89. data/tracks/csharp/exercises/scrabble-score/README.md +50 -0
  90. data/tracks/csharp/exercises/secret-handshake/README.md +41 -0
  91. data/tracks/csharp/exercises/series/README.md +33 -0
  92. data/tracks/csharp/exercises/sgf-parsing/README.md +78 -0
  93. data/tracks/csharp/exercises/sieve/README.md +40 -0
  94. data/tracks/csharp/exercises/simple-cipher/README.md +96 -0
  95. data/tracks/csharp/exercises/simple-linked-list/README.md +38 -0
  96. data/tracks/csharp/exercises/space-age/README.md +30 -0
  97. data/tracks/csharp/exercises/strain/README.md +46 -0
  98. data/tracks/csharp/exercises/sublist/README.md +32 -0
  99. data/tracks/csharp/exercises/sum-of-multiples/README.md +28 -0
  100. data/tracks/csharp/exercises/tournament/README.md +74 -0
  101. data/tracks/csharp/exercises/transpose/README.md +71 -0
  102. data/tracks/csharp/exercises/tree-building/README.md +36 -0
  103. data/tracks/csharp/exercises/triangle/README.md +32 -0
  104. data/tracks/csharp/exercises/twelve-days/README.md +45 -0
  105. data/tracks/csharp/exercises/two-bucket/README.md +42 -0
  106. data/tracks/csharp/exercises/variable-length-quantity/README.md +50 -0
  107. data/tracks/csharp/exercises/word-count/README.md +25 -0
  108. data/tracks/csharp/exercises/word-search/README.md +43 -0
  109. data/tracks/csharp/exercises/wordy/README.md +73 -0
  110. data/tracks/csharp/exercises/zebra-puzzle/README.md +43 -0
  111. data/tracks/csharp/exercises/zipper/README.md +41 -0
  112. data/tracks/dart/config/exercise_readme.go.tmpl +16 -0
  113. data/tracks/dart/exercises/bob/README.md +18 -0
  114. data/tracks/dart/exercises/difference-of-squares/README.md +19 -0
  115. data/tracks/dart/exercises/gigasecond/README.md +11 -0
  116. data/tracks/dart/exercises/hamming/README.md +42 -0
  117. data/tracks/dart/exercises/hello-world/README.md +21 -0
  118. data/tracks/dart/exercises/leap/README.md +33 -0
  119. data/tracks/dart/exercises/rna-transcription/README.md +25 -0
  120. data/tracks/delphi/config.json +25 -32
  121. data/tracks/elixir/config.json +255 -3
  122. data/tracks/elixir/config/exercise_readme.go.tmpl +16 -0
  123. data/tracks/elixir/exercises/accumulate/README.md +72 -0
  124. data/tracks/elixir/exercises/acronym/README.md +52 -0
  125. data/tracks/elixir/exercises/all-your-base/README.md +72 -0
  126. data/tracks/elixir/exercises/allergies/README.md +74 -0
  127. data/tracks/elixir/exercises/anagram/README.md +50 -0
  128. data/tracks/elixir/exercises/atbash-cipher/README.md +71 -0
  129. data/tracks/elixir/exercises/bank-account/README.md +67 -0
  130. data/tracks/elixir/exercises/beer-song/README.md +364 -0
  131. data/tracks/elixir/exercises/binary-search/README.md +78 -0
  132. data/tracks/elixir/exercises/binary/README.md +72 -0
  133. data/tracks/elixir/exercises/bob/README.md +55 -0
  134. data/tracks/elixir/exercises/bowling/README.md +90 -0
  135. data/tracks/elixir/exercises/bowling/bowling_test.exs +91 -18
  136. data/tracks/elixir/exercises/bowling/example.exs +4 -4
  137. data/tracks/elixir/exercises/bracket-push/README.md +47 -0
  138. data/tracks/elixir/exercises/change/README.md +60 -0
  139. data/tracks/elixir/exercises/clock/README.md +50 -0
  140. data/tracks/elixir/exercises/collatz-conjecture/README.md +70 -0
  141. data/tracks/elixir/exercises/connect/README.md +71 -0
  142. data/tracks/elixir/exercises/crypto-square/README.md +111 -0
  143. data/tracks/elixir/exercises/custom-set/README.md +48 -0
  144. data/tracks/elixir/exercises/diamond/README.md +96 -0
  145. data/tracks/elixir/exercises/difference-of-squares/README.md +56 -0
  146. data/tracks/elixir/exercises/diffie-hellman/README.md +93 -0
  147. data/tracks/elixir/exercises/dominoes/README.md +55 -0
  148. data/tracks/elixir/exercises/dot-dsl/README.md +65 -0
  149. data/tracks/elixir/exercises/etl/README.md +88 -0
  150. data/tracks/elixir/exercises/flatten-array/README.md +55 -0
  151. data/tracks/elixir/exercises/forth/README.md +66 -0
  152. data/tracks/elixir/exercises/gigasecond/README.md +48 -0
  153. data/tracks/elixir/exercises/grade-school/README.md +79 -0
  154. data/tracks/elixir/exercises/grains/README.md +71 -0
  155. data/tracks/elixir/exercises/grep/README.md +108 -0
  156. data/tracks/elixir/exercises/hamming/README.md +79 -0
  157. data/tracks/elixir/exercises/hello-world/README.md +58 -0
  158. data/tracks/elixir/exercises/hexadecimal/README.md +51 -0
  159. data/tracks/elixir/exercises/isogram/README.md +56 -0
  160. data/tracks/elixir/exercises/kindergarten-garden/README.md +103 -0
  161. data/tracks/elixir/exercises/largest-series-product/README.md +57 -0
  162. data/tracks/elixir/exercises/leap/README.md +70 -0
  163. data/tracks/elixir/exercises/list-ops/README.md +47 -0
  164. data/tracks/elixir/exercises/luhn/README.md +108 -0
  165. data/tracks/elixir/exercises/markdown/README.md +55 -0
  166. data/tracks/elixir/exercises/matrix/README.md +82 -0
  167. data/tracks/elixir/exercises/meetup/README.md +67 -0
  168. data/tracks/elixir/exercises/minesweeper/README.md +67 -0
  169. data/tracks/elixir/exercises/nth-prime/README.md +52 -0
  170. data/tracks/elixir/exercises/nucleotide-count/README.md +70 -0
  171. data/tracks/elixir/exercises/ocr-numbers/README.md +122 -0
  172. data/tracks/elixir/exercises/palindrome-products/README.md +77 -0
  173. data/tracks/elixir/exercises/pangram/README.md +52 -0
  174. data/tracks/elixir/exercises/parallel-letter-frequency/README.md +48 -0
  175. data/tracks/elixir/exercises/pascals-triangle/README.md +58 -0
  176. data/tracks/elixir/exercises/perfect-numbers/README.md +61 -0
  177. data/tracks/elixir/exercises/phone-number/README.md +71 -0
  178. data/tracks/elixir/exercises/pig-latin/README.md +61 -0
  179. data/tracks/elixir/exercises/poker/README.md +49 -0
  180. data/tracks/elixir/exercises/prime-factors/README.md +73 -0
  181. data/tracks/elixir/exercises/protein-translation/README.md +86 -0
  182. data/tracks/elixir/exercises/pythagorean-triplet/README.md +61 -0
  183. data/tracks/elixir/exercises/queen-attack/README.md +70 -0
  184. data/tracks/elixir/exercises/rail-fence-cipher/README.md +97 -0
  185. data/tracks/elixir/exercises/raindrops/README.md +61 -0
  186. data/tracks/elixir/exercises/rna-transcription/README.md +62 -0
  187. data/tracks/elixir/exercises/robot-simulator/README.md +71 -0
  188. data/tracks/elixir/exercises/roman-numerals/README.md +86 -0
  189. data/tracks/elixir/exercises/rotational-cipher/README.md +73 -0
  190. data/tracks/elixir/exercises/run-length-encoding/README.md +67 -0
  191. data/tracks/elixir/exercises/saddle-points/README.md +70 -0
  192. data/tracks/elixir/exercises/say/README.md +106 -0
  193. data/tracks/elixir/exercises/scale-generator/README.md +97 -0
  194. data/tracks/elixir/exercises/scrabble-score/README.md +81 -0
  195. data/tracks/elixir/exercises/secret-handshake/README.md +94 -0
  196. data/tracks/elixir/exercises/series/README.md +64 -0
  197. data/tracks/elixir/exercises/sieve/README.md +71 -0
  198. data/tracks/elixir/exercises/simple-cipher/README.md +127 -0
  199. data/tracks/elixir/exercises/simple-linked-list/README.md +65 -0
  200. data/tracks/elixir/exercises/space-age/README.md +61 -0
  201. data/tracks/elixir/exercises/strain/README.md +80 -0
  202. data/tracks/elixir/exercises/sublist/README.md +58 -0
  203. data/tracks/elixir/exercises/sum-of-multiples/README.md +55 -0
  204. data/tracks/elixir/exercises/tournament/README.md +110 -0
  205. data/tracks/elixir/exercises/triangle/README.md +63 -0
  206. data/tracks/elixir/exercises/twelve-days/README.md +72 -0
  207. data/tracks/elixir/exercises/word-count/README.md +56 -0
  208. data/tracks/elixir/exercises/wordy/README.md +100 -0
  209. data/tracks/elixir/exercises/zipper/README.md +68 -0
  210. data/tracks/fsharp/config/exercise_readme.go.tmpl +16 -0
  211. data/tracks/fsharp/exercises/accumulate/README.md +40 -0
  212. data/tracks/fsharp/exercises/acronym/README.md +15 -0
  213. data/tracks/fsharp/exercises/all-your-base/README.md +35 -0
  214. data/tracks/fsharp/exercises/allergies/README.md +37 -0
  215. data/tracks/fsharp/exercises/alphametics/README.md +41 -0
  216. data/tracks/fsharp/exercises/anagram/README.md +13 -0
  217. data/tracks/fsharp/exercises/atbash-cipher/README.md +34 -0
  218. data/tracks/fsharp/exercises/bank-account/README.md +30 -0
  219. data/tracks/fsharp/exercises/beer-song/README.md +331 -0
  220. data/tracks/fsharp/exercises/binary-search-tree/README.md +60 -0
  221. data/tracks/fsharp/exercises/binary-search/README.md +41 -0
  222. data/tracks/fsharp/exercises/bob/README.md +18 -0
  223. data/tracks/fsharp/exercises/book-store/README.md +74 -0
  224. data/tracks/fsharp/exercises/bowling/README.md +53 -0
  225. data/tracks/fsharp/exercises/bracket-push/README.md +10 -0
  226. data/tracks/fsharp/exercises/change/README.md +23 -0
  227. data/tracks/fsharp/exercises/circular-buffer/README.md +50 -0
  228. data/tracks/fsharp/exercises/clock/README.md +13 -0
  229. data/tracks/fsharp/exercises/connect/README.md +34 -0
  230. data/tracks/fsharp/exercises/crypto-square/README.md +74 -0
  231. data/tracks/fsharp/exercises/custom-set/README.md +11 -0
  232. data/tracks/fsharp/exercises/diamond/README.md +62 -0
  233. data/tracks/fsharp/exercises/difference-of-squares/README.md +25 -0
  234. data/tracks/fsharp/exercises/diffie-hellman/README.md +49 -0
  235. data/tracks/fsharp/exercises/dominoes/README.md +18 -0
  236. data/tracks/fsharp/exercises/dot-dsl/README.md +28 -0
  237. data/tracks/fsharp/exercises/error-handling/README.md +13 -0
  238. data/tracks/fsharp/exercises/etl/README.md +51 -0
  239. data/tracks/fsharp/exercises/food-chain/README.md +74 -0
  240. data/tracks/fsharp/exercises/forth/README.md +29 -0
  241. data/tracks/fsharp/exercises/gigasecond/README.md +15 -0
  242. data/tracks/fsharp/exercises/go-counting/README.md +37 -0
  243. data/tracks/fsharp/exercises/grade-school/README.md +47 -0
  244. data/tracks/fsharp/exercises/grains/README.md +39 -0
  245. data/tracks/fsharp/exercises/grep/README.md +71 -0
  246. data/tracks/fsharp/exercises/hamming/README.md +42 -0
  247. data/tracks/fsharp/exercises/hangman/README.md +21 -0
  248. data/tracks/fsharp/exercises/hello-world/README.md +21 -0
  249. data/tracks/fsharp/exercises/house/README.md +117 -0
  250. data/tracks/fsharp/exercises/isogram/README.md +19 -0
  251. data/tracks/fsharp/exercises/kindergarten-garden/README.md +66 -0
  252. data/tracks/fsharp/exercises/largest-series-product/README.md +20 -0
  253. data/tracks/fsharp/exercises/leap/README.md +33 -0
  254. data/tracks/fsharp/exercises/ledger/README.md +18 -0
  255. data/tracks/fsharp/exercises/lens-person/README.md +15 -0
  256. data/tracks/fsharp/exercises/linked-list/README.md +50 -0
  257. data/tracks/fsharp/exercises/list-ops/README.md +10 -0
  258. data/tracks/fsharp/exercises/luhn/README.md +71 -0
  259. data/tracks/fsharp/exercises/markdown/README.md +18 -0
  260. data/tracks/fsharp/exercises/matrix/README.md +45 -0
  261. data/tracks/fsharp/exercises/meetup/README.md +30 -0
  262. data/tracks/fsharp/exercises/minesweeper/README.md +30 -0
  263. data/tracks/fsharp/exercises/nth-prime/README.md +21 -0
  264. data/tracks/fsharp/exercises/nucleotide-count/README.md +33 -0
  265. data/tracks/fsharp/exercises/ocr-numbers/README.md +85 -0
  266. data/tracks/fsharp/exercises/palindrome-products/README.md +44 -0
  267. data/tracks/fsharp/exercises/pangram/README.md +15 -0
  268. data/tracks/fsharp/exercises/parallel-letter-frequency/README.md +15 -0
  269. data/tracks/fsharp/exercises/pascals-triangle/README.md +21 -0
  270. data/tracks/fsharp/exercises/perfect-numbers/README.md +24 -0
  271. data/tracks/fsharp/exercises/phone-number/README.md +34 -0
  272. data/tracks/fsharp/exercises/pig-latin/README.md +24 -0
  273. data/tracks/fsharp/exercises/poker/README.md +15 -0
  274. data/tracks/fsharp/exercises/pov/README.md +46 -0
  275. data/tracks/fsharp/exercises/prime-factors/README.md +36 -0
  276. data/tracks/fsharp/exercises/protein-translation/README.md +49 -0
  277. data/tracks/fsharp/exercises/proverb/README.md +22 -0
  278. data/tracks/fsharp/exercises/pythagorean-triplet/README.md +24 -0
  279. data/tracks/fsharp/exercises/queen-attack/README.md +33 -0
  280. data/tracks/fsharp/exercises/rail-fence-cipher/README.md +60 -0
  281. data/tracks/fsharp/exercises/raindrops/README.md +27 -0
  282. data/tracks/fsharp/exercises/react/README.md +19 -0
  283. data/tracks/fsharp/exercises/rectangles/README.md +67 -0
  284. data/tracks/fsharp/exercises/rna-transcription/README.md +29 -0
  285. data/tracks/fsharp/exercises/robot-name/README.md +22 -0
  286. data/tracks/fsharp/exercises/robot-simulator/README.md +34 -0
  287. data/tracks/fsharp/exercises/roman-numerals/README.md +49 -0
  288. data/tracks/fsharp/exercises/run-length-encoding/README.md +30 -0
  289. data/tracks/fsharp/exercises/saddle-points/README.md +33 -0
  290. data/tracks/fsharp/exercises/say/README.md +69 -0
  291. data/tracks/fsharp/exercises/scale-generator/README.md +60 -0
  292. data/tracks/fsharp/exercises/scrabble-score/README.md +44 -0
  293. data/tracks/fsharp/exercises/secret-handshake/README.md +35 -0
  294. data/tracks/fsharp/exercises/series/README.md +27 -0
  295. data/tracks/fsharp/exercises/sgf-parsing/README.md +68 -0
  296. data/tracks/fsharp/exercises/sieve/README.md +34 -0
  297. data/tracks/fsharp/exercises/simple-cipher/README.md +90 -0
  298. data/tracks/fsharp/exercises/simple-linked-list/README.md +28 -0
  299. data/tracks/fsharp/exercises/space-age/README.md +28 -0
  300. data/tracks/fsharp/exercises/strain/README.md +40 -0
  301. data/tracks/fsharp/exercises/sublist/README.md +21 -0
  302. data/tracks/fsharp/exercises/sum-of-multiples/README.md +18 -0
  303. data/tracks/fsharp/exercises/tournament/README.md +68 -0
  304. data/tracks/fsharp/exercises/transpose/README.md +65 -0
  305. data/tracks/fsharp/exercises/tree-building/README.md +30 -0
  306. data/tracks/fsharp/exercises/triangle/README.md +26 -0
  307. data/tracks/fsharp/exercises/twelve-days/README.md +39 -0
  308. data/tracks/fsharp/exercises/two-bucket/README.md +36 -0
  309. data/tracks/fsharp/exercises/variable-length-quantity/README.md +39 -0
  310. data/tracks/fsharp/exercises/word-count/README.md +19 -0
  311. data/tracks/fsharp/exercises/word-search/README.md +30 -0
  312. data/tracks/fsharp/exercises/wordy/README.md +68 -0
  313. data/tracks/fsharp/exercises/zebra-puzzle/README.md +32 -0
  314. data/tracks/fsharp/exercises/zipper/README.md +31 -0
  315. data/tracks/haskell/README.md +2 -2
  316. data/tracks/javascript/config.json +232 -4
  317. data/tracks/kotlin/config.json +8 -1
  318. data/tracks/kotlin/exercises/rotational-cipher/build.gradle +28 -0
  319. data/tracks/kotlin/exercises/rotational-cipher/src/example/kotlin/RotationalCipher.kt +18 -0
  320. data/tracks/kotlin/exercises/rotational-cipher/src/main/kotlin/.keep +0 -0
  321. data/tracks/kotlin/exercises/rotational-cipher/src/test/kotlin/RotationalCipherTest.kt +81 -0
  322. data/tracks/kotlin/exercises/settings.gradle +1 -0
  323. data/tracks/powershell/config/exercise_readme.go.tmpl +16 -0
  324. data/tracks/powershell/exercises/hamming/README.md +42 -0
  325. data/tracks/powershell/exercises/hello-world/README.md +21 -0
  326. data/tracks/purescript/README.md +4 -4
  327. data/tracks/scala/config.json +266 -6
  328. data/tracks/scala/config/exercise_readme.go.tmpl +16 -0
  329. data/tracks/scala/exercises/accumulate/README.md +46 -0
  330. data/tracks/scala/exercises/acronym/README.md +26 -0
  331. data/tracks/scala/exercises/all-your-base/README.md +46 -0
  332. data/tracks/scala/exercises/allergies/README.md +48 -0
  333. data/tracks/scala/exercises/alphametics/README.md +46 -0
  334. data/tracks/scala/exercises/anagram/README.md +24 -0
  335. data/tracks/scala/exercises/atbash-cipher/README.md +45 -0
  336. data/tracks/scala/exercises/bank-account/README.md +54 -0
  337. data/tracks/scala/exercises/beer-song/README.md +338 -0
  338. data/tracks/scala/exercises/binary-search-tree/README.md +71 -0
  339. data/tracks/scala/exercises/binary-search/README.md +52 -0
  340. data/tracks/scala/exercises/binary/README.md +46 -0
  341. data/tracks/scala/exercises/bob/README.md +29 -0
  342. data/tracks/scala/exercises/book-store/README.md +85 -0
  343. data/tracks/scala/exercises/bowling/README.md +64 -0
  344. data/tracks/scala/exercises/bracket-push/README.md +21 -0
  345. data/tracks/scala/exercises/change/README.md +34 -0
  346. data/tracks/scala/exercises/clock/README.md +24 -0
  347. data/tracks/scala/exercises/connect/README.md +53 -0
  348. data/tracks/scala/exercises/crypto-square/README.md +85 -0
  349. data/tracks/scala/exercises/custom-set/README.md +22 -0
  350. data/tracks/scala/exercises/difference-of-squares/README.md +30 -0
  351. data/tracks/scala/exercises/dominoes/README.md +29 -0
  352. data/tracks/scala/exercises/etl/README.md +62 -0
  353. data/tracks/scala/exercises/food-chain/README.md +81 -0
  354. data/tracks/scala/exercises/forth/README.md +40 -0
  355. data/tracks/scala/exercises/gigasecond/README.md +26 -0
  356. data/tracks/scala/exercises/grade-school/README.md +53 -0
  357. data/tracks/scala/exercises/grains/README.md +45 -0
  358. data/tracks/scala/exercises/hamming/README.md +112 -0
  359. data/tracks/scala/exercises/hello-world/README.md +38 -0
  360. data/tracks/scala/exercises/hexadecimal/README.md +25 -0
  361. data/tracks/scala/exercises/house/README.md +124 -0
  362. data/tracks/scala/exercises/isogram/README.md +30 -0
  363. data/tracks/scala/exercises/kindergarten-garden/README.md +77 -0
  364. data/tracks/scala/exercises/largest-series-product/README.md +31 -0
  365. data/tracks/scala/exercises/leap/README.md +50 -0
  366. data/tracks/scala/exercises/lens-person/README.md +11 -7
  367. data/tracks/scala/exercises/linked-list/README.md +45 -0
  368. data/tracks/scala/exercises/luhn/README.md +82 -0
  369. data/tracks/scala/exercises/matrix/README.md +56 -0
  370. data/tracks/scala/exercises/meetup/README.md +41 -0
  371. data/tracks/scala/exercises/minesweeper/README.md +41 -0
  372. data/tracks/scala/exercises/nth-prime/README.md +26 -0
  373. data/tracks/scala/exercises/nucleotide-count/README.md +107 -0
  374. data/tracks/scala/exercises/ocr-numbers/README.md +96 -0
  375. data/tracks/scala/exercises/octal/README.md +60 -0
  376. data/tracks/scala/exercises/palindrome-products/README.md +51 -0
  377. data/tracks/scala/exercises/pangram/README.md +26 -0
  378. data/tracks/scala/exercises/parallel-letter-frequency/README.md +50 -0
  379. data/tracks/scala/exercises/pascals-triangle/README.md +32 -0
  380. data/tracks/scala/exercises/perfect-numbers/README.md +35 -0
  381. data/tracks/scala/exercises/phone-number/README.md +56 -0
  382. data/tracks/scala/exercises/pig-latin/README.md +35 -0
  383. data/tracks/scala/exercises/prime-factors/README.md +47 -0
  384. data/tracks/scala/exercises/protein-translation/README.md +60 -0
  385. data/tracks/scala/exercises/pythagorean-triplet/README.md +35 -0
  386. data/tracks/scala/exercises/queen-attack/README.md +44 -0
  387. data/tracks/scala/exercises/rail-fence-cipher/README.md +71 -0
  388. data/tracks/scala/exercises/raindrops/README.md +35 -0
  389. data/tracks/scala/exercises/rna-transcription/README.md +36 -0
  390. data/tracks/scala/exercises/robot-name/README.md +40 -0
  391. data/tracks/scala/exercises/robot-simulator/README.md +45 -0
  392. data/tracks/scala/exercises/roman-numerals/README.md +72 -0
  393. data/tracks/scala/exercises/run-length-encoding/README.md +41 -0
  394. data/tracks/scala/exercises/saddle-points/README.md +44 -0
  395. data/tracks/scala/exercises/say/README.md +80 -0
  396. data/tracks/scala/exercises/scrabble-score/README.md +55 -0
  397. data/tracks/scala/exercises/secret-handshake/README.md +46 -0
  398. data/tracks/scala/exercises/series/README.md +38 -0
  399. data/tracks/scala/exercises/sgf-parsing/README.md +79 -0
  400. data/tracks/scala/exercises/sieve/README.md +45 -0
  401. data/tracks/scala/exercises/simple-cipher/README.md +101 -0
  402. data/tracks/scala/exercises/simple-linked-list/README.md +39 -0
  403. data/tracks/scala/exercises/space-age/README.md +35 -0
  404. data/tracks/scala/exercises/spiral-matrix/README.md +41 -0
  405. data/tracks/scala/exercises/strain/README.md +51 -0
  406. data/tracks/scala/exercises/sublist/README.md +32 -0
  407. data/tracks/scala/exercises/sum-of-multiples/README.md +29 -0
  408. data/tracks/scala/exercises/triangle/README.md +37 -0
  409. data/tracks/scala/exercises/trinary/README.md +39 -0
  410. data/tracks/scala/exercises/variable-length-quantity/README.md +54 -0
  411. data/tracks/scala/exercises/word-count/README.md +30 -0
  412. data/tracks/scala/exercises/wordy/README.md +74 -0
  413. data/tracks/scala/exercises/zebra-puzzle/README.md +43 -0
  414. data/tracks/scala/exercises/zipper/README.md +42 -0
  415. metadata +401 -1
@@ -0,0 +1,71 @@
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
+ The Scala exercises assume an SBT project scheme. The exercise solution source
57
+ should be placed within the exercise directory/src/main/scala. The exercise
58
+ unit tests can be found within the exercise directory/src/test/scala.
59
+
60
+ To run the tests simply run the command `sbt test` in the exercise directory.
61
+
62
+ For more detailed info about the Scala track see the [help
63
+ page](http://exercism.io/languages/scala).
64
+
65
+
66
+ ## Source
67
+
68
+ Josh Cheek [https://twitter.com/josh_cheek](https://twitter.com/josh_cheek)
69
+
70
+ ## Submitting Incomplete Solutions
71
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,52 @@
1
+ # Binary Search
2
+
3
+ Implement a binary search algorithm.
4
+
5
+ Searching a sorted collection is a common task. A dictionary is a sorted
6
+ list of word definitions. Given a word, one can find its definition. A
7
+ telephone book is a sorted list of people's names, addresses, and
8
+ telephone numbers. Knowing someone's name allows one to quickly find
9
+ their telephone number and address.
10
+
11
+ If the list to be searched contains more than a few items (a dozen, say)
12
+ a binary search will require far fewer comparisons than a linear search,
13
+ but it imposes the requirement that the list be sorted.
14
+
15
+ In computer science, a binary search or half-interval search algorithm
16
+ finds the position of a specified input value (the search "key") within
17
+ an array sorted by key value.
18
+
19
+ In each step, the algorithm compares the search key value with the key
20
+ value of the middle element of the array.
21
+
22
+ If the keys match, then a matching element has been found and its index,
23
+ or position, is returned.
24
+
25
+ Otherwise, if the search key is less than the middle element's key, then
26
+ the algorithm repeats its action on the sub-array to the left of the
27
+ middle element or, if the search key is greater, on the sub-array to the
28
+ right.
29
+
30
+ If the remaining array to be searched is empty, then the key cannot be
31
+ found in the array and a special "not found" indication is returned.
32
+
33
+ A binary search halves the number of items to check with each iteration,
34
+ so locating an item (or determining its absence) takes logarithmic time.
35
+ A binary search is a dichotomic divide and conquer search algorithm.
36
+
37
+ The Scala exercises assume an SBT project scheme. The exercise solution source
38
+ should be placed within the exercise directory/src/main/scala. The exercise
39
+ unit tests can be found within the exercise directory/src/test/scala.
40
+
41
+ To run the tests simply run the command `sbt test` in the exercise directory.
42
+
43
+ For more detailed info about the Scala track see the [help
44
+ page](http://exercism.io/languages/scala).
45
+
46
+
47
+ ## Source
48
+
49
+ Wikipedia [http://en.wikipedia.org/wiki/Binary_search_algorithm](http://en.wikipedia.org/wiki/Binary_search_algorithm)
50
+
51
+ ## Submitting Incomplete Solutions
52
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,46 @@
1
+ # Binary
2
+
3
+ Convert a binary number, represented as a string (e.g. '101010'), to its decimal equivalent using first principles.
4
+
5
+ Implement binary to decimal conversion. Given a binary input
6
+ string, your program should produce a decimal output. The
7
+ program should handle invalid inputs.
8
+
9
+ ## Note
10
+ - Implement the conversion yourself.
11
+ Do not use something else to perform the conversion for you.
12
+
13
+ ## About Binary (Base-2)
14
+ Decimal is a base-10 system.
15
+
16
+ A number 23 in base 10 notation can be understood
17
+ as a linear combination of powers of 10:
18
+
19
+ - The rightmost digit gets multiplied by 10^0 = 1
20
+ - The next number gets multiplied by 10^1 = 10
21
+ - ...
22
+ - The *n*th number gets multiplied by 10^*(n-1)*.
23
+ - All these values are summed.
24
+
25
+ So: `23 => 2*10^1 + 3*10^0 => 2*10 + 3*1 = 23 base 10`
26
+
27
+ Binary is similar, but uses powers of 2 rather than powers of 10.
28
+
29
+ So: `101 => 1*2^2 + 0*2^1 + 1*2^0 => 1*4 + 0*2 + 1*1 => 4 + 1 => 5 base 10`.
30
+
31
+ The Scala exercises assume an SBT project scheme. The exercise solution source
32
+ should be placed within the exercise directory/src/main/scala. The exercise
33
+ unit tests can be found within the exercise directory/src/test/scala.
34
+
35
+ To run the tests simply run the command `sbt test` in the exercise directory.
36
+
37
+ For more detailed info about the Scala track see the [help
38
+ page](http://exercism.io/languages/scala).
39
+
40
+
41
+ ## Source
42
+
43
+ All of Computer Science [http://www.wolframalpha.com/input/?i=binary&a=*C.binary-_*MathWorld-](http://www.wolframalpha.com/input/?i=binary&a=*C.binary-_*MathWorld-)
44
+
45
+ ## Submitting Incomplete Solutions
46
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,29 @@
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
+ The Scala exercises assume an SBT project scheme. The exercise solution source
15
+ should be placed within the exercise directory/src/main/scala. The exercise
16
+ unit tests can be found within the exercise directory/src/test/scala.
17
+
18
+ To run the tests simply run the command `sbt test` in the exercise directory.
19
+
20
+ For more detailed info about the Scala track see the [help
21
+ page](http://exercism.io/languages/scala).
22
+
23
+
24
+ ## Source
25
+
26
+ 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)
27
+
28
+ ## Submitting Incomplete Solutions
29
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,85 @@
1
+ # Book Store
2
+
3
+ To try and encourage more sales of different books from a popular 5 book
4
+ series, a bookshop has decided to offer discounts on multiple book purchases.
5
+
6
+ One copy of any of the five books costs $8.
7
+
8
+ If, however, you buy two different books, you get a 5%
9
+ discount on those two books.
10
+
11
+ If you buy 3 different books, you get a 10% discount.
12
+
13
+ If you buy 4 different books, you get a 20% discount.
14
+
15
+ If you buy all 5, you get a 25% discount.
16
+
17
+ Note: that if you buy four books, of which 3 are
18
+ different titles, you get a 10% discount on the 3 that
19
+ form part of a set, but the fourth book still costs $8.
20
+
21
+ Your mission is to write a piece of code to calculate the
22
+ price of any conceivable shopping basket (containing only
23
+ books of the same series), giving as big a discount as
24
+ possible.
25
+
26
+ For example, how much does this basket of books cost?
27
+
28
+ - 2 copies of the first book
29
+ - 2 copies of the second book
30
+ - 2 copies of the third book
31
+ - 1 copy of the fourth book
32
+ - 1 copy of the fifth book
33
+
34
+ One way of grouping these 8 books is:
35
+
36
+ - 1 group of 5 --> 25% discount (1st,2nd,3rd,4th,5th)
37
+ - +1 group of 3 --> 10% discount (1st,2nd,3rd)
38
+
39
+ This would give a total of:
40
+
41
+ - 5 books at a 25% discount
42
+ - +3 books at a 10% discount
43
+
44
+ Resulting in:
45
+
46
+ - 5 x (8 - 2.00) == 5 x 6.00 == $30.00
47
+ - +3 x (8 - 0.80) == 3 x 7.20 == $21.60
48
+
49
+ For a total of $51.60
50
+
51
+ However, a different way to group these 8 books is:
52
+
53
+ - 1 group of 4 books --> 20% discount (1st,2nd,3rd,4th)
54
+ - +1 group of 4 books --> 20% discount (1st,2nd,3rd,5th)
55
+
56
+ This would give a total of:
57
+
58
+ - 4 books at a 20% discount
59
+ - +4 books at a 20% discount
60
+
61
+ Resulting in:
62
+
63
+ - 4 x (8 - 1.60) == 4 x 6.40 == $25.60
64
+ - +4 x (8 - 1.60) == 4 x 6.40 == $25.60
65
+
66
+ For a total of $51.20
67
+
68
+ And $51.20 is the price with the biggest discount.
69
+
70
+ The Scala exercises assume an SBT project scheme. The exercise solution source
71
+ should be placed within the exercise directory/src/main/scala. The exercise
72
+ unit tests can be found within the exercise directory/src/test/scala.
73
+
74
+ To run the tests simply run the command `sbt test` in the exercise directory.
75
+
76
+ For more detailed info about the Scala track see the [help
77
+ page](http://exercism.io/languages/scala).
78
+
79
+
80
+ ## Source
81
+
82
+ Inspired by the harry potter kata from Cyber-Dojo. [http://cyber-dojo.org](http://cyber-dojo.org)
83
+
84
+ ## Submitting Incomplete Solutions
85
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,64 @@
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
+ The Scala exercises assume an SBT project scheme. The exercise solution source
50
+ should be placed within the exercise directory/src/main/scala. The exercise
51
+ unit tests can be found within the exercise directory/src/test/scala.
52
+
53
+ To run the tests simply run the command `sbt test` in the exercise directory.
54
+
55
+ For more detailed info about the Scala track see the [help
56
+ page](http://exercism.io/languages/scala).
57
+
58
+
59
+ ## Source
60
+
61
+ The Bowling Game Kata at but UncleBob [http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata](http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata)
62
+
63
+ ## Submitting Incomplete Solutions
64
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,21 @@
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
+ The Scala exercises assume an SBT project scheme. The exercise solution source
7
+ should be placed within the exercise directory/src/main/scala. The exercise
8
+ unit tests can be found within the exercise directory/src/test/scala.
9
+
10
+ To run the tests simply run the command `sbt test` in the exercise directory.
11
+
12
+ For more detailed info about the Scala track see the [help
13
+ page](http://exercism.io/languages/scala).
14
+
15
+
16
+ ## Source
17
+
18
+ Ginna Baker
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,34 @@
1
+ # Change
2
+
3
+ Correctly determine the fewest number of coins to be given to a customer such
4
+ that the sum of the coins' value would equal the correct amount of change.
5
+
6
+ ## For example
7
+
8
+ - An input of 15 with [1, 5, 10, 25, 100] should return one nickel (5)
9
+ and one dime (10) or [0, 1, 1, 0, 0]
10
+ - An input of 40 with [1, 5, 10, 25, 100] should return one nickel (5)
11
+ and one dime (10) and one quarter (25) or [0, 1, 1, 1, 0]
12
+
13
+ ## Edge cases
14
+
15
+ - Does your algorithm work for any given set of coins?
16
+ - Can you ask for negative change?
17
+ - Can you ask for a change value smaller than the smallest coin value?
18
+
19
+ The Scala exercises assume an SBT project scheme. The exercise solution source
20
+ should be placed within the exercise directory/src/main/scala. The exercise
21
+ unit tests can be found within the exercise directory/src/test/scala.
22
+
23
+ To run the tests simply run the command `sbt test` in the exercise directory.
24
+
25
+ For more detailed info about the Scala track see the [help
26
+ page](http://exercism.io/languages/scala).
27
+
28
+
29
+ ## Source
30
+
31
+ Software Craftsmanship - Kata-logue [http://craftsmanship.sv.cmu.edu/exercises/coin-change-kata](http://craftsmanship.sv.cmu.edu/exercises/coin-change-kata)
32
+
33
+ ## Submitting Incomplete Solutions
34
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,24 @@
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
+ The Scala exercises assume an SBT project scheme. The exercise solution source
10
+ should be placed within the exercise directory/src/main/scala. The exercise
11
+ unit tests can be found within the exercise directory/src/test/scala.
12
+
13
+ To run the tests simply run the command `sbt test` in the exercise directory.
14
+
15
+ For more detailed info about the Scala track see the [help
16
+ page](http://exercism.io/languages/scala).
17
+
18
+
19
+ ## Source
20
+
21
+ Pairing session with Erin Drummond [https://twitter.com/ebdrummond](https://twitter.com/ebdrummond)
22
+
23
+ ## Submitting Incomplete Solutions
24
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,53 @@
1
+ # Connect
2
+
3
+ Compute the result for a game of Hex / Polygon.
4
+
5
+ The abstract boardgame known as
6
+ [Hex](https://en.wikipedia.org/wiki/Hex_%28board_game%29) / Polygon /
7
+ CON-TAC-TIX is quite simple in rules, though complex in practice. Two players
8
+ place stones on a rhombus with hexagonal fields. The player to connect his/her
9
+ stones to the opposite side first wins. The four sides of the rhombus are
10
+ divided between the two players (i.e. one player gets assigned a side and the
11
+ side directly opposite it and the other player gets assigned the two other
12
+ sides).
13
+
14
+ Your goal is to build a program that given a simple representation of a board
15
+ computes the winner (or lack thereof). Note that all games need not be "fair".
16
+ (For example, players may have mismatched piece counts.)
17
+
18
+ The boards look like this (with spaces added for readability, which won't be in
19
+ the representation passed to your code):
20
+
21
+ ```
22
+ . O . X .
23
+ . X X O .
24
+ O O O X .
25
+ . X O X O
26
+ X O O O X
27
+ ```
28
+
29
+ "Player `O`" plays from top to bottom, "Player `X`" plays from left to right. In
30
+ the above example `O` has made a connection from left to right but nobody has
31
+ won since `O` didn't connect top and bottom.
32
+
33
+ ## Hints
34
+ You may notice that some test cases seem unfair. However, they may be legitimately so. For example, it is common to give young or beginner players an extra n pieces at fixed positions on the board, so mismatched piece counts can occur in an otherwise fully legal game.
35
+
36
+ In any case, this exercise cares only about determining a winner for a game that can have a variety of parameters, like board length and extra pieces. It is not interested in any other state of the game, such as who moved where, when, or whose turn it is.
37
+
38
+ So don't be puzzled by those seemingly unfair games.
39
+
40
+
41
+ The Scala exercises assume an SBT project scheme. The exercise solution source
42
+ should be placed within the exercise directory/src/main/scala. The exercise
43
+ unit tests can be found within the exercise directory/src/test/scala.
44
+
45
+ To run the tests simply run the command `sbt test` in the exercise directory.
46
+
47
+ For more detailed info about the Scala track see the [help
48
+ page](http://exercism.io/languages/scala).
49
+
50
+
51
+
52
+ ## Submitting Incomplete Solutions
53
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.