trackler 2.2.1.10 → 2.2.1.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (240) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +3 -0
  3. data/lib/trackler/version.rb +1 -1
  4. data/problem-specifications/CONTRIBUTING.md +1 -1
  5. data/problem-specifications/TOPICS.txt +1 -0
  6. data/problem-specifications/exercises/accumulate/description.md +0 -3
  7. data/problem-specifications/exercises/hamming/canonical-data.json +3 -3
  8. data/problem-specifications/exercises/house/canonical-data.json +322 -0
  9. data/problem-specifications/exercises/palindrome-products/description.md +2 -2
  10. data/problem-specifications/exercises/simple-cipher/description.md +1 -1
  11. data/tracks/bash/config.json +0 -11
  12. data/tracks/cpp/docs/ABOUT.md +12 -37
  13. data/tracks/csharp/config.json +37 -0
  14. data/tracks/csharp/config/maintainers.json +10 -0
  15. data/tracks/csharp/docs/ABOUT.md +1 -1
  16. data/tracks/csharp/docs/RESOURCES.md +2 -2
  17. data/tracks/csharp/exercises/Exercises.All.sln +50 -8
  18. data/tracks/csharp/exercises/Exercises.Default.sln +50 -8
  19. data/tracks/csharp/exercises/collatz-conjecture/CollatzConjecture.cs +9 -0
  20. data/tracks/csharp/exercises/collatz-conjecture/CollatzConjecture.csproj +18 -0
  21. data/tracks/csharp/exercises/collatz-conjecture/CollatzConjectureTest.cs +43 -0
  22. data/tracks/csharp/exercises/collatz-conjecture/Example.cs +30 -0
  23. data/tracks/csharp/exercises/collatz-conjecture/README.md +38 -0
  24. data/tracks/csharp/exercises/diamond/Diamond.cs +1 -1
  25. data/tracks/csharp/exercises/diamond/Diamond.csproj +3 -1
  26. data/tracks/csharp/exercises/diamond/DiamondTest.cs +39 -21
  27. data/tracks/csharp/exercises/diamond/Example.cs +2 -2
  28. data/tracks/csharp/exercises/diamond/HINTS.md +3 -1
  29. data/tracks/csharp/exercises/spiral-matrix/Example.cs +40 -0
  30. data/tracks/csharp/exercises/spiral-matrix/README.md +36 -0
  31. data/tracks/csharp/exercises/spiral-matrix/SpiralMatrix.cs +9 -0
  32. data/tracks/csharp/exercises/spiral-matrix/SpiralMatrix.csproj +18 -0
  33. data/tracks/csharp/exercises/spiral-matrix/SpiralMatrixTest.cs +78 -0
  34. data/tracks/csharp/exercises/two-fer/Example.cs +16 -0
  35. data/tracks/csharp/exercises/two-fer/README.md +25 -0
  36. data/tracks/csharp/exercises/two-fer/TwoFer.cs +9 -0
  37. data/tracks/csharp/exercises/two-fer/TwoFer.csproj +18 -0
  38. data/tracks/csharp/exercises/two-fer/TwoFerTest.cs +24 -0
  39. data/tracks/dart/README.md +1 -1
  40. data/tracks/dart/docs/EXERCISE_README_INSERT.md +9 -0
  41. data/tracks/dart/docs/INSTALLATION.md +13 -0
  42. data/tracks/dart/docs/LEARNING.md +6 -0
  43. data/tracks/dart/docs/RESOURCES.md +7 -0
  44. data/tracks/dart/docs/TESTS.md +133 -0
  45. data/tracks/delphi/docs/ABOUT.md +18 -5
  46. data/tracks/delphi/docs/Getting_Started_Guide.md +930 -0
  47. data/tracks/delphi/exercises/hamming/uHammingExample.pas +1 -1
  48. data/tracks/delphi/exercises/hamming/uHammingTests.pas +15 -15
  49. data/tracks/ecmascript/.travis.yml +2 -1
  50. data/tracks/ecmascript/Makefile +19 -8
  51. data/tracks/ecmascript/config.json +16 -0
  52. data/tracks/ecmascript/exercises/accumulate/package.json +5 -5
  53. data/tracks/ecmascript/exercises/acronym/package.json +5 -5
  54. data/tracks/ecmascript/exercises/all-your-base/package.json +5 -5
  55. data/tracks/ecmascript/exercises/allergies/package.json +5 -5
  56. data/tracks/ecmascript/exercises/alphametics/package.json +5 -5
  57. data/tracks/ecmascript/exercises/anagram/package.json +5 -5
  58. data/tracks/ecmascript/exercises/atbash-cipher/package.json +5 -5
  59. data/tracks/ecmascript/exercises/beer-song/package.json +5 -5
  60. data/tracks/ecmascript/exercises/binary-search-tree/package.json +5 -5
  61. data/tracks/ecmascript/exercises/binary-search/package.json +5 -5
  62. data/tracks/ecmascript/exercises/binary/package.json +5 -5
  63. data/tracks/ecmascript/exercises/bob/package.json +5 -5
  64. data/tracks/ecmascript/exercises/bracket-push/package.json +5 -5
  65. data/tracks/ecmascript/exercises/circular-buffer/package.json +5 -5
  66. data/tracks/ecmascript/exercises/clock/package.json +5 -5
  67. data/tracks/ecmascript/exercises/connect/package.json +5 -5
  68. data/tracks/ecmascript/exercises/crypto-square/package.json +5 -5
  69. data/tracks/ecmascript/exercises/custom-set/package.json +5 -5
  70. data/tracks/ecmascript/exercises/diamond/package.json +5 -5
  71. data/tracks/ecmascript/exercises/difference-of-squares/package.json +5 -5
  72. data/tracks/ecmascript/exercises/diffie-hellman/package.json +5 -5
  73. data/tracks/ecmascript/exercises/etl/package.json +5 -5
  74. data/tracks/ecmascript/exercises/flatten-array/package.json +5 -5
  75. data/tracks/ecmascript/exercises/food-chain/package.json +5 -5
  76. data/tracks/ecmascript/exercises/gigasecond/package.json +5 -5
  77. data/tracks/ecmascript/exercises/grade-school/package.json +5 -5
  78. data/tracks/ecmascript/exercises/grains/package.json +5 -5
  79. data/tracks/ecmascript/exercises/hamming/package.json +5 -5
  80. data/tracks/ecmascript/exercises/hello-world/package.json +5 -5
  81. data/tracks/ecmascript/exercises/hexadecimal/package.json +5 -5
  82. data/tracks/ecmascript/exercises/isogram/package.json +5 -5
  83. data/tracks/ecmascript/exercises/kindergarten-garden/package.json +5 -5
  84. data/tracks/ecmascript/exercises/largest-series-product/package.json +5 -5
  85. data/tracks/ecmascript/exercises/leap/package.json +5 -5
  86. data/tracks/ecmascript/exercises/linked-list/package.json +5 -5
  87. data/tracks/ecmascript/exercises/list-ops/package.json +5 -5
  88. data/tracks/ecmascript/exercises/luhn/package.json +5 -5
  89. data/tracks/ecmascript/exercises/matrix/package.json +5 -5
  90. data/tracks/ecmascript/exercises/meetup/package.json +5 -5
  91. data/tracks/ecmascript/exercises/minesweeper/package.json +5 -5
  92. data/tracks/ecmascript/exercises/nth-prime/package.json +5 -5
  93. data/tracks/ecmascript/exercises/ocr-numbers/package.json +5 -5
  94. data/tracks/ecmascript/exercises/octal/package.json +5 -5
  95. data/tracks/ecmascript/exercises/palindrome-products/package.json +5 -5
  96. data/tracks/ecmascript/exercises/pangram/package.json +5 -5
  97. data/tracks/ecmascript/exercises/pascals-triangle/package.json +5 -5
  98. data/tracks/ecmascript/exercises/perfect-numbers/package.json +5 -5
  99. data/tracks/ecmascript/exercises/phone-number/package.json +5 -5
  100. data/tracks/ecmascript/exercises/pig-latin/package.json +5 -5
  101. data/tracks/ecmascript/exercises/prime-factors/package.json +5 -5
  102. data/tracks/ecmascript/exercises/pythagorean-triplet/package.json +5 -5
  103. data/tracks/ecmascript/exercises/queen-attack/package.json +5 -5
  104. data/tracks/ecmascript/exercises/raindrops/package.json +5 -5
  105. data/tracks/ecmascript/exercises/rna-transcription/package.json +5 -5
  106. data/tracks/ecmascript/exercises/robot-name/package.json +5 -5
  107. data/tracks/ecmascript/exercises/robot-simulator/package.json +5 -5
  108. data/tracks/ecmascript/exercises/roman-numerals/package.json +5 -5
  109. data/tracks/ecmascript/exercises/run-length-encoding/README.md +59 -0
  110. data/tracks/ecmascript/exercises/run-length-encoding/example.js +13 -0
  111. data/tracks/ecmascript/exercises/run-length-encoding/package.json +69 -0
  112. data/tracks/ecmascript/exercises/run-length-encoding/run-length-encoding.spec.js +59 -0
  113. data/tracks/ecmascript/exercises/saddle-points/package.json +5 -5
  114. data/tracks/ecmascript/exercises/say/package.json +5 -5
  115. data/tracks/ecmascript/exercises/scrabble-score/package.json +5 -5
  116. data/tracks/ecmascript/exercises/secret-handshake/package.json +5 -5
  117. data/tracks/ecmascript/exercises/series/package.json +5 -5
  118. data/tracks/ecmascript/exercises/sieve/package.json +5 -5
  119. data/tracks/ecmascript/exercises/simple-cipher/package.json +5 -5
  120. data/tracks/ecmascript/exercises/space-age/package.json +5 -5
  121. data/tracks/ecmascript/exercises/strain/package.json +5 -5
  122. data/tracks/ecmascript/exercises/sublist/package.json +5 -5
  123. data/tracks/ecmascript/exercises/sum-of-multiples/package.json +5 -5
  124. data/tracks/ecmascript/exercises/triangle/package.json +5 -5
  125. data/tracks/ecmascript/exercises/trinary/package.json +5 -5
  126. data/tracks/ecmascript/exercises/twelve-days/package.json +6 -5
  127. data/tracks/ecmascript/exercises/two-bucket/package.json +5 -5
  128. data/tracks/ecmascript/exercises/word-count/package.json +5 -5
  129. data/tracks/ecmascript/exercises/wordy/package.json +5 -5
  130. data/tracks/ecmascript/package.json +5 -5
  131. data/tracks/ecmascript/yarn.lock +403 -152
  132. data/tracks/elixir/docs/ABOUT.md +7 -20
  133. data/tracks/erlang/docs/ABOUT.md +4 -6
  134. data/tracks/fsharp/config.json +2 -1
  135. data/tracks/fsharp/docs/ABOUT.md +6 -2
  136. data/tracks/gnu-apl/.gitignore +4 -0
  137. data/tracks/gnu-apl/.travis.yml +5 -0
  138. data/tracks/gnu-apl/LICENSE +21 -0
  139. data/tracks/gnu-apl/README.md +67 -0
  140. data/tracks/gnu-apl/bin/fetch-configlet +32 -0
  141. data/tracks/gnu-apl/config.json +15 -0
  142. data/tracks/{scala/exercises/binary-search/src/main/scala/BinarySearch.scala → gnu-apl/config/exercise-readme-insert.md} +0 -0
  143. data/tracks/gnu-apl/config/exercise-readme.go.tmpl +16 -0
  144. data/tracks/gnu-apl/config/maintainers.json +6 -0
  145. data/tracks/gnu-apl/docs/ABOUT.md +0 -0
  146. data/tracks/gnu-apl/docs/INSTALLATION.md +0 -0
  147. data/tracks/gnu-apl/docs/LEARNING.md +0 -0
  148. data/tracks/gnu-apl/docs/RESOURCES.md +0 -0
  149. data/tracks/gnu-apl/docs/TESTS.md +0 -0
  150. data/tracks/gnu-apl/img/.keep +0 -0
  151. data/tracks/go/docs/ABOUT.md +4 -2
  152. data/tracks/go/exercises/pangram/example.go +1 -1
  153. data/tracks/go/exercises/pangram/pangram.go +1 -1
  154. data/tracks/go/exercises/pangram/pangram_test.go +1 -3
  155. data/tracks/groovy/README.md +2 -0
  156. data/tracks/groovy/config.json +25 -20
  157. data/tracks/groovy/docs/ABOUT.md +10 -3
  158. data/tracks/groovy/exercises/difference-of-squares/DifferenceOfSquares.groovy +19 -0
  159. data/tracks/groovy/exercises/difference-of-squares/{SquaresSpec.groovy → DifferenceOfSquaresSpec.groovy} +3 -3
  160. data/tracks/groovy/exercises/difference-of-squares/Example.groovy +1 -1
  161. data/tracks/groovy/exercises/hamming/Hamming.groovy +7 -0
  162. data/tracks/groovy/exercises/leap/Example.groovy +2 -2
  163. data/tracks/groovy/exercises/leap/Leap.groovy +11 -0
  164. data/tracks/groovy/exercises/leap/LeapSpec.groovy +4 -4
  165. data/tracks/groovy/exercises/nth-prime/Example.groovy +1 -1
  166. data/tracks/groovy/exercises/nth-prime/NthPrime.groovy +7 -0
  167. data/tracks/groovy/exercises/nth-prime/{PrimeSpec.groovy → NthPrimeSpec.groovy} +6 -6
  168. data/tracks/groovy/exercises/phone-number/PhoneNumber.groovy +17 -0
  169. data/tracks/groovy/exercises/raindrops/Raindrops.groovy +7 -0
  170. data/tracks/groovy/exercises/rna-transcription/Example.groovy +1 -1
  171. data/tracks/groovy/exercises/rna-transcription/RnaTranscription.groovy +7 -0
  172. data/tracks/groovy/exercises/rna-transcription/{ComplementSpec.groovy → RnaTranscriptionSpec.groovy} +2 -2
  173. data/tracks/groovy/exercises/robot-name/Example.groovy +2 -2
  174. data/tracks/groovy/exercises/robot-name/RobotName.groovy +9 -0
  175. data/tracks/groovy/exercises/robot-name/{RobotSpec.groovy → RobotNameSpec.groovy} +6 -6
  176. data/tracks/groovy/exercises/roman-numerals/Example.groovy +2 -2
  177. data/tracks/groovy/exercises/roman-numerals/RomanNumerals.groovy +7 -0
  178. data/tracks/groovy/exercises/roman-numerals/{RomanSpec.groovy → RomanNumeralsSpec.groovy} +2 -2
  179. data/tracks/groovy/exercises/word-count/Example.groovy +2 -2
  180. data/tracks/groovy/exercises/word-count/{Phrase.groovy → WordCount.groovy} +2 -2
  181. data/tracks/groovy/exercises/word-count/WordCountSpec.groovy +47 -0
  182. data/tracks/java/config.json +84 -74
  183. data/tracks/java/docs/ABOUT.md +11 -5
  184. data/tracks/java/exercises/house/README.md +124 -0
  185. data/tracks/java/exercises/house/build.gradle +18 -0
  186. data/tracks/java/exercises/house/src/example/java/House.java +55 -0
  187. data/tracks/java/exercises/house/src/main/java/.keep +0 -0
  188. data/tracks/java/exercises/house/src/test/java/HouseTest.java +341 -0
  189. data/tracks/java/exercises/minesweeper/src/example/java/MinesweeperBoard.java +3 -3
  190. data/tracks/java/exercises/series/src/test/java/SeriesTest.java +6 -5
  191. data/tracks/java/exercises/settings.gradle +1 -0
  192. data/tracks/java/exercises/two-fer/src/test/java/TwoferTest.java +9 -0
  193. data/tracks/javascript/exercises/circular-buffer/circular-buffer.spec.js +8 -0
  194. data/tracks/javascript/exercises/simple-cipher/README.md +1 -1
  195. data/tracks/kotlin/docs/ABOUT.md +7 -10
  196. data/tracks/lisp/.travis.yml +26 -11
  197. data/tracks/purescript/docs/ABOUT.md +16 -0
  198. data/tracks/r/config.json +1 -1
  199. data/tracks/r/config/maintainers.json +9 -9
  200. data/tracks/r/docs/ABOUT.md +9 -11
  201. data/tracks/r/docs/snippet.txt +10 -0
  202. data/tracks/ruby/docs/ABOUT.md +5 -5
  203. data/tracks/ruby/exercises/collatz-conjecture/.meta/generator/collatz_conjecture_case.rb +1 -2
  204. data/tracks/ruby/exercises/space-age/.meta/generator/space_age_case.rb +1 -2
  205. data/tracks/ruby/exercises/sum-of-multiples/.meta/generator/sum_of_multiples_case.rb +1 -1
  206. data/tracks/ruby/lib/generator/exercise_case.rb +15 -0
  207. data/tracks/scala/exercises/alphametics/src/test/scala/AlphameticsTest.scala +42 -28
  208. data/tracks/scala/exercises/binary-search/example.scala +1 -1
  209. data/tracks/scala/exercises/binary-search/src/main/scala/.keep +0 -0
  210. data/tracks/scala/exercises/binary-search/src/test/scala/BinarySearchTest.scala +13 -22
  211. data/tracks/scala/exercises/bowling/src/main/scala/.keep +0 -0
  212. data/tracks/scala/exercises/bowling/src/test/scala/BowlingSuite.scala +30 -17
  213. data/tracks/scala/exercises/change/src/test/scala/ChangeTest.scala +14 -4
  214. data/tracks/scala/exercises/custom-set/src/test/scala/CustomSetTest.scala +6 -4
  215. data/tracks/scala/exercises/food-chain/example.scala +4 -2
  216. data/tracks/scala/exercises/food-chain/src/test/scala/FoodChainTest.scala +170 -59
  217. data/tracks/scala/exercises/luhn/example.scala +9 -21
  218. data/tracks/scala/exercises/luhn/src/test/scala/LuhnTest.scala +46 -10
  219. data/tracks/scala/testgen/src/main/scala/AlphametricsTestGenerator.scala +42 -0
  220. data/tracks/scala/testgen/src/main/scala/BinarySearchTestGenerator.scala +32 -42
  221. data/tracks/scala/testgen/src/main/scala/BowlingTestGenerator.scala +22 -7
  222. data/tracks/scala/testgen/src/main/scala/ChangeTestGenerator.scala +37 -0
  223. data/tracks/scala/testgen/src/main/scala/CustomSetTestGenerator.scala +25 -20
  224. data/tracks/scala/testgen/src/main/scala/FoodChainTestGenerator.scala +13 -2
  225. data/tracks/scala/testgen/src/main/scala/LuhnTestGenerator.scala +15 -0
  226. data/tracks/scala/testgen/src/main/scala/TestBuilder.scala +10 -0
  227. data/tracks/sml/.travis.yml +9 -2
  228. data/tracks/sml/Makefile +42 -0
  229. data/tracks/sml/docs/EXERCISE_README_INSERT.md +21 -5
  230. data/tracks/sml/docs/RESOURCES.md +1 -1
  231. data/tracks/sml/docs/TESTS.md +2 -2
  232. metadata +67 -17
  233. data/tracks/bash/exercises/word-count/README.md +0 -24
  234. data/tracks/bash/exercises/word-count/example.awk +0 -12
  235. data/tracks/bash/exercises/word-count/example.sh +0 -21
  236. data/tracks/dart/.github/PULL_REQUEST_TEMPLATE.md +0 -23
  237. data/tracks/ecmascript/.babelrc +0 -3
  238. data/tracks/groovy/exercises/roman-numerals/Roman.groovy +0 -33
  239. data/tracks/groovy/exercises/word-count/PhraseSpec.groovy +0 -47
  240. data/tracks/scala/exercises/bowling/src/main/scala/Bowling.scala +0 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 68910c17056f60fa936005d660ffee60c7f48457
4
- data.tar.gz: 85f24b00eec2d4e267fd48b7a095e6303df04450
3
+ metadata.gz: 643c800ff499662b7d1b27b73254935090d5ef8f
4
+ data.tar.gz: 3a8a383cb166273a7fda7b0bcd2d54a51a2cfe84
5
5
  SHA512:
6
- metadata.gz: 2aa11d5c09f99c3c200621296e17b94ec72dc89190ba2b3b73e844faae7496b99b806dd8c8458482df515d89a9cf8495687834ca749144797cc3698ed30f01d1
7
- data.tar.gz: 9bb954088ac4a7953d124b6506b7b64afea1155d8668fe1b6e2db83af7aa3134dd650327ee90a48855d763830c5fbdaccfe157fd4a09d0251d02e7959cf6eeb4
6
+ metadata.gz: 0b2738e867cb7248a54e07e83dc85d7b8df3dcefae27008200b94b690981818cc63ff66a94a2d424443af8e4102d0dbd995c4c4f10a327efb1e8d1f0a44702dd
7
+ data.tar.gz: 120adbf3d5a0b0ccf504fa10f2786b5dfad66c97381cbe61b5b596ee4b033626d193f77d3f8317fb086a8124b57f55a7b4c83a8a49738f60dbfa10f0be5c9df2
data/.gitmodules CHANGED
@@ -172,3 +172,6 @@
172
172
  [submodule "problem-specifications"]
173
173
  path = problem-specifications
174
174
  url = https://github.com/exercism/problem-specifications
175
+ [submodule "tracks/gnu-apl"]
176
+ path = tracks/gnu-apl
177
+ url = https://github.com/exercism/gnu-apl
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.2.1.10"
2
+ VERSION = "2.2.1.11"
3
3
  end
@@ -317,7 +317,7 @@ scenarios in this guide.
317
317
 
318
318
  ### Pull Request Guidelines
319
319
 
320
- See the [pull request guidelines](https://github.com/exercism/docs/blob/master/contributing-to-language-tracks/pull-request-guidelines.md) in the docs repository.
320
+ See the [pull request guidelines](https://github.com/exercism/docs/blob/master/contributing/pull-request-guidelines.md) in the docs repository.
321
321
 
322
322
  ### Exercise Versioning
323
323
 
@@ -56,6 +56,7 @@ Games
56
56
  Globalization
57
57
  Logic
58
58
  Mathematics
59
+ Memory Management
59
60
  Networking
60
61
  Parallellism
61
62
  Parsing
@@ -22,6 +22,3 @@ Check out the test suite to see the expected function signature.
22
22
  Keep your hands off that collect/map/fmap/whatchamacallit functionality
23
23
  provided by your standard library!
24
24
  Solve this one yourself using other basic tools instead.
25
-
26
- Lisp specific: it's perfectly fine to use `MAPCAR` or the equivalent,
27
- as this is idiomatic Lisp, not a library function.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "exercise": "hamming",
3
- "version": "1.1.0",
3
+ "version": "2.0.0",
4
4
  "comments": [
5
5
  "Language implementations vary on the issue of unequal length strands.",
6
6
  "A language may elect to simplify this task by only presenting equal",
@@ -110,14 +110,14 @@
110
110
  "property": "distance",
111
111
  "strand1": "AATG",
112
112
  "strand2": "AAA",
113
- "expected": -1
113
+ "expected": {"error": "left and right strands must be of equal length"}
114
114
  },
115
115
  {
116
116
  "description": "disallow second strand longer",
117
117
  "property": "distance",
118
118
  "strand1": "ATA",
119
119
  "strand2": "AGTG",
120
- "expected": -1
120
+ "expected": {"error": "left and right strands must be of equal length"}
121
121
  }
122
122
  ]
123
123
  }
@@ -0,0 +1,322 @@
1
+ {
2
+ "exercise": "house",
3
+ "version": "1.0.0",
4
+ "comments": [
5
+ "JSON doesn't allow for multi-line strings, so all verses are presented ",
6
+ "here as arrays of strings. It's up to the test generator to join the ",
7
+ "lines together with line breaks.",
8
+ "Some languages test for the verse() method, which takes a start verse ",
9
+ "and optional end verse, but other languages have only tested for the full poem.",
10
+ "For those languages in the latter category, you may wish to only ",
11
+ "implement the full song test and leave the rest alone, ignoring the start verse, ",
12
+ "end verse, and verse fields."
13
+ ],
14
+ "cases": [
15
+ {
16
+ "description": "Return specified verse or series of verses",
17
+ "cases": [
18
+ {
19
+ "description": "verse one - the house that jack built",
20
+ "property": "verse",
21
+ "verse": 1,
22
+ "expected": [
23
+ "This is the house that Jack built."
24
+ ]
25
+ },
26
+ {
27
+ "description": "verse two - the malt that lay",
28
+ "property": "verse",
29
+ "verse": 2,
30
+ "expected": [
31
+ "This is the malt",
32
+ "that lay in the house that Jack built."
33
+ ]
34
+ },
35
+ {
36
+ "description": "verse three - the rat that ate",
37
+ "property": "verse",
38
+ "verse": 3,
39
+ "expected": [
40
+ "This is the rat",
41
+ "that ate the malt",
42
+ "that lay in the house that Jack built."
43
+ ]
44
+ },
45
+ {
46
+ "description": "verse four - the cat that killed",
47
+ "property": "verse",
48
+ "verse": 4,
49
+ "expected": [
50
+ "This is the cat",
51
+ "that killed the rat",
52
+ "that ate the malt",
53
+ "that lay in the house that Jack built."
54
+ ]
55
+ },
56
+ {
57
+ "description": "verse five - the dog that worried",
58
+ "property": "verse",
59
+ "verse": 5,
60
+ "expected": [
61
+ "This is the dog",
62
+ "that worried the cat",
63
+ "that killed the rat",
64
+ "that ate the malt",
65
+ "that lay in the house that Jack built."
66
+ ]
67
+ },
68
+ {
69
+ "description": "verse six - the cow with the crumpled horn",
70
+ "property": "verse",
71
+ "verse": 6,
72
+ "expected": [
73
+ "This is the cow with the crumpled horn",
74
+ "that tossed the dog",
75
+ "that worried the cat",
76
+ "that killed the rat",
77
+ "that ate the malt",
78
+ "that lay in the house that Jack built."
79
+ ]
80
+ },
81
+ {
82
+ "description": "verse seven - the maiden all forlorn",
83
+ "property": "verse",
84
+ "verse": 7,
85
+ "expected": [
86
+ "This is the maiden all forlorn",
87
+ "that milked the cow with the crumpled horn",
88
+ "that tossed the dog",
89
+ "that worried the cat",
90
+ "that killed the rat",
91
+ "that ate the malt",
92
+ "that lay in the house that Jack built."
93
+ ]
94
+ },
95
+ {
96
+ "description": "verse eight - the man all tattered and torn",
97
+ "property": "verse",
98
+ "verse": 8,
99
+ "expected": [
100
+ "This is the man all tattered and torn",
101
+ "that kissed the maiden all forlorn",
102
+ "that milked the cow with the crumpled horn",
103
+ "that tossed the dog",
104
+ "that worried the cat",
105
+ "that killed the rat",
106
+ "that ate the malt",
107
+ "that lay in the house that Jack built."
108
+ ]
109
+ },
110
+ {
111
+ "description": "verse nine - the priest all shaven and shorn",
112
+ "property": "verse",
113
+ "verse": 9,
114
+ "expected": [
115
+ "This is the priest all shaven and shorn",
116
+ "that married the man all tattered and torn",
117
+ "that kissed the maiden all forlorn",
118
+ "that milked the cow with the crumpled horn",
119
+ "that tossed the dog",
120
+ "that worried the cat",
121
+ "that killed the rat",
122
+ "that ate the malt",
123
+ "that lay in the house that Jack built."
124
+ ]
125
+ },
126
+ {
127
+ "description": "verse 10 - the rooster that crowed in the morn",
128
+ "property": "verse",
129
+ "verse": 10,
130
+ "expected": [
131
+ "This is the rooster that crowed in the morn",
132
+ "that woke the priest all shaven and shorn",
133
+ "that married the man all tattered and torn",
134
+ "that kissed the maiden all forlorn",
135
+ "that milked the cow with the crumpled horn",
136
+ "that tossed the dog",
137
+ "that worried the cat",
138
+ "that killed the rat",
139
+ "that ate the malt",
140
+ "that lay in the house that Jack built."
141
+ ]
142
+ },
143
+ {
144
+ "description": "verse 11 - the farmer sowing his corn",
145
+ "property": "verse",
146
+ "verse": 11,
147
+ "expected": [
148
+ "This is the farmer sowing his corn",
149
+ "that kept the rooster that crowed in the morn",
150
+ "that woke the priest all shaven and shorn",
151
+ "that married the man all tattered and torn",
152
+ "that kissed the maiden all forlorn",
153
+ "that milked the cow with the crumpled horn",
154
+ "that tossed the dog",
155
+ "that worried the cat",
156
+ "that killed the rat",
157
+ "that ate the malt",
158
+ "that lay in the house that Jack built."
159
+ ]
160
+ },
161
+ {
162
+ "description": "verse 12 - the horse and the hound and the horn",
163
+ "property": "verse",
164
+ "verse": 12,
165
+ "expected": [
166
+ "This is the horse and the hound and the horn",
167
+ "that belonged to the farmer sowing his corn",
168
+ "that kept the rooster that crowed in the morn",
169
+ "that woke the priest all shaven and shorn",
170
+ "that married the man all tattered and torn",
171
+ "that kissed the maiden all forlorn",
172
+ "that milked the cow with the crumpled horn",
173
+ "that tossed the dog",
174
+ "that worried the cat",
175
+ "that killed the rat",
176
+ "that ate the malt",
177
+ "that lay in the house that Jack built."
178
+ ]
179
+ },
180
+ {
181
+ "description": "multiple verses",
182
+ "property": "verses",
183
+ "start verse": 4,
184
+ "end verse": 8,
185
+ "expected": [
186
+ "This is the cat",
187
+ "that killed the rat",
188
+ "that ate the malt",
189
+ "that lay in the house that Jack built.",
190
+ "",
191
+ "This is the dog",
192
+ "that worried the cat",
193
+ "that killed the rat",
194
+ "that ate the malt",
195
+ "that lay in the house that Jack built.",
196
+ "",
197
+ "This is the cow with the crumpled horn",
198
+ "that tossed the dog",
199
+ "that worried the cat",
200
+ "that killed the rat",
201
+ "that ate the malt",
202
+ "that lay in the house that Jack built.",
203
+ "",
204
+ "This is the maiden all forlorn",
205
+ "that milked the cow with the crumpled horn",
206
+ "that tossed the dog",
207
+ "that worried the cat",
208
+ "that killed the rat",
209
+ "that ate the malt",
210
+ "that lay in the house that Jack built.",
211
+ "",
212
+ "This is the man all tattered and torn",
213
+ "that kissed the maiden all forlorn",
214
+ "that milked the cow with the crumpled horn",
215
+ "that tossed the dog",
216
+ "that worried the cat",
217
+ "that killed the rat",
218
+ "that ate the malt",
219
+ "that lay in the house that Jack built."
220
+ ]
221
+ },
222
+ {
223
+ "description": "full rhyme",
224
+ "property": "verses",
225
+ "start verse": 1,
226
+ "end verse": 12,
227
+ "expected": [
228
+ "This is the house that Jack built.",
229
+ "",
230
+ "This is the malt",
231
+ "that lay in the house that Jack built.",
232
+ "",
233
+ "This is the rat",
234
+ "that ate the malt",
235
+ "that lay in the house that Jack built.",
236
+ "",
237
+ "This is the cat",
238
+ "that killed the rat",
239
+ "that ate the malt",
240
+ "that lay in the house that Jack built.",
241
+ "",
242
+ "This is the dog",
243
+ "that worried the cat",
244
+ "that killed the rat",
245
+ "that ate the malt",
246
+ "that lay in the house that Jack built.",
247
+ "",
248
+ "This is the cow with the crumpled horn",
249
+ "that tossed the dog",
250
+ "that worried the cat",
251
+ "that killed the rat",
252
+ "that ate the malt",
253
+ "that lay in the house that Jack built.",
254
+ "",
255
+ "This is the maiden all forlorn",
256
+ "that milked the cow with the crumpled horn",
257
+ "that tossed the dog",
258
+ "that worried the cat",
259
+ "that killed the rat",
260
+ "that ate the malt",
261
+ "that lay in the house that Jack built.",
262
+ "",
263
+ "This is the man all tattered and torn",
264
+ "that kissed the maiden all forlorn",
265
+ "that milked the cow with the crumpled horn",
266
+ "that tossed the dog",
267
+ "that worried the cat",
268
+ "that killed the rat",
269
+ "that ate the malt",
270
+ "that lay in the house that Jack built.",
271
+ "",
272
+ "This is the priest all shaven and shorn",
273
+ "that married the man all tattered and torn",
274
+ "that kissed the maiden all forlorn",
275
+ "that milked the cow with the crumpled horn",
276
+ "that tossed the dog",
277
+ "that worried the cat",
278
+ "that killed the rat",
279
+ "that ate the malt",
280
+ "that lay in the house that Jack built.",
281
+ "",
282
+ "This is the rooster that crowed in the morn",
283
+ "that woke the priest all shaven and shorn",
284
+ "that married the man all tattered and torn",
285
+ "that kissed the maiden all forlorn",
286
+ "that milked the cow with the crumpled horn",
287
+ "that tossed the dog",
288
+ "that worried the cat",
289
+ "that killed the rat",
290
+ "that ate the malt",
291
+ "that lay in the house that Jack built.",
292
+ "",
293
+ "This is the farmer sowing his corn",
294
+ "that kept the rooster that crowed in the morn",
295
+ "that woke the priest all shaven and shorn",
296
+ "that married the man all tattered and torn",
297
+ "that kissed the maiden all forlorn",
298
+ "that milked the cow with the crumpled horn",
299
+ "that tossed the dog",
300
+ "that worried the cat",
301
+ "that killed the rat",
302
+ "that ate the malt",
303
+ "that lay in the house that Jack built.",
304
+ "",
305
+ "This is the horse and the hound and the horn",
306
+ "that belonged to the farmer sowing his corn",
307
+ "that kept the rooster that crowed in the morn",
308
+ "that woke the priest all shaven and shorn",
309
+ "that married the man all tattered and torn",
310
+ "that kissed the maiden all forlorn",
311
+ "that milked the cow with the crumpled horn",
312
+ "that tossed the dog",
313
+ "that worried the cat",
314
+ "that killed the rat",
315
+ "that ate the malt",
316
+ "that lay in the house that Jack built."
317
+ ]
318
+ }
319
+ ]
320
+ }
321
+ ]
322
+ }
@@ -12,7 +12,7 @@ product: `91 * 99 = 9009`.
12
12
 
13
13
  It's possible (and indeed common) for a palindrome product to be the product
14
14
  of multiple combinations of numbers. For example, the palindrome product `9` has
15
- the factors `(1, 9)`, `(3, 3)`, and `(9, 1)`.
15
+ the factors `(1, 9)` and `(3, 3)`.
16
16
 
17
17
  Write a program that given a range of integers, returns the smallest and largest
18
18
  palindromic product of factors within that range, along with all the factors in the range for that product.
@@ -22,7 +22,7 @@ palindromic product of factors within that range, along with all the factors in
22
22
  Given the range `[1, 9]` (both inclusive)...
23
23
 
24
24
  The smallest product is `1`. Its factors are `(1, 1)`.
25
- The largest product is `9`. Its factors are `(1, 9)`, `(3, 3)`, and `(9, 1)`.
25
+ The largest product is `9`. Its factors are `(1, 9)`, and `(3, 3)`.
26
26
 
27
27
  ## Example 2
28
28
 
@@ -45,7 +45,7 @@ Given the key "aaaaaaaaaaaaaaaaaa", encoding the string "iamapandabear"
45
45
  would return the original "iamapandabear".
46
46
 
47
47
  Given the key "ddddddddddddddddd", encoding our string "iamapandabear"
48
- would return the obscured "lpdsdqgdehdu"
48
+ would return the obscured "ldpdsdqgdehdu"
49
49
 
50
50
  In the example above, we've set a = 0 for the key value. So when the
51
51
  plaintext is added to the key, we end up with the same message coming
@@ -109,17 +109,6 @@
109
109
  "associative_arrays"
110
110
  ]
111
111
  },
112
- {
113
- "uuid": "51bd6542-408b-4a73-8343-1c4d50db5315",
114
- "slug": "word-count",
115
- "core": false,
116
- "unlocked_by": "pangram",
117
- "difficulty": 2,
118
- "topics": [
119
- "control_flow_loops",
120
- "string_comparison"
121
- ]
122
- },
123
112
  {
124
113
  "uuid": "0cfac255-6871-4588-a16b-98f7692bfdbe",
125
114
  "slug": "two-fer",