trackler 2.2.1.33 → 2.2.1.34

Sign up to get free protection for your applications and to get access to all the features.
Files changed (267) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/README.md +1 -1
  4. data/problem-specifications/exercises/palindrome-products/description.md +9 -3
  5. data/tracks/c/exercises/hamming/src/example.c +9 -8
  6. data/tracks/c/exercises/hamming/src/example.h +1 -1
  7. data/tracks/c/exercises/hamming/test/test_hamming.c +31 -7
  8. data/tracks/clojure/config.json +10 -0
  9. data/tracks/clojure/exercises/collatz-conjecture/README.md +34 -0
  10. data/tracks/clojure/exercises/collatz-conjecture/project.clj +4 -0
  11. data/tracks/clojure/exercises/collatz-conjecture/src/collatz_conjecture.clj +3 -0
  12. data/tracks/clojure/exercises/collatz-conjecture/src/example.clj +13 -0
  13. data/tracks/clojure/exercises/collatz-conjecture/test/collatz_conjecture_test.clj +29 -0
  14. data/tracks/coldfusion/.gitignore +1 -0
  15. data/tracks/coldfusion/.travis.yml +16 -4
  16. data/tracks/coldfusion/CONTRIBUTING.md +10 -0
  17. data/tracks/coldfusion/README.md +85 -6
  18. data/tracks/coldfusion/config.json +195 -10
  19. data/tracks/coldfusion/config/maintainers.json +8 -1
  20. data/tracks/coldfusion/docs/ABOUT.md +8 -0
  21. data/tracks/coldfusion/docs/EXERCISE_README_INSERT.md +15 -0
  22. data/tracks/coldfusion/docs/INSTALLATION.md +35 -0
  23. data/tracks/coldfusion/docs/LEARNING.md +37 -0
  24. data/tracks/coldfusion/docs/RESOURCES.md +29 -0
  25. data/tracks/coldfusion/docs/SNIPPET.txt +8 -0
  26. data/tracks/coldfusion/docs/TESTS.md +19 -0
  27. data/tracks/coldfusion/exercises/acronym/.meta/HINTS.md +0 -0
  28. data/tracks/coldfusion/exercises/acronym/Acronym.cfc +13 -0
  29. data/tracks/coldfusion/exercises/acronym/AcronymTest.cfc +43 -0
  30. data/tracks/coldfusion/exercises/acronym/Solution.cfc +22 -0
  31. data/tracks/coldfusion/exercises/acronym/SolutionTest.cfc +7 -0
  32. data/tracks/coldfusion/exercises/acronym/TestRunner.cfc +103 -0
  33. data/tracks/coldfusion/exercises/acronym/box.json +8 -0
  34. data/tracks/coldfusion/exercises/acronym/index.cfm +37 -0
  35. data/tracks/coldfusion/exercises/atbash-cipher/.meta/HINTS.md +0 -0
  36. data/tracks/coldfusion/exercises/atbash-cipher/AtbashCipher.cfc +14 -0
  37. data/tracks/coldfusion/exercises/atbash-cipher/AtbashCipherTest.cfc +71 -0
  38. data/tracks/coldfusion/exercises/atbash-cipher/Solution.cfc +56 -0
  39. data/tracks/coldfusion/exercises/atbash-cipher/SolutionTest.cfc +7 -0
  40. data/tracks/coldfusion/exercises/atbash-cipher/TestRunner.cfc +103 -0
  41. data/tracks/coldfusion/exercises/atbash-cipher/box.json +8 -0
  42. data/tracks/coldfusion/exercises/atbash-cipher/index.cfm +37 -0
  43. data/tracks/coldfusion/exercises/diamond/.meta/HINTS.md +0 -0
  44. data/tracks/coldfusion/exercises/diamond/Diamond.cfc +13 -0
  45. data/tracks/coldfusion/exercises/diamond/DiamondTest.cfc +35 -0
  46. data/tracks/coldfusion/exercises/diamond/Solution.cfc +35 -0
  47. data/tracks/coldfusion/exercises/diamond/SolutionTest.cfc +7 -0
  48. data/tracks/coldfusion/exercises/diamond/TestRunner.cfc +103 -0
  49. data/tracks/coldfusion/exercises/diamond/box.json +8 -0
  50. data/tracks/coldfusion/exercises/diamond/index.cfm +37 -0
  51. data/tracks/coldfusion/exercises/difference-of-squares/.meta/HINTS.md +0 -0
  52. data/tracks/coldfusion/exercises/difference-of-squares/DifferenceOfSquares.cfc +18 -0
  53. data/tracks/coldfusion/exercises/difference-of-squares/DifferenceOfSquaresTest.cfc +63 -0
  54. data/tracks/coldfusion/exercises/difference-of-squares/Solution.cfc +28 -0
  55. data/tracks/coldfusion/exercises/difference-of-squares/SolutionTest.cfc +7 -0
  56. data/tracks/coldfusion/exercises/difference-of-squares/TestRunner.cfc +103 -0
  57. data/tracks/coldfusion/exercises/difference-of-squares/box.json +8 -0
  58. data/tracks/coldfusion/exercises/difference-of-squares/index.cfm +37 -0
  59. data/tracks/coldfusion/exercises/flatten-array/.meta/HINTS.md +0 -0
  60. data/tracks/coldfusion/exercises/flatten-array/FlattenArray.cfc +13 -0
  61. data/tracks/coldfusion/exercises/flatten-array/FlattenArrayTest.cfc +42 -0
  62. data/tracks/coldfusion/exercises/flatten-array/Solution.cfc +26 -0
  63. data/tracks/coldfusion/exercises/flatten-array/SolutionTest.cfc +7 -0
  64. data/tracks/coldfusion/exercises/flatten-array/TestRunner.cfc +103 -0
  65. data/tracks/coldfusion/exercises/flatten-array/box.json +8 -0
  66. data/tracks/coldfusion/exercises/flatten-array/index.cfm +37 -0
  67. data/tracks/coldfusion/exercises/gigasecond/.meta/HINTS.md +0 -0
  68. data/tracks/coldfusion/exercises/gigasecond/Gigasecond.cfc +13 -0
  69. data/tracks/coldfusion/exercises/gigasecond/GigasecondTest.cfc +39 -0
  70. data/tracks/coldfusion/exercises/gigasecond/Solution.cfc +16 -0
  71. data/tracks/coldfusion/exercises/gigasecond/SolutionTest.cfc +7 -0
  72. data/tracks/coldfusion/exercises/gigasecond/TestRunner.cfc +103 -0
  73. data/tracks/coldfusion/exercises/gigasecond/box.json +8 -0
  74. data/tracks/coldfusion/exercises/gigasecond/index.cfm +37 -0
  75. data/tracks/coldfusion/exercises/grains/.meta/HINTS.md +0 -0
  76. data/tracks/coldfusion/exercises/grains/Grains.cfc +14 -0
  77. data/tracks/coldfusion/exercises/grains/GrainsTest.cfc +63 -0
  78. data/tracks/coldfusion/exercises/grains/Solution.cfc +22 -0
  79. data/tracks/coldfusion/exercises/grains/SolutionTest.cfc +7 -0
  80. data/tracks/coldfusion/exercises/grains/TestRunner.cfc +103 -0
  81. data/tracks/coldfusion/exercises/grains/box.json +8 -0
  82. data/tracks/coldfusion/exercises/grains/index.cfm +37 -0
  83. data/tracks/coldfusion/exercises/hamming/.meta/HINTS.md +0 -0
  84. data/tracks/coldfusion/exercises/hamming/Hamming.cfc +13 -0
  85. data/tracks/coldfusion/exercises/hamming/HammingTest.cfc +75 -0
  86. data/tracks/coldfusion/exercises/hamming/Solution.cfc +25 -0
  87. data/tracks/coldfusion/exercises/hamming/SolutionTest.cfc +7 -0
  88. data/tracks/coldfusion/exercises/hamming/TestRunner.cfc +103 -0
  89. data/tracks/coldfusion/exercises/hamming/box.json +8 -0
  90. data/tracks/coldfusion/exercises/hamming/index.cfm +37 -0
  91. data/tracks/coldfusion/exercises/hello-world/HelloWorld.cfc +13 -0
  92. data/tracks/coldfusion/exercises/hello-world/HelloWorldTest.cfc +18 -0
  93. data/tracks/coldfusion/exercises/hello-world/Solution.cfc +13 -0
  94. data/tracks/coldfusion/exercises/hello-world/SolutionTest.cfc +7 -0
  95. data/tracks/coldfusion/exercises/hello-world/TestRunner.cfc +103 -0
  96. data/tracks/coldfusion/exercises/hello-world/box.json +8 -0
  97. data/tracks/coldfusion/exercises/hello-world/index.cfm +37 -0
  98. data/tracks/coldfusion/exercises/isogram/.meta/HINTS.md +0 -0
  99. data/tracks/coldfusion/exercises/isogram/Isogram.cfc +13 -0
  100. data/tracks/coldfusion/exercises/isogram/IsogramTest.cfc +55 -0
  101. data/tracks/coldfusion/exercises/isogram/Solution.cfc +23 -0
  102. data/tracks/coldfusion/exercises/isogram/SolutionTest.cfc +7 -0
  103. data/tracks/coldfusion/exercises/isogram/TestRunner.cfc +103 -0
  104. data/tracks/coldfusion/exercises/isogram/box.json +8 -0
  105. data/tracks/coldfusion/exercises/isogram/index.cfm +37 -0
  106. data/tracks/coldfusion/exercises/largest-series-product/.meta/HINTS.md +0 -0
  107. data/tracks/coldfusion/exercises/largest-series-product/LargestSeriesProduct.cfc +13 -0
  108. data/tracks/coldfusion/exercises/largest-series-product/LargestSeriesProductTest.cfc +75 -0
  109. data/tracks/coldfusion/exercises/largest-series-product/Solution.cfc +41 -0
  110. data/tracks/coldfusion/exercises/largest-series-product/SolutionTest.cfc +7 -0
  111. data/tracks/coldfusion/exercises/largest-series-product/TestRunner.cfc +103 -0
  112. data/tracks/coldfusion/exercises/largest-series-product/box.json +8 -0
  113. data/tracks/coldfusion/exercises/largest-series-product/index.cfm +37 -0
  114. data/tracks/coldfusion/exercises/leap/Leap.cfc +15 -0
  115. data/tracks/coldfusion/exercises/leap/LeapTest.cfc +39 -0
  116. data/tracks/coldfusion/exercises/leap/Solution.cfc +19 -0
  117. data/tracks/coldfusion/exercises/leap/SolutionTest.cfc +7 -0
  118. data/tracks/coldfusion/exercises/leap/TestRunner.cfc +103 -0
  119. data/tracks/coldfusion/exercises/leap/box.json +8 -0
  120. data/tracks/coldfusion/exercises/leap/index.cfm +37 -0
  121. data/tracks/coldfusion/exercises/luhn/.meta/HINTS.md +0 -0
  122. data/tracks/coldfusion/exercises/luhn/Luhn.cfc +13 -0
  123. data/tracks/coldfusion/exercises/luhn/LuhnTest.cfc +67 -0
  124. data/tracks/coldfusion/exercises/luhn/Solution.cfc +38 -0
  125. data/tracks/coldfusion/exercises/luhn/SolutionTest.cfc +7 -0
  126. data/tracks/coldfusion/exercises/luhn/TestRunner.cfc +103 -0
  127. data/tracks/coldfusion/exercises/luhn/box.json +8 -0
  128. data/tracks/coldfusion/exercises/luhn/index.cfm +37 -0
  129. data/tracks/coldfusion/exercises/nth-prime/.meta/HINTS.md +0 -0
  130. data/tracks/coldfusion/exercises/nth-prime/NthPrime.cfc +13 -0
  131. data/tracks/coldfusion/exercises/nth-prime/NthPrimeTest.cfc +35 -0
  132. data/tracks/coldfusion/exercises/nth-prime/Solution.cfc +33 -0
  133. data/tracks/coldfusion/exercises/nth-prime/SolutionTest.cfc +7 -0
  134. data/tracks/coldfusion/exercises/nth-prime/TestRunner.cfc +103 -0
  135. data/tracks/coldfusion/exercises/nth-prime/box.json +8 -0
  136. data/tracks/coldfusion/exercises/nth-prime/index.cfm +37 -0
  137. data/tracks/coldfusion/exercises/pangram/.meta/HINTS.md +0 -0
  138. data/tracks/coldfusion/exercises/pangram/Pangram.cfc +13 -0
  139. data/tracks/coldfusion/exercises/pangram/PangramTest.cfc +55 -0
  140. data/tracks/coldfusion/exercises/pangram/Solution.cfc +21 -0
  141. data/tracks/coldfusion/exercises/pangram/SolutionTest.cfc +7 -0
  142. data/tracks/coldfusion/exercises/pangram/TestRunner.cfc +103 -0
  143. data/tracks/coldfusion/exercises/pangram/box.json +8 -0
  144. data/tracks/coldfusion/exercises/pangram/index.cfm +37 -0
  145. data/tracks/coldfusion/exercises/pig-latin/.meta/HINTS.md +0 -0
  146. data/tracks/coldfusion/exercises/pig-latin/PigLatin.cfc +13 -0
  147. data/tracks/coldfusion/exercises/pig-latin/PigLatinTest.cfc +115 -0
  148. data/tracks/coldfusion/exercises/pig-latin/Solution.cfc +30 -0
  149. data/tracks/coldfusion/exercises/pig-latin/SolutionTest.cfc +7 -0
  150. data/tracks/coldfusion/exercises/pig-latin/TestRunner.cfc +103 -0
  151. data/tracks/coldfusion/exercises/pig-latin/box.json +8 -0
  152. data/tracks/coldfusion/exercises/pig-latin/index.cfm +37 -0
  153. data/tracks/coldfusion/exercises/raindrops/.meta/HINTS.md +0 -0
  154. data/tracks/coldfusion/exercises/raindrops/Raindrops.cfc +13 -0
  155. data/tracks/coldfusion/exercises/raindrops/RaindropsTest.cfc +87 -0
  156. data/tracks/coldfusion/exercises/raindrops/Solution.cfc +33 -0
  157. data/tracks/coldfusion/exercises/raindrops/SolutionTest.cfc +7 -0
  158. data/tracks/coldfusion/exercises/raindrops/TestRunner.cfc +103 -0
  159. data/tracks/coldfusion/exercises/raindrops/box.json +8 -0
  160. data/tracks/coldfusion/exercises/raindrops/index.cfm +37 -0
  161. data/tracks/coldfusion/exercises/rna-transcription/.meta/HINTS.md +0 -0
  162. data/tracks/coldfusion/exercises/rna-transcription/RnaTranscription.cfc +13 -0
  163. data/tracks/coldfusion/exercises/rna-transcription/RnaTranscriptionTest.cfc +47 -0
  164. data/tracks/coldfusion/exercises/rna-transcription/Solution.cfc +35 -0
  165. data/tracks/coldfusion/exercises/rna-transcription/SolutionTest.cfc +7 -0
  166. data/tracks/coldfusion/exercises/rna-transcription/TestRunner.cfc +103 -0
  167. data/tracks/coldfusion/exercises/rna-transcription/box.json +8 -0
  168. data/tracks/coldfusion/exercises/rna-transcription/index.cfm +37 -0
  169. data/tracks/coldfusion/exercises/saddle-points/.meta/HINTS.md +0 -0
  170. data/tracks/coldfusion/exercises/saddle-points/SaddlePoints.cfc +13 -0
  171. data/tracks/coldfusion/exercises/saddle-points/SaddlePointsTest.cfc +35 -0
  172. data/tracks/coldfusion/exercises/saddle-points/Solution.cfc +59 -0
  173. data/tracks/coldfusion/exercises/saddle-points/SolutionTest.cfc +7 -0
  174. data/tracks/coldfusion/exercises/saddle-points/TestRunner.cfc +103 -0
  175. data/tracks/coldfusion/exercises/saddle-points/box.json +8 -0
  176. data/tracks/coldfusion/exercises/saddle-points/index.cfm +37 -0
  177. data/tracks/coldfusion/exercises/scrabble-score/.meta/HINTS.md +0 -0
  178. data/tracks/coldfusion/exercises/scrabble-score/ScrabbleScore.cfc +13 -0
  179. data/tracks/coldfusion/exercises/scrabble-score/ScrabbleScoreTest.cfc +59 -0
  180. data/tracks/coldfusion/exercises/scrabble-score/Solution.cfc +50 -0
  181. data/tracks/coldfusion/exercises/scrabble-score/SolutionTest.cfc +7 -0
  182. data/tracks/coldfusion/exercises/scrabble-score/TestRunner.cfc +103 -0
  183. data/tracks/coldfusion/exercises/scrabble-score/box.json +8 -0
  184. data/tracks/coldfusion/exercises/scrabble-score/index.cfm +37 -0
  185. data/tracks/coldfusion/exercises/secret-handshake/.meta/HINTS.md +0 -0
  186. data/tracks/coldfusion/exercises/secret-handshake/SecretHandshake.cfc +13 -0
  187. data/tracks/coldfusion/exercises/secret-handshake/SecretHandshakeTest.cfc +63 -0
  188. data/tracks/coldfusion/exercises/secret-handshake/Solution.cfc +31 -0
  189. data/tracks/coldfusion/exercises/secret-handshake/SolutionTest.cfc +7 -0
  190. data/tracks/coldfusion/exercises/secret-handshake/TestRunner.cfc +103 -0
  191. data/tracks/coldfusion/exercises/secret-handshake/box.json +8 -0
  192. data/tracks/coldfusion/exercises/secret-handshake/index.cfm +37 -0
  193. data/tracks/coldfusion/exercises/space-age/.meta/HINTS.md +0 -0
  194. data/tracks/coldfusion/exercises/space-age/Solution.cfc +28 -0
  195. data/tracks/coldfusion/exercises/space-age/SolutionTest.cfc +7 -0
  196. data/tracks/coldfusion/exercises/space-age/SpaceAge.cfc +13 -0
  197. data/tracks/coldfusion/exercises/space-age/SpaceAgeTest.cfc +47 -0
  198. data/tracks/coldfusion/exercises/space-age/TestRunner.cfc +103 -0
  199. data/tracks/coldfusion/exercises/space-age/box.json +8 -0
  200. data/tracks/coldfusion/exercises/space-age/index.cfm +37 -0
  201. data/tracks/coldfusion/exercises/sum-of-multiples/.meta/HINTS.md +0 -0
  202. data/tracks/coldfusion/exercises/sum-of-multiples/Solution.cfc +27 -0
  203. data/tracks/coldfusion/exercises/sum-of-multiples/SolutionTest.cfc +7 -0
  204. data/tracks/coldfusion/exercises/sum-of-multiples/SumOfMultiples.cfc +13 -0
  205. data/tracks/coldfusion/exercises/sum-of-multiples/SumOfMultiplesTest.cfc +63 -0
  206. data/tracks/coldfusion/exercises/sum-of-multiples/TestRunner.cfc +103 -0
  207. data/tracks/coldfusion/exercises/sum-of-multiples/box.json +8 -0
  208. data/tracks/coldfusion/exercises/sum-of-multiples/index.cfm +37 -0
  209. data/tracks/coldfusion/exercises/triangle/.meta/HINTS.md +0 -0
  210. data/tracks/coldfusion/exercises/triangle/Solution.cfc +53 -0
  211. data/tracks/coldfusion/exercises/triangle/SolutionTest.cfc +7 -0
  212. data/tracks/coldfusion/exercises/triangle/TestRunner.cfc +103 -0
  213. data/tracks/coldfusion/exercises/triangle/Triangle.cfc +18 -0
  214. data/tracks/coldfusion/exercises/triangle/TriangleTest.cfc +95 -0
  215. data/tracks/coldfusion/exercises/triangle/box.json +8 -0
  216. data/tracks/coldfusion/exercises/triangle/index.cfm +37 -0
  217. data/tracks/coldfusion/tasks/GenerateTests.cfc +179 -0
  218. data/tracks/coldfusion/tasks/ScaffoldExercise.cfc +85 -0
  219. data/tracks/coldfusion/tasks/TestAllSolutions.cfc +24 -0
  220. data/tracks/coldfusion/tasks/exercise_template/.meta/HINTS.md +0 -0
  221. data/tracks/coldfusion/tasks/exercise_template/@@name@@.cfc +13 -0
  222. data/tracks/coldfusion/tasks/exercise_template/@@name@@Test.cfc +15 -0
  223. data/tracks/coldfusion/tasks/exercise_template/Solution.cfc +6 -0
  224. data/tracks/coldfusion/tasks/exercise_template/SolutionTest.cfc +7 -0
  225. data/tracks/coldfusion/tasks/exercise_template/TestRunner.cfc +103 -0
  226. data/tracks/coldfusion/tasks/exercise_template/box.json +8 -0
  227. data/tracks/coldfusion/tasks/exercise_template/index.cfm +37 -0
  228. data/tracks/common-lisp/config.json +12 -0
  229. data/tracks/common-lisp/exercises/collatz-conjecture/README.md +84 -0
  230. data/tracks/common-lisp/exercises/collatz-conjecture/collatz-conjecture-test.lisp +31 -0
  231. data/tracks/common-lisp/exercises/collatz-conjecture/collatz-conjecture.lisp +7 -0
  232. data/tracks/common-lisp/exercises/collatz-conjecture/example.lisp +14 -0
  233. data/tracks/csharp/exercises/clock/Clock.cs +20 -4
  234. data/tracks/csharp/exercises/clock/ClockTest.cs +290 -55
  235. data/tracks/csharp/exercises/clock/Example.cs +11 -8
  236. data/tracks/csharp/generators/Exercises/Clock.cs +75 -0
  237. data/tracks/csharp/generators/Output/FormattingExtensions.cs +0 -1
  238. data/tracks/csharp/generators/Program.cs +2 -1
  239. data/tracks/haskell/config.json +10 -0
  240. data/tracks/haskell/exercises/collatz-conjecture/README.md +87 -0
  241. data/tracks/haskell/exercises/collatz-conjecture/examples/success-standard/package.yaml +16 -0
  242. data/tracks/haskell/exercises/collatz-conjecture/examples/success-standard/src/CollatzConjecture.hs +9 -0
  243. data/tracks/haskell/exercises/collatz-conjecture/package.yaml +20 -0
  244. data/tracks/haskell/exercises/collatz-conjecture/src/CollatzConjecture.hs +4 -0
  245. data/tracks/haskell/exercises/collatz-conjecture/stack.yaml +1 -0
  246. data/tracks/haskell/exercises/collatz-conjecture/test/Tests.hs +52 -0
  247. data/tracks/idris/docs/SNIPPET.txt +10 -0
  248. data/tracks/rust/README.md +83 -2
  249. data/tracks/rust/config.json +24 -0
  250. data/tracks/rust/exercises/perfect-numbers/.gitignore +7 -0
  251. data/tracks/rust/exercises/perfect-numbers/Cargo.toml +5 -0
  252. data/tracks/rust/exercises/perfect-numbers/README.md +56 -0
  253. data/tracks/rust/exercises/perfect-numbers/example.rs +20 -0
  254. data/tracks/rust/exercises/perfect-numbers/src/lib.rs +0 -0
  255. data/tracks/rust/exercises/perfect-numbers/tests/perfect-numbers.rs +33 -0
  256. data/tracks/rust/exercises/poker/.gitignore +7 -0
  257. data/tracks/rust/exercises/poker/.meta/hints.md +8 -0
  258. data/tracks/rust/exercises/poker/Cargo-example.toml +8 -0
  259. data/tracks/rust/exercises/poker/Cargo.toml +6 -0
  260. data/tracks/rust/exercises/poker/README.md +54 -0
  261. data/tracks/rust/exercises/poker/example.rs +341 -0
  262. data/tracks/rust/exercises/poker/src/lib.rs +7 -0
  263. data/tracks/rust/exercises/poker/tests/poker.rs +298 -0
  264. metadata +242 -5
  265. data/tracks/coldfusion/exercises/leap/example.cfc +0 -11
  266. data/tracks/coldfusion/exercises/leap/leap.cfc +0 -5
  267. data/tracks/coldfusion/exercises/leap/leap_tests.cfc +0 -35
@@ -0,0 +1,7 @@
1
+ /// Given a list of poker hands, return a list of those hands which win.
2
+ ///
3
+ /// Note the type signature: this function should return _the same_ reference to
4
+ /// the winning hand(s) as were passed in, not reconstructed strings which happen to be equal.
5
+ pub fn winning_hands<'a>(_: &[&'a str]) -> Option<Vec<&'a str>> {
6
+ unimplemented!()
7
+ }
@@ -0,0 +1,298 @@
1
+ extern crate poker;
2
+ use std::collections::HashSet;
3
+ use poker::winning_hands;
4
+
5
+ fn hs_from<'a>(input: &[&'a str]) -> HashSet<&'a str> {
6
+ let mut hs = HashSet::new();
7
+ for item in input.iter() {
8
+ hs.insert(*item);
9
+ }
10
+ hs
11
+ }
12
+
13
+ /// Test that the expected output is produced from the given input
14
+ /// using the `winning_hands` function.
15
+ ///
16
+ /// Note that the output can be in any order. Here, we use a HashSet to
17
+ /// abstract away the order of outputs.
18
+ fn test<'a, 'b>(input: &[&'a str], expected: &[&'b str]) {
19
+ assert_eq!(
20
+ hs_from(&winning_hands(input).expect(
21
+ "This test should produce Some value",
22
+ )),
23
+ hs_from(expected)
24
+ )
25
+ }
26
+
27
+ #[test]
28
+ fn test_single_hand_always_wins() {
29
+ test(&vec!["4S 5S 7H 8D JC"], &vec!["4S 5S 7H 8D JC"])
30
+ }
31
+
32
+ #[test]
33
+ #[ignore]
34
+ fn test_highest_card_of_all_hands_wins() {
35
+ test(
36
+ &vec!["4D 5S 6S 8D 3C", "2S 4C 7S 9H 10H", "3S 4S 5D 6H JH"],
37
+ &vec!["3S 4S 5D 6H JH"],
38
+ )
39
+ }
40
+
41
+ #[test]
42
+ #[ignore]
43
+ fn test_a_tie_has_multiple_winners() {
44
+ test(
45
+ &vec![
46
+ "4D 5S 6S 8D 3C",
47
+ "2S 4C 7S 9H 10H",
48
+ "3S 4S 5D 6H JH",
49
+ "3H 4H 5C 6C JD",
50
+ ],
51
+ &vec!["3S 4S 5D 6H JH", "3H 4H 5C 6C JD"],
52
+ )
53
+ }
54
+
55
+ #[test]
56
+ #[ignore]
57
+ fn test_high_card_can_be_low_card_in_an_otherwise_tie() {
58
+ // multiple hands with the same high cards, tie compares next highest ranked,
59
+ // down to last card
60
+ test(
61
+ &vec!["3S 5H 6S 8D 7H", "2S 5D 6D 8C 7S"],
62
+ &vec!["3S 5H 6S 8D 7H"],
63
+ )
64
+ }
65
+
66
+ #[test]
67
+ #[ignore]
68
+ fn test_one_pair_beats_high_card() {
69
+ test(
70
+ &vec!["4S 5H 6C 8D KH", "2S 4H 6S 4D JH"],
71
+ &vec!["2S 4H 6S 4D JH"],
72
+ )
73
+ }
74
+
75
+ #[test]
76
+ #[ignore]
77
+ fn test_highest_pair_wins() {
78
+ test(
79
+ &vec!["4S 2H 6S 2D JH", "2S 4H 6C 4D JD"],
80
+ &vec!["2S 4H 6C 4D JD"],
81
+ )
82
+ }
83
+
84
+ #[test]
85
+ #[ignore]
86
+ fn test_two_pairs_beats_one_pair() {
87
+ test(
88
+ &vec!["2S 8H 6S 8D JH", "4S 5H 4C 8C 5C"],
89
+ &vec!["4S 5H 4C 8C 5C"],
90
+ )
91
+ }
92
+
93
+ #[test]
94
+ #[ignore]
95
+ fn test_two_pair_ranks() {
96
+ // both hands have two pairs, highest ranked pair wins
97
+ test(
98
+ &vec!["2S 8H 2D 8D 3H", "4S 5H 4C 8S 5D"],
99
+ &vec!["2S 8H 2D 8D 3H"],
100
+ )
101
+ }
102
+
103
+ #[test]
104
+ #[ignore]
105
+ fn test_two_pairs_second_pair_cascade() {
106
+ // both hands have two pairs, with the same highest ranked pair,
107
+ // tie goes to low pair
108
+ test(
109
+ &vec!["2S QS 2C QD JH", "JD QH JS 8D QC"],
110
+ &vec!["JD QH JS 8D QC"],
111
+ )
112
+ }
113
+
114
+ #[test]
115
+ #[ignore]
116
+ fn test_two_pairs_last_card_cascade() {
117
+ // both hands have two identically ranked pairs,
118
+ // tie goes to remaining card (kicker)
119
+ test(
120
+ &vec!["JD QH JS 8D QC", "JS QS JC 2D QD"],
121
+ &vec!["JD QH JS 8D QC"],
122
+ )
123
+ }
124
+
125
+ #[test]
126
+ #[ignore]
127
+ fn test_three_of_a_kind_beats_two_pair() {
128
+ test(
129
+ &vec!["2S 8H 2H 8D JH", "4S 5H 4C 8S 4H"],
130
+ &vec!["4S 5H 4C 8S 4H"],
131
+ )
132
+ }
133
+
134
+ #[test]
135
+ #[ignore]
136
+ fn test_three_of_a_kind_ranks() {
137
+ //both hands have three of a kind, tie goes to highest ranked triplet
138
+ test(
139
+ &vec!["2S 2H 2C 8D JH", "4S AH AS 8C AD"],
140
+ &vec!["4S AH AS 8C AD"],
141
+ )
142
+ }
143
+
144
+ #[test]
145
+ #[ignore]
146
+ fn test_three_of_a_kind_cascade_ranks() {
147
+ // with multiple decks, two players can have same three of a kind,
148
+ // ties go to highest remaining cards
149
+ test(
150
+ &vec!["4S AH AS 7C AD", "4S AH AS 8C AD"],
151
+ &vec!["4S AH AS 8C AD"],
152
+ )
153
+ }
154
+
155
+ #[test]
156
+ #[ignore]
157
+ fn test_straight_beats_three_of_a_kind() {
158
+ test(
159
+ &vec!["4S 5H 4C 8D 4H", "3S 4D 2S 6D 5C"],
160
+ &vec!["3S 4D 2S 6D 5C"],
161
+ )
162
+ }
163
+
164
+ #[test]
165
+ #[ignore]
166
+ fn test_aces_can_end_a_straight_high() {
167
+ // aces can end a straight (10 J Q K A)
168
+ test(
169
+ &vec!["4S 5H 4C 8D 4H", "10D JH QS KD AC"],
170
+ &vec!["10D JH QS KD AC"],
171
+ )
172
+ }
173
+
174
+ #[test]
175
+ #[ignore]
176
+ fn test_aces_can_end_a_straight_low() {
177
+ // aces can start a straight (A 2 3 4 5)
178
+ test(
179
+ &vec!["4S 5H 4C 8D 4H", "4D AH 3S 2D 5C"],
180
+ &vec!["4D AH 3S 2D 5C"],
181
+ )
182
+ }
183
+
184
+ #[test]
185
+ #[ignore]
186
+ fn test_straight_cascade() {
187
+ // both hands with a straight, tie goes to highest ranked card
188
+ test(
189
+ &vec!["4S 6C 7S 8D 5H", "5S 7H 8S 9D 6H"],
190
+ &vec!["5S 7H 8S 9D 6H"],
191
+ )
192
+ }
193
+
194
+ #[test]
195
+ #[ignore]
196
+ fn test_straight_scoring() {
197
+ // even though an ace is usually high, a 5-high straight is the lowest-scoring straight
198
+ test(
199
+ &vec!["2H 3C 4D 5D 6H", "4S AH 3S 2D 5H"],
200
+ &vec!["2H 3C 4D 5D 6H"],
201
+ )
202
+ }
203
+
204
+ #[test]
205
+ #[ignore]
206
+ fn test_flush_beats_a_straight() {
207
+ test(
208
+ &vec!["4C 6H 7D 8D 5H", "2S 4S 5S 6S 7S"],
209
+ &vec!["2S 4S 5S 6S 7S"],
210
+ )
211
+ }
212
+
213
+ #[test]
214
+ #[ignore]
215
+ fn test_flush_cascade() {
216
+ // both hands have a flush, tie goes to high card, down to the last one if necessary
217
+ test(
218
+ &vec!["4H 7H 8H 9H 6H", "2S 4S 5S 6S 7S"],
219
+ &vec!["4H 7H 8H 9H 6H"],
220
+ )
221
+ }
222
+
223
+ #[test]
224
+ #[ignore]
225
+ fn test_full_house_beats_a_flush() {
226
+ test(
227
+ &vec!["3H 6H 7H 8H 5H", "4S 5C 4C 5D 4H"],
228
+ &vec!["4S 5C 4C 5D 4H"],
229
+ )
230
+ }
231
+
232
+ #[test]
233
+ #[ignore]
234
+ fn test_full_house_ranks() {
235
+ // both hands have a full house, tie goes to highest-ranked triplet
236
+ test(
237
+ &vec!["4H 4S 4D 9S 9D", "5H 5S 5D 8S 8D"],
238
+ &vec!["5H 5S 5D 8S 8D"],
239
+ )
240
+ }
241
+
242
+ #[test]
243
+ #[ignore]
244
+ fn test_full_house_cascade() {
245
+ // with multiple decks, both hands have a full house with the same triplet, tie goes to the pair
246
+ test(
247
+ &vec!["5H 5S 5D 9S 9D", "5H 5S 5D 8S 8D"],
248
+ &vec!["5H 5S 5D 9S 9D"],
249
+ )
250
+ }
251
+
252
+ #[test]
253
+ #[ignore]
254
+ fn test_four_of_a_kind_beats_full_house() {
255
+ test(
256
+ &vec!["4S 5H 4D 5D 4H", "3S 3H 2S 3D 3C"],
257
+ &vec!["3S 3H 2S 3D 3C"],
258
+ )
259
+ }
260
+
261
+ #[test]
262
+ #[ignore]
263
+ fn test_four_of_a_kind_ranks() {
264
+ // both hands have four of a kind, tie goes to high quad
265
+ test(
266
+ &vec!["2S 2H 2C 8D 2D", "4S 5H 5S 5D 5C"],
267
+ &vec!["4S 5H 5S 5D 5C"],
268
+ )
269
+ }
270
+
271
+ #[test]
272
+ #[ignore]
273
+ fn test_four_of_a_kind_cascade() {
274
+ // with multiple decks, both hands with identical four of a kind, tie determined by kicker
275
+ test(
276
+ &vec!["3S 3H 2S 3D 3C", "3S 3H 4S 3D 3C"],
277
+ &vec!["3S 3H 4S 3D 3C"],
278
+ )
279
+ }
280
+
281
+ #[test]
282
+ #[ignore]
283
+ fn test_straight_flush_beats_four_of_a_kind() {
284
+ test(
285
+ &vec!["4S 5H 5S 5D 5C", "7S 8S 9S 6S 10S"],
286
+ &vec!["7S 8S 9S 6S 10S"],
287
+ )
288
+ }
289
+
290
+ #[test]
291
+ #[ignore]
292
+ fn test_straight_flush_ranks() {
293
+ // both hands have straight flush, tie goes to highest-ranked card
294
+ test(
295
+ &vec!["4H 6H 7H 8H 5H", "5S 7S 8S 9S 6S"],
296
+ &vec!["5S 7S 8S 9S 6S"],
297
+ )
298
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trackler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1.33
4
+ version: 2.2.1.34
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katrina Owen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-19 00:00:00.000000000 Z
11
+ date: 2017-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -1107,6 +1107,11 @@ files:
1107
1107
  - tracks/clojure/exercises/clock/project.clj
1108
1108
  - tracks/clojure/exercises/clock/src/example.clj
1109
1109
  - tracks/clojure/exercises/clock/test/clock_test.clj
1110
+ - tracks/clojure/exercises/collatz-conjecture/README.md
1111
+ - tracks/clojure/exercises/collatz-conjecture/project.clj
1112
+ - tracks/clojure/exercises/collatz-conjecture/src/collatz_conjecture.clj
1113
+ - tracks/clojure/exercises/collatz-conjecture/src/example.clj
1114
+ - tracks/clojure/exercises/collatz-conjecture/test/collatz_conjecture_test.clj
1110
1115
  - tracks/clojure/exercises/crypto-square/README.md
1111
1116
  - tracks/clojure/exercises/crypto-square/project.clj
1112
1117
  - tracks/clojure/exercises/crypto-square/src/example.clj
@@ -1382,18 +1387,223 @@ files:
1382
1387
  - tracks/coldfusion/.git
1383
1388
  - tracks/coldfusion/.gitignore
1384
1389
  - tracks/coldfusion/.travis.yml
1390
+ - tracks/coldfusion/CONTRIBUTING.md
1385
1391
  - tracks/coldfusion/LICENSE
1386
1392
  - tracks/coldfusion/README.md
1387
1393
  - tracks/coldfusion/bin/fetch-configlet
1388
1394
  - tracks/coldfusion/config.json
1389
1395
  - tracks/coldfusion/config/exercise_readme.go.tmpl
1390
1396
  - tracks/coldfusion/config/maintainers.json
1397
+ - tracks/coldfusion/docs/ABOUT.md
1391
1398
  - tracks/coldfusion/docs/EXERCISE_README_INSERT.md
1399
+ - tracks/coldfusion/docs/INSTALLATION.md
1400
+ - tracks/coldfusion/docs/LEARNING.md
1401
+ - tracks/coldfusion/docs/RESOURCES.md
1402
+ - tracks/coldfusion/docs/SNIPPET.txt
1403
+ - tracks/coldfusion/docs/TESTS.md
1404
+ - tracks/coldfusion/exercises/acronym/.meta/HINTS.md
1405
+ - tracks/coldfusion/exercises/acronym/Acronym.cfc
1406
+ - tracks/coldfusion/exercises/acronym/AcronymTest.cfc
1407
+ - tracks/coldfusion/exercises/acronym/Solution.cfc
1408
+ - tracks/coldfusion/exercises/acronym/SolutionTest.cfc
1409
+ - tracks/coldfusion/exercises/acronym/TestRunner.cfc
1410
+ - tracks/coldfusion/exercises/acronym/box.json
1411
+ - tracks/coldfusion/exercises/acronym/index.cfm
1412
+ - tracks/coldfusion/exercises/atbash-cipher/.meta/HINTS.md
1413
+ - tracks/coldfusion/exercises/atbash-cipher/AtbashCipher.cfc
1414
+ - tracks/coldfusion/exercises/atbash-cipher/AtbashCipherTest.cfc
1415
+ - tracks/coldfusion/exercises/atbash-cipher/Solution.cfc
1416
+ - tracks/coldfusion/exercises/atbash-cipher/SolutionTest.cfc
1417
+ - tracks/coldfusion/exercises/atbash-cipher/TestRunner.cfc
1418
+ - tracks/coldfusion/exercises/atbash-cipher/box.json
1419
+ - tracks/coldfusion/exercises/atbash-cipher/index.cfm
1420
+ - tracks/coldfusion/exercises/diamond/.meta/HINTS.md
1421
+ - tracks/coldfusion/exercises/diamond/Diamond.cfc
1422
+ - tracks/coldfusion/exercises/diamond/DiamondTest.cfc
1423
+ - tracks/coldfusion/exercises/diamond/Solution.cfc
1424
+ - tracks/coldfusion/exercises/diamond/SolutionTest.cfc
1425
+ - tracks/coldfusion/exercises/diamond/TestRunner.cfc
1426
+ - tracks/coldfusion/exercises/diamond/box.json
1427
+ - tracks/coldfusion/exercises/diamond/index.cfm
1428
+ - tracks/coldfusion/exercises/difference-of-squares/.meta/HINTS.md
1429
+ - tracks/coldfusion/exercises/difference-of-squares/DifferenceOfSquares.cfc
1430
+ - tracks/coldfusion/exercises/difference-of-squares/DifferenceOfSquaresTest.cfc
1431
+ - tracks/coldfusion/exercises/difference-of-squares/Solution.cfc
1432
+ - tracks/coldfusion/exercises/difference-of-squares/SolutionTest.cfc
1433
+ - tracks/coldfusion/exercises/difference-of-squares/TestRunner.cfc
1434
+ - tracks/coldfusion/exercises/difference-of-squares/box.json
1435
+ - tracks/coldfusion/exercises/difference-of-squares/index.cfm
1436
+ - tracks/coldfusion/exercises/flatten-array/.meta/HINTS.md
1437
+ - tracks/coldfusion/exercises/flatten-array/FlattenArray.cfc
1438
+ - tracks/coldfusion/exercises/flatten-array/FlattenArrayTest.cfc
1439
+ - tracks/coldfusion/exercises/flatten-array/Solution.cfc
1440
+ - tracks/coldfusion/exercises/flatten-array/SolutionTest.cfc
1441
+ - tracks/coldfusion/exercises/flatten-array/TestRunner.cfc
1442
+ - tracks/coldfusion/exercises/flatten-array/box.json
1443
+ - tracks/coldfusion/exercises/flatten-array/index.cfm
1444
+ - tracks/coldfusion/exercises/gigasecond/.meta/HINTS.md
1445
+ - tracks/coldfusion/exercises/gigasecond/Gigasecond.cfc
1446
+ - tracks/coldfusion/exercises/gigasecond/GigasecondTest.cfc
1447
+ - tracks/coldfusion/exercises/gigasecond/Solution.cfc
1448
+ - tracks/coldfusion/exercises/gigasecond/SolutionTest.cfc
1449
+ - tracks/coldfusion/exercises/gigasecond/TestRunner.cfc
1450
+ - tracks/coldfusion/exercises/gigasecond/box.json
1451
+ - tracks/coldfusion/exercises/gigasecond/index.cfm
1452
+ - tracks/coldfusion/exercises/grains/.meta/HINTS.md
1453
+ - tracks/coldfusion/exercises/grains/Grains.cfc
1454
+ - tracks/coldfusion/exercises/grains/GrainsTest.cfc
1455
+ - tracks/coldfusion/exercises/grains/Solution.cfc
1456
+ - tracks/coldfusion/exercises/grains/SolutionTest.cfc
1457
+ - tracks/coldfusion/exercises/grains/TestRunner.cfc
1458
+ - tracks/coldfusion/exercises/grains/box.json
1459
+ - tracks/coldfusion/exercises/grains/index.cfm
1460
+ - tracks/coldfusion/exercises/hamming/.meta/HINTS.md
1461
+ - tracks/coldfusion/exercises/hamming/Hamming.cfc
1462
+ - tracks/coldfusion/exercises/hamming/HammingTest.cfc
1463
+ - tracks/coldfusion/exercises/hamming/Solution.cfc
1464
+ - tracks/coldfusion/exercises/hamming/SolutionTest.cfc
1465
+ - tracks/coldfusion/exercises/hamming/TestRunner.cfc
1466
+ - tracks/coldfusion/exercises/hamming/box.json
1467
+ - tracks/coldfusion/exercises/hamming/index.cfm
1468
+ - tracks/coldfusion/exercises/hello-world/HelloWorld.cfc
1469
+ - tracks/coldfusion/exercises/hello-world/HelloWorldTest.cfc
1470
+ - tracks/coldfusion/exercises/hello-world/Solution.cfc
1471
+ - tracks/coldfusion/exercises/hello-world/SolutionTest.cfc
1472
+ - tracks/coldfusion/exercises/hello-world/TestRunner.cfc
1473
+ - tracks/coldfusion/exercises/hello-world/box.json
1474
+ - tracks/coldfusion/exercises/hello-world/index.cfm
1475
+ - tracks/coldfusion/exercises/isogram/.meta/HINTS.md
1476
+ - tracks/coldfusion/exercises/isogram/Isogram.cfc
1477
+ - tracks/coldfusion/exercises/isogram/IsogramTest.cfc
1478
+ - tracks/coldfusion/exercises/isogram/Solution.cfc
1479
+ - tracks/coldfusion/exercises/isogram/SolutionTest.cfc
1480
+ - tracks/coldfusion/exercises/isogram/TestRunner.cfc
1481
+ - tracks/coldfusion/exercises/isogram/box.json
1482
+ - tracks/coldfusion/exercises/isogram/index.cfm
1483
+ - tracks/coldfusion/exercises/largest-series-product/.meta/HINTS.md
1484
+ - tracks/coldfusion/exercises/largest-series-product/LargestSeriesProduct.cfc
1485
+ - tracks/coldfusion/exercises/largest-series-product/LargestSeriesProductTest.cfc
1486
+ - tracks/coldfusion/exercises/largest-series-product/Solution.cfc
1487
+ - tracks/coldfusion/exercises/largest-series-product/SolutionTest.cfc
1488
+ - tracks/coldfusion/exercises/largest-series-product/TestRunner.cfc
1489
+ - tracks/coldfusion/exercises/largest-series-product/box.json
1490
+ - tracks/coldfusion/exercises/largest-series-product/index.cfm
1491
+ - tracks/coldfusion/exercises/leap/Leap.cfc
1492
+ - tracks/coldfusion/exercises/leap/LeapTest.cfc
1392
1493
  - tracks/coldfusion/exercises/leap/README.md
1393
- - tracks/coldfusion/exercises/leap/example.cfc
1394
- - tracks/coldfusion/exercises/leap/leap.cfc
1395
- - tracks/coldfusion/exercises/leap/leap_tests.cfc
1494
+ - tracks/coldfusion/exercises/leap/Solution.cfc
1495
+ - tracks/coldfusion/exercises/leap/SolutionTest.cfc
1496
+ - tracks/coldfusion/exercises/leap/TestRunner.cfc
1497
+ - tracks/coldfusion/exercises/leap/box.json
1498
+ - tracks/coldfusion/exercises/leap/index.cfm
1499
+ - tracks/coldfusion/exercises/luhn/.meta/HINTS.md
1500
+ - tracks/coldfusion/exercises/luhn/Luhn.cfc
1501
+ - tracks/coldfusion/exercises/luhn/LuhnTest.cfc
1502
+ - tracks/coldfusion/exercises/luhn/Solution.cfc
1503
+ - tracks/coldfusion/exercises/luhn/SolutionTest.cfc
1504
+ - tracks/coldfusion/exercises/luhn/TestRunner.cfc
1505
+ - tracks/coldfusion/exercises/luhn/box.json
1506
+ - tracks/coldfusion/exercises/luhn/index.cfm
1507
+ - tracks/coldfusion/exercises/nth-prime/.meta/HINTS.md
1508
+ - tracks/coldfusion/exercises/nth-prime/NthPrime.cfc
1509
+ - tracks/coldfusion/exercises/nth-prime/NthPrimeTest.cfc
1510
+ - tracks/coldfusion/exercises/nth-prime/Solution.cfc
1511
+ - tracks/coldfusion/exercises/nth-prime/SolutionTest.cfc
1512
+ - tracks/coldfusion/exercises/nth-prime/TestRunner.cfc
1513
+ - tracks/coldfusion/exercises/nth-prime/box.json
1514
+ - tracks/coldfusion/exercises/nth-prime/index.cfm
1515
+ - tracks/coldfusion/exercises/pangram/.meta/HINTS.md
1516
+ - tracks/coldfusion/exercises/pangram/Pangram.cfc
1517
+ - tracks/coldfusion/exercises/pangram/PangramTest.cfc
1518
+ - tracks/coldfusion/exercises/pangram/Solution.cfc
1519
+ - tracks/coldfusion/exercises/pangram/SolutionTest.cfc
1520
+ - tracks/coldfusion/exercises/pangram/TestRunner.cfc
1521
+ - tracks/coldfusion/exercises/pangram/box.json
1522
+ - tracks/coldfusion/exercises/pangram/index.cfm
1523
+ - tracks/coldfusion/exercises/pig-latin/.meta/HINTS.md
1524
+ - tracks/coldfusion/exercises/pig-latin/PigLatin.cfc
1525
+ - tracks/coldfusion/exercises/pig-latin/PigLatinTest.cfc
1526
+ - tracks/coldfusion/exercises/pig-latin/Solution.cfc
1527
+ - tracks/coldfusion/exercises/pig-latin/SolutionTest.cfc
1528
+ - tracks/coldfusion/exercises/pig-latin/TestRunner.cfc
1529
+ - tracks/coldfusion/exercises/pig-latin/box.json
1530
+ - tracks/coldfusion/exercises/pig-latin/index.cfm
1531
+ - tracks/coldfusion/exercises/raindrops/.meta/HINTS.md
1532
+ - tracks/coldfusion/exercises/raindrops/Raindrops.cfc
1533
+ - tracks/coldfusion/exercises/raindrops/RaindropsTest.cfc
1534
+ - tracks/coldfusion/exercises/raindrops/Solution.cfc
1535
+ - tracks/coldfusion/exercises/raindrops/SolutionTest.cfc
1536
+ - tracks/coldfusion/exercises/raindrops/TestRunner.cfc
1537
+ - tracks/coldfusion/exercises/raindrops/box.json
1538
+ - tracks/coldfusion/exercises/raindrops/index.cfm
1539
+ - tracks/coldfusion/exercises/rna-transcription/.meta/HINTS.md
1540
+ - tracks/coldfusion/exercises/rna-transcription/RnaTranscription.cfc
1541
+ - tracks/coldfusion/exercises/rna-transcription/RnaTranscriptionTest.cfc
1542
+ - tracks/coldfusion/exercises/rna-transcription/Solution.cfc
1543
+ - tracks/coldfusion/exercises/rna-transcription/SolutionTest.cfc
1544
+ - tracks/coldfusion/exercises/rna-transcription/TestRunner.cfc
1545
+ - tracks/coldfusion/exercises/rna-transcription/box.json
1546
+ - tracks/coldfusion/exercises/rna-transcription/index.cfm
1547
+ - tracks/coldfusion/exercises/saddle-points/.meta/HINTS.md
1548
+ - tracks/coldfusion/exercises/saddle-points/SaddlePoints.cfc
1549
+ - tracks/coldfusion/exercises/saddle-points/SaddlePointsTest.cfc
1550
+ - tracks/coldfusion/exercises/saddle-points/Solution.cfc
1551
+ - tracks/coldfusion/exercises/saddle-points/SolutionTest.cfc
1552
+ - tracks/coldfusion/exercises/saddle-points/TestRunner.cfc
1553
+ - tracks/coldfusion/exercises/saddle-points/box.json
1554
+ - tracks/coldfusion/exercises/saddle-points/index.cfm
1555
+ - tracks/coldfusion/exercises/scrabble-score/.meta/HINTS.md
1556
+ - tracks/coldfusion/exercises/scrabble-score/ScrabbleScore.cfc
1557
+ - tracks/coldfusion/exercises/scrabble-score/ScrabbleScoreTest.cfc
1558
+ - tracks/coldfusion/exercises/scrabble-score/Solution.cfc
1559
+ - tracks/coldfusion/exercises/scrabble-score/SolutionTest.cfc
1560
+ - tracks/coldfusion/exercises/scrabble-score/TestRunner.cfc
1561
+ - tracks/coldfusion/exercises/scrabble-score/box.json
1562
+ - tracks/coldfusion/exercises/scrabble-score/index.cfm
1563
+ - tracks/coldfusion/exercises/secret-handshake/.meta/HINTS.md
1564
+ - tracks/coldfusion/exercises/secret-handshake/SecretHandshake.cfc
1565
+ - tracks/coldfusion/exercises/secret-handshake/SecretHandshakeTest.cfc
1566
+ - tracks/coldfusion/exercises/secret-handshake/Solution.cfc
1567
+ - tracks/coldfusion/exercises/secret-handshake/SolutionTest.cfc
1568
+ - tracks/coldfusion/exercises/secret-handshake/TestRunner.cfc
1569
+ - tracks/coldfusion/exercises/secret-handshake/box.json
1570
+ - tracks/coldfusion/exercises/secret-handshake/index.cfm
1571
+ - tracks/coldfusion/exercises/space-age/.meta/HINTS.md
1572
+ - tracks/coldfusion/exercises/space-age/Solution.cfc
1573
+ - tracks/coldfusion/exercises/space-age/SolutionTest.cfc
1574
+ - tracks/coldfusion/exercises/space-age/SpaceAge.cfc
1575
+ - tracks/coldfusion/exercises/space-age/SpaceAgeTest.cfc
1576
+ - tracks/coldfusion/exercises/space-age/TestRunner.cfc
1577
+ - tracks/coldfusion/exercises/space-age/box.json
1578
+ - tracks/coldfusion/exercises/space-age/index.cfm
1579
+ - tracks/coldfusion/exercises/sum-of-multiples/.meta/HINTS.md
1580
+ - tracks/coldfusion/exercises/sum-of-multiples/Solution.cfc
1581
+ - tracks/coldfusion/exercises/sum-of-multiples/SolutionTest.cfc
1582
+ - tracks/coldfusion/exercises/sum-of-multiples/SumOfMultiples.cfc
1583
+ - tracks/coldfusion/exercises/sum-of-multiples/SumOfMultiplesTest.cfc
1584
+ - tracks/coldfusion/exercises/sum-of-multiples/TestRunner.cfc
1585
+ - tracks/coldfusion/exercises/sum-of-multiples/box.json
1586
+ - tracks/coldfusion/exercises/sum-of-multiples/index.cfm
1587
+ - tracks/coldfusion/exercises/triangle/.meta/HINTS.md
1588
+ - tracks/coldfusion/exercises/triangle/Solution.cfc
1589
+ - tracks/coldfusion/exercises/triangle/SolutionTest.cfc
1590
+ - tracks/coldfusion/exercises/triangle/TestRunner.cfc
1591
+ - tracks/coldfusion/exercises/triangle/Triangle.cfc
1592
+ - tracks/coldfusion/exercises/triangle/TriangleTest.cfc
1593
+ - tracks/coldfusion/exercises/triangle/box.json
1594
+ - tracks/coldfusion/exercises/triangle/index.cfm
1396
1595
  - tracks/coldfusion/img/icon.png
1596
+ - tracks/coldfusion/tasks/GenerateTests.cfc
1597
+ - tracks/coldfusion/tasks/ScaffoldExercise.cfc
1598
+ - tracks/coldfusion/tasks/TestAllSolutions.cfc
1599
+ - tracks/coldfusion/tasks/exercise_template/.meta/HINTS.md
1600
+ - tracks/coldfusion/tasks/exercise_template/@@name@@.cfc
1601
+ - tracks/coldfusion/tasks/exercise_template/@@name@@Test.cfc
1602
+ - tracks/coldfusion/tasks/exercise_template/Solution.cfc
1603
+ - tracks/coldfusion/tasks/exercise_template/SolutionTest.cfc
1604
+ - tracks/coldfusion/tasks/exercise_template/TestRunner.cfc
1605
+ - tracks/coldfusion/tasks/exercise_template/box.json
1606
+ - tracks/coldfusion/tasks/exercise_template/index.cfm
1397
1607
  - tracks/common-lisp/.git
1398
1608
  - tracks/common-lisp/.github/stale.yml
1399
1609
  - tracks/common-lisp/.gitignore
@@ -1436,6 +1646,10 @@ files:
1436
1646
  - tracks/common-lisp/exercises/bob/bob-test.lisp
1437
1647
  - tracks/common-lisp/exercises/bob/bob.lisp
1438
1648
  - tracks/common-lisp/exercises/bob/example.lisp
1649
+ - tracks/common-lisp/exercises/collatz-conjecture/README.md
1650
+ - tracks/common-lisp/exercises/collatz-conjecture/collatz-conjecture-test.lisp
1651
+ - tracks/common-lisp/exercises/collatz-conjecture/collatz-conjecture.lisp
1652
+ - tracks/common-lisp/exercises/collatz-conjecture/example.lisp
1439
1653
  - tracks/common-lisp/exercises/crypto-square/README.md
1440
1654
  - tracks/common-lisp/exercises/crypto-square/crypto-square-test.lisp
1441
1655
  - tracks/common-lisp/exercises/crypto-square/crypto-square.lisp
@@ -2516,6 +2730,7 @@ files:
2516
2730
  - tracks/csharp/generators/Exercises/Bob.cs
2517
2731
  - tracks/csharp/generators/Exercises/BookStore.cs
2518
2732
  - tracks/csharp/generators/Exercises/BracketPush.cs
2733
+ - tracks/csharp/generators/Exercises/Clock.cs
2519
2734
  - tracks/csharp/generators/Exercises/CollatzConjecture.cs
2520
2735
  - tracks/csharp/generators/Exercises/ComplexNumbers.cs
2521
2736
  - tracks/csharp/generators/Exercises/CryptoSquare.cs
@@ -5631,6 +5846,13 @@ files:
5631
5846
  - tracks/haskell/exercises/clock/src/Clock.hs
5632
5847
  - tracks/haskell/exercises/clock/stack.yaml
5633
5848
  - tracks/haskell/exercises/clock/test/Tests.hs
5849
+ - tracks/haskell/exercises/collatz-conjecture/README.md
5850
+ - tracks/haskell/exercises/collatz-conjecture/examples/success-standard/package.yaml
5851
+ - tracks/haskell/exercises/collatz-conjecture/examples/success-standard/src/CollatzConjecture.hs
5852
+ - tracks/haskell/exercises/collatz-conjecture/package.yaml
5853
+ - tracks/haskell/exercises/collatz-conjecture/src/CollatzConjecture.hs
5854
+ - tracks/haskell/exercises/collatz-conjecture/stack.yaml
5855
+ - tracks/haskell/exercises/collatz-conjecture/test/Tests.hs
5634
5856
  - tracks/haskell/exercises/connect/README.md
5635
5857
  - tracks/haskell/exercises/connect/examples/success-standard/package.yaml
5636
5858
  - tracks/haskell/exercises/connect/examples/success-standard/src/Connect.hs
@@ -6183,6 +6405,7 @@ files:
6183
6405
  - tracks/idris/docs/INSTALLATION.md
6184
6406
  - tracks/idris/docs/LEARNING.md
6185
6407
  - tracks/idris/docs/RESOURCES.md
6408
+ - tracks/idris/docs/SNIPPET.txt
6186
6409
  - tracks/idris/docs/TESTS.md
6187
6410
  - tracks/idris/exercises/.keep
6188
6411
  - tracks/idris/exercises/hamming/Hamming.ipkg
@@ -10920,6 +11143,12 @@ files:
10920
11143
  - tracks/rust/exercises/pascals-triangle/example.rs
10921
11144
  - tracks/rust/exercises/pascals-triangle/src/lib.rs
10922
11145
  - tracks/rust/exercises/pascals-triangle/tests/pascals-triangle.rs
11146
+ - tracks/rust/exercises/perfect-numbers/.gitignore
11147
+ - tracks/rust/exercises/perfect-numbers/Cargo.toml
11148
+ - tracks/rust/exercises/perfect-numbers/README.md
11149
+ - tracks/rust/exercises/perfect-numbers/example.rs
11150
+ - tracks/rust/exercises/perfect-numbers/src/lib.rs
11151
+ - tracks/rust/exercises/perfect-numbers/tests/perfect-numbers.rs
10923
11152
  - tracks/rust/exercises/phone-number/.gitignore
10924
11153
  - tracks/rust/exercises/phone-number/Cargo.lock
10925
11154
  - tracks/rust/exercises/phone-number/Cargo.toml
@@ -10934,6 +11163,14 @@ files:
10934
11163
  - tracks/rust/exercises/pig-latin/example.rs
10935
11164
  - tracks/rust/exercises/pig-latin/src/lib.rs
10936
11165
  - tracks/rust/exercises/pig-latin/tests/pig-latin.rs
11166
+ - tracks/rust/exercises/poker/.gitignore
11167
+ - tracks/rust/exercises/poker/.meta/hints.md
11168
+ - tracks/rust/exercises/poker/Cargo-example.toml
11169
+ - tracks/rust/exercises/poker/Cargo.toml
11170
+ - tracks/rust/exercises/poker/README.md
11171
+ - tracks/rust/exercises/poker/example.rs
11172
+ - tracks/rust/exercises/poker/src/lib.rs
11173
+ - tracks/rust/exercises/poker/tests/poker.rs
10937
11174
  - tracks/rust/exercises/prime-factors/Cargo.lock
10938
11175
  - tracks/rust/exercises/prime-factors/Cargo.toml
10939
11176
  - tracks/rust/exercises/prime-factors/README.md