trackler 2.2.1.28 → 2.2.1.29

Sign up to get free protection for your applications and to get access to all the features.
Files changed (276) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/cpp/CMakeLists.txt +1 -0
  4. data/tracks/cpp/config.json +11 -0
  5. data/tracks/cpp/exercises/pangram/CMakeLists.txt +52 -0
  6. data/tracks/cpp/exercises/pangram/example.cpp +35 -0
  7. data/tracks/cpp/exercises/pangram/example.h +11 -0
  8. data/tracks/cpp/exercises/pangram/pangram_test.cpp +50 -0
  9. data/tracks/csharp/generators/Exercises/FoodChain.cs +1 -1
  10. data/tracks/csharp/generators/Exercises/House.cs +1 -1
  11. data/tracks/csharp/generators/Exercises/Transpose.cs +2 -2
  12. data/tracks/csharp/generators/{Exercises/Convert.cs → Input/ConvertHelper.cs} +2 -2
  13. data/tracks/go/gen/gen.go +15 -6
  14. data/tracks/java/CONTRIBUTING.md +3 -3
  15. data/tracks/java/bin/journey-test.sh +2 -2
  16. data/tracks/java/config.json +2 -1
  17. data/tracks/java/exercises/accumulate/{src/example → .meta/src/reference}/java/Accumulate.java +0 -0
  18. data/tracks/java/exercises/acronym/{src/example → .meta/src/reference}/java/Acronym.java +0 -0
  19. data/tracks/java/exercises/all-your-base/{src/example → .meta/src/reference}/java/BaseConverter.java +0 -0
  20. data/tracks/java/exercises/allergies/{src/example → .meta/src/reference}/java/Allergen.java +0 -0
  21. data/tracks/java/exercises/allergies/{src/example → .meta/src/reference}/java/Allergies.java +0 -0
  22. data/tracks/java/exercises/anagram/{src/example → .meta/src/reference}/java/Anagram.java +0 -0
  23. data/tracks/java/exercises/atbash-cipher/{src/example → .meta/src/reference}/java/Atbash.java +0 -0
  24. data/tracks/java/exercises/bank-account/{src/example → .meta/src/reference}/java/BankAccount.java +0 -0
  25. data/tracks/java/exercises/bank-account/{src/example → .meta/src/reference}/java/BankAccountActionInvalidException.java +0 -0
  26. data/tracks/java/exercises/beer-song/{src/example → .meta/src/reference}/java/BeerSong.java +0 -0
  27. data/tracks/java/exercises/binary-search-tree/{src/example → .meta/src/reference}/java/BST.java +0 -0
  28. data/tracks/java/exercises/binary-search/{src/example → .meta/src/reference}/java/BinarySearch.java +0 -0
  29. data/tracks/java/exercises/binary/{src/example → .meta/src/reference}/java/Binary.java +0 -0
  30. data/tracks/java/exercises/bob/{src/example → .meta/src/reference}/java/Bob.java +0 -0
  31. data/tracks/java/exercises/book-store/{src/example → .meta/src/reference}/java/.keep +0 -0
  32. data/tracks/java/exercises/book-store/{src/example → .meta/src/reference}/java/BookStore.java +0 -0
  33. data/tracks/java/exercises/bowling/{src/example → .meta/src/reference}/java/BowlingGame.java +0 -0
  34. data/tracks/java/exercises/bracket-push/{src/example → .meta/src/reference}/java/BracketChecker.java +0 -0
  35. data/tracks/java/exercises/build.gradle +4 -4
  36. data/tracks/java/exercises/change/{src/example → .meta/src/reference}/java/ChangeCalculator.java +0 -0
  37. data/tracks/java/exercises/circular-buffer/{src/example → .meta/src/reference}/java/BufferIOException.java +0 -0
  38. data/tracks/java/exercises/circular-buffer/{src/example → .meta/src/reference}/java/CircularBuffer.java +0 -0
  39. data/tracks/java/exercises/clock/{src/example → .meta/src/reference}/java/Clock.java +0 -0
  40. data/tracks/java/exercises/collatz-conjecture/{src/example → .meta/src/reference}/java/CollatzCalculator.java +0 -0
  41. data/tracks/java/exercises/complex-numbers/{src/example → .meta/src/reference}/java/ComplexNumber.java +0 -0
  42. data/tracks/java/exercises/crypto-square/{src/example → .meta/src/reference}/java/Crypto.java +0 -0
  43. data/tracks/java/exercises/custom-set/{src/example → .meta/src/reference}/java/CustomSet.java +0 -0
  44. data/tracks/java/exercises/diamond/{src/example → .meta/src/reference}/java/DiamondPrinter.java +0 -0
  45. data/tracks/java/exercises/difference-of-squares/{src/example → .meta/src/reference}/java/DifferenceOfSquaresCalculator.java +0 -0
  46. data/tracks/java/exercises/etl/{src/example → .meta/src/reference}/java/Etl.java +0 -0
  47. data/tracks/java/exercises/flatten-array/{src/example → .meta/src/reference}/java/Flattener.java +0 -0
  48. data/tracks/java/exercises/food-chain/{src/example → .meta/src/reference}/java/FoodChain.java +0 -0
  49. data/tracks/java/exercises/forth/{src/example → .meta/src/reference}/java/ForthEvaluator.java +0 -0
  50. data/tracks/java/exercises/forth/{src/example → .meta/src/reference}/java/Token.java +0 -0
  51. data/tracks/java/exercises/gigasecond/{src/example → .meta/src/reference}/java/Gigasecond.java +0 -0
  52. data/tracks/java/exercises/grade-school/{src/example → .meta/src/reference}/java/School.java +0 -0
  53. data/tracks/java/exercises/hamming/{src/example → .meta/src/reference}/java/Hamming.java +0 -0
  54. data/tracks/java/exercises/hello-world/{src/example → .meta/src/reference}/java/Greeter.java +0 -0
  55. data/tracks/java/exercises/hexadecimal/{src/example → .meta/src/reference}/java/Hexadecimal.java +0 -0
  56. data/tracks/java/exercises/house/{src/example → .meta/src/reference}/java/House.java +0 -0
  57. data/tracks/java/exercises/isogram/{src/example → .meta/src/reference}/java/IsogramChecker.java +0 -0
  58. data/tracks/java/exercises/kindergarten-garden/{src/example → .meta/src/reference}/java/KindergartenGarden.java +0 -0
  59. data/tracks/java/exercises/kindergarten-garden/{src/example → .meta/src/reference}/java/Plant.java +0 -0
  60. data/tracks/java/exercises/largest-series-product/{src/example → .meta/src/reference}/java/LargestSeriesProductCalculator.java +0 -0
  61. data/tracks/java/exercises/linked-list/{src/example → .meta/src/reference}/java/DoublyLinkedList.java +0 -0
  62. data/tracks/java/exercises/list-ops/{src/example → .meta/src/reference}/java/ListOps.java +0 -0
  63. data/tracks/java/exercises/luhn/{src/example → .meta/src/reference}/java/LuhnValidator.java +0 -0
  64. data/tracks/java/exercises/matrix/{src/example → .meta/src/reference}/java/Matrix.java +0 -0
  65. data/tracks/java/exercises/meetup/{src/example → .meta/src/reference}/java/Meetup.java +0 -0
  66. data/tracks/java/exercises/meetup/{src/example → .meta/src/reference}/java/MeetupSchedule.java +0 -0
  67. data/tracks/java/exercises/minesweeper/{src/example → .meta/src/reference}/java/MinesweeperBoard.java +0 -0
  68. data/tracks/java/exercises/nth-prime/{src/example → .meta/src/reference}/java/PrimeCalculator.java +0 -0
  69. data/tracks/java/exercises/nucleotide-count/{src/example → .meta/src/reference}/java/NucleotideCounter.java +0 -0
  70. data/tracks/java/exercises/ocr-numbers/{src/example → .meta/src/reference}/java/Digit.java +0 -0
  71. data/tracks/java/exercises/ocr-numbers/{src/example → .meta/src/reference}/java/OpticalCharacterReader.java +0 -0
  72. data/tracks/java/exercises/octal/{src/example → .meta/src/reference}/java/Octal.java +0 -0
  73. data/tracks/java/exercises/palindrome-products/{src/example → .meta/src/reference}/java/PalindromeCalculator.java +0 -0
  74. data/tracks/java/exercises/pangram/{src/example → .meta/src/reference}/java/PangramChecker.java +0 -0
  75. data/tracks/java/exercises/pascals-triangle/{src/example → .meta/src/reference}/java/PascalsTriangleGenerator.java +0 -0
  76. data/tracks/java/exercises/perfect-numbers/{src/example → .meta/src/reference}/java/Classification.java +0 -0
  77. data/tracks/java/exercises/perfect-numbers/{src/example → .meta/src/reference}/java/NaturalNumber.java +0 -0
  78. data/tracks/java/exercises/phone-number/{src/example → .meta/src/reference}/java/PhoneNumber.java +0 -0
  79. data/tracks/java/exercises/pig-latin/{src/example → .meta/src/reference}/java/PigLatinTranslator.java +0 -0
  80. data/tracks/java/exercises/poker/{src/example → .meta/src/reference}/java/Card.java +0 -0
  81. data/tracks/java/exercises/poker/{src/example → .meta/src/reference}/java/Hand.java +0 -0
  82. data/tracks/java/exercises/poker/{src/example → .meta/src/reference}/java/Poker.java +0 -0
  83. data/tracks/java/exercises/prime-factors/{src/example → .meta/src/reference}/java/PrimeFactorsCalculator.java +0 -0
  84. data/tracks/java/exercises/pythagorean-triplet/{src/example → .meta/src/reference}/java/PythagoreanTriplet.java +0 -0
  85. data/tracks/java/exercises/queen-attack/{src/example → .meta/src/reference}/java/BoardCoordinate.java +0 -0
  86. data/tracks/java/exercises/queen-attack/{src/example → .meta/src/reference}/java/QueenAttackCalculator.java +0 -0
  87. data/tracks/java/exercises/raindrops/{src/example → .meta/src/reference}/java/RaindropConverter.java +0 -0
  88. data/tracks/java/exercises/rectangles/{src/example → .meta/src/reference}/java/RectangleCounter.java +0 -0
  89. data/tracks/java/exercises/rna-transcription/{src/example → .meta/src/reference}/java/RnaTranscription.java +0 -0
  90. data/tracks/java/exercises/robot-name/{src/example → .meta/src/reference}/java/Robot.java +0 -0
  91. data/tracks/java/exercises/robot-simulator/{src/example → .meta/src/reference}/java/GridPosition.java +0 -0
  92. data/tracks/java/exercises/robot-simulator/{src/example → .meta/src/reference}/java/Orientation.java +0 -0
  93. data/tracks/java/exercises/robot-simulator/{src/example → .meta/src/reference}/java/Robot.java +0 -0
  94. data/tracks/java/exercises/roman-numerals/{src/example → .meta/src/reference}/java/RomanNumeral.java +0 -0
  95. data/tracks/java/exercises/rotational-cipher/{src/example → .meta/src/reference}/java/RotationalCipher.java +0 -0
  96. data/tracks/java/exercises/run-length-encoding/{src/example → .meta/src/reference}/java/RunLengthEncoding.java +0 -0
  97. data/tracks/java/exercises/saddle-points/{src/example → .meta/src/reference}/java/Matrix.java +0 -0
  98. data/tracks/java/exercises/saddle-points/{src/example → .meta/src/reference}/java/MatrixCoordinate.java +0 -0
  99. data/tracks/java/exercises/scrabble-score/{src/example → .meta/src/reference}/java/Scrabble.java +0 -0
  100. data/tracks/java/exercises/secret-handshake/{src/example → .meta/src/reference}/java/HandshakeCalculator.java +0 -0
  101. data/tracks/java/exercises/secret-handshake/{src/example → .meta/src/reference}/java/Signal.java +0 -0
  102. data/tracks/java/exercises/series/{src/example → .meta/src/reference}/java/Series.java +0 -0
  103. data/tracks/java/exercises/sieve/{src/example → .meta/src/reference}/java/Sieve.java +0 -0
  104. data/tracks/java/exercises/simple-cipher/{src/example → .meta/src/reference}/java/Cipher.java +0 -0
  105. data/tracks/java/exercises/simple-linked-list/{src/example → .meta/src/reference}/java/SimpleLinkedList.java +0 -0
  106. data/tracks/java/exercises/space-age/{src/example → .meta/src/reference}/java/SpaceAge.java +0 -0
  107. data/tracks/java/exercises/spiral-matrix/{src/example → .meta/src/reference}/java/Coordinate.java +0 -0
  108. data/tracks/java/exercises/spiral-matrix/{src/example → .meta/src/reference}/java/Direction.java +0 -0
  109. data/tracks/java/exercises/spiral-matrix/{src/example → .meta/src/reference}/java/SpiralMatrixBuilder.java +0 -0
  110. data/tracks/java/exercises/strain/{src/example → .meta/src/reference}/java/Strain.java +0 -0
  111. data/tracks/java/exercises/sublist/{src/example → .meta/src/reference}/java/Relationship.java +0 -0
  112. data/tracks/java/exercises/sublist/{src/example → .meta/src/reference}/java/RelationshipComputer.java +0 -0
  113. data/tracks/java/exercises/sum-of-multiples/{src/example → .meta/src/reference}/java/SumOfMultiples.java +0 -0
  114. data/tracks/java/exercises/transpose/{src/example → .meta/src/reference}/java/Transpose.java +0 -0
  115. data/tracks/java/exercises/triangle/{src/example → .meta/src/reference}/java/Triangle.java +0 -0
  116. data/tracks/java/exercises/triangle/{src/example → .meta/src/reference}/java/TriangleException.java +0 -0
  117. data/tracks/java/exercises/triangle/{src/example → .meta/src/reference}/java/TriangleKind.java +0 -0
  118. data/tracks/java/exercises/trinary/{src/example → .meta/src/reference}/java/Trinary.java +0 -0
  119. data/tracks/java/exercises/twelve-days/{src/example → .meta/src/reference}/java/TwelveDays.java +0 -0
  120. data/tracks/java/exercises/two-fer/{src/example → .meta/src/reference}/java/Twofer.java +0 -0
  121. data/tracks/java/exercises/word-count/{src/example → .meta/src/reference}/java/WordCount.java +0 -0
  122. data/tracks/java/exercises/word-search/{src/example → .meta/src/reference}/java/Pair.java +0 -0
  123. data/tracks/java/exercises/word-search/{src/example → .meta/src/reference}/java/WordLocation.java +0 -0
  124. data/tracks/java/exercises/word-search/{src/example → .meta/src/reference}/java/WordSearcher.java +0 -0
  125. data/tracks/java/exercises/wordy/{src/example → .meta/src/reference}/java/WordProblemSolver.java +0 -0
  126. data/tracks/java/gradle/wrapper/gradle-wrapper.jar +0 -0
  127. data/tracks/java/gradle/wrapper/gradle-wrapper.properties +2 -2
  128. data/tracks/java/gradlew +3 -3
  129. data/tracks/kotlin/README.md +3 -3
  130. data/tracks/kotlin/_template/build.gradle +1 -1
  131. data/tracks/kotlin/bin/journey-test.sh +1 -1
  132. data/tracks/kotlin/config.json +2 -1
  133. data/tracks/kotlin/exercises/accumulate/{src/example → .meta/src/reference}/kotlin/Accumulate.kt +0 -0
  134. data/tracks/kotlin/exercises/accumulate/build.gradle +1 -1
  135. data/tracks/kotlin/exercises/acronym/{src/example → .meta/src/reference}/kotlin/Acronym.kt +0 -0
  136. data/tracks/kotlin/exercises/acronym/build.gradle +1 -1
  137. data/tracks/kotlin/exercises/all-your-base/{src/example → .meta/src/reference}/kotlin/BaseConverter.kt +0 -0
  138. data/tracks/kotlin/exercises/all-your-base/build.gradle +1 -1
  139. data/tracks/kotlin/exercises/allergies/.meta/src/reference/kotlin/Allergen.kt +1 -0
  140. data/tracks/kotlin/exercises/allergies/{src/example → .meta/src/reference}/kotlin/Allergies.kt +0 -0
  141. data/tracks/kotlin/exercises/allergies/build.gradle +1 -1
  142. data/tracks/kotlin/exercises/anagram/{src/example → .meta/src/reference}/kotlin/Anagram.kt +0 -0
  143. data/tracks/kotlin/exercises/anagram/build.gradle +1 -1
  144. data/tracks/kotlin/exercises/atbash-cipher/{src/example → .meta/src/reference}/kotlin/Atbash.kt +0 -0
  145. data/tracks/kotlin/exercises/atbash-cipher/build.gradle +1 -1
  146. data/tracks/kotlin/exercises/bank-account/{src/example → .meta/src/reference}/kotlin/BankAccount.kt +0 -0
  147. data/tracks/kotlin/exercises/bank-account/build.gradle +1 -1
  148. data/tracks/kotlin/exercises/beer-song/{src/example → .meta/src/reference}/kotlin/BeerSong.kt +0 -0
  149. data/tracks/kotlin/exercises/beer-song/build.gradle +1 -1
  150. data/tracks/kotlin/exercises/binary-search/{src/example → .meta/src/reference}/kotlin/BinarySearch.kt +0 -0
  151. data/tracks/kotlin/exercises/binary-search/build.gradle +1 -1
  152. data/tracks/kotlin/exercises/binary/{src/example → .meta/src/reference}/kotlin/Binary.kt +0 -0
  153. data/tracks/kotlin/exercises/binary/build.gradle +1 -1
  154. data/tracks/kotlin/exercises/bob/{src/example → .meta/src/reference}/kotlin/Bob.kt +0 -0
  155. data/tracks/kotlin/exercises/bob/build.gradle +1 -1
  156. data/tracks/kotlin/exercises/bracket-push/{src/example → .meta/src/reference}/kotlin/BracketPush.kt +0 -0
  157. data/tracks/kotlin/exercises/bracket-push/build.gradle +1 -1
  158. data/tracks/kotlin/exercises/build.gradle +4 -4
  159. data/tracks/kotlin/exercises/change/{src/example → .meta/src/reference}/kotlin/ChangeCalculator.kt +0 -0
  160. data/tracks/kotlin/exercises/change/build.gradle +1 -1
  161. data/tracks/kotlin/exercises/clock/{src/example → .meta/src/reference}/kotlin/Clock.kt +0 -0
  162. data/tracks/kotlin/exercises/clock/build.gradle +1 -1
  163. data/tracks/kotlin/exercises/collatz-conjecture/{src/example → .meta/src/reference}/kotlin/CollatzCalculator.kt +0 -0
  164. data/tracks/kotlin/exercises/collatz-conjecture/build.gradle +1 -1
  165. data/tracks/kotlin/exercises/complex-numbers/{src/example → .meta/src/reference}/kotlin/ComplexNumber.kt +0 -0
  166. data/tracks/kotlin/exercises/complex-numbers/build.gradle +1 -1
  167. data/tracks/kotlin/exercises/diamond/{src/example → .meta/src/reference}/kotlin/DiamondPrinter.kt +0 -0
  168. data/tracks/kotlin/exercises/diamond/build.gradle +1 -1
  169. data/tracks/kotlin/exercises/difference-of-squares/{src/example → .meta/src/reference}/kotlin/Squares.kt +0 -0
  170. data/tracks/kotlin/exercises/difference-of-squares/build.gradle +1 -1
  171. data/tracks/kotlin/exercises/etl/{src/example → .meta/src/reference}/kotlin/ETL.kt +0 -0
  172. data/tracks/kotlin/exercises/etl/build.gradle +1 -1
  173. data/tracks/kotlin/exercises/flatten-array/{src/example → .meta/src/reference}/kotlin/Flattener.kt +0 -0
  174. data/tracks/kotlin/exercises/flatten-array/build.gradle +1 -1
  175. data/tracks/kotlin/exercises/forth/{src/example → .meta/src/reference}/kotlin/ForthEvaluator.kt +0 -0
  176. data/tracks/kotlin/exercises/forth/build.gradle +1 -1
  177. data/tracks/kotlin/exercises/gigasecond/{src/example → .meta/src/reference}/kotlin/Gigasecond.kt +0 -0
  178. data/tracks/kotlin/exercises/gigasecond/build.gradle +1 -1
  179. data/tracks/kotlin/exercises/grade-school/{src/example → .meta/src/reference}/kotlin/School.kt +0 -0
  180. data/tracks/kotlin/exercises/grade-school/build.gradle +1 -1
  181. data/tracks/kotlin/exercises/grains/{src/example → .meta/src/reference}/kotlin/Board.kt +0 -0
  182. data/tracks/kotlin/exercises/grains/build.gradle +1 -1
  183. data/tracks/kotlin/exercises/hamming/{src/example → .meta/src/reference}/kotlin/Hamming.kt +0 -0
  184. data/tracks/kotlin/exercises/hamming/build.gradle +1 -1
  185. data/tracks/kotlin/exercises/hello-world/{src/example → .meta/src/reference}/kotlin/HelloWorld.kt +0 -0
  186. data/tracks/kotlin/exercises/hello-world/build.gradle +1 -1
  187. data/tracks/kotlin/exercises/hexadecimal/{src/example → .meta/src/reference}/kotlin/Hexadecimal.kt +0 -0
  188. data/tracks/kotlin/exercises/hexadecimal/build.gradle +1 -1
  189. data/tracks/kotlin/exercises/isogram/{src/example → .meta/src/reference}/kotlin/Isogram.kt +0 -0
  190. data/tracks/kotlin/exercises/isogram/build.gradle +1 -1
  191. data/tracks/kotlin/exercises/largest-series-product/{src/example → .meta/src/reference}/kotlin/Series.kt +0 -0
  192. data/tracks/kotlin/exercises/largest-series-product/build.gradle +1 -1
  193. data/tracks/kotlin/exercises/leap/{src/example → .meta/src/reference}/kotlin/Year.kt +0 -0
  194. data/tracks/kotlin/exercises/leap/build.gradle +1 -1
  195. data/tracks/kotlin/exercises/linked-list/{src/example → .meta/src/reference}/kotlin/Deque.kt +0 -0
  196. data/tracks/kotlin/exercises/linked-list/build.gradle +1 -1
  197. data/tracks/kotlin/exercises/list-ops/{src/example → .meta/src/reference}/kotlin/CustomListExtensions.kt +0 -0
  198. data/tracks/kotlin/exercises/list-ops/build.gradle +1 -1
  199. data/tracks/kotlin/exercises/luhn/{src/example → .meta/src/reference}/kotlin/Luhn.kt +0 -0
  200. data/tracks/kotlin/exercises/luhn/build.gradle +1 -1
  201. data/tracks/kotlin/exercises/meetup/{src/example → .meta/src/reference}/kotlin/Meetup.kt +0 -0
  202. data/tracks/kotlin/exercises/meetup/.meta/src/reference/kotlin/MeetupSchedule.kt +1 -0
  203. data/tracks/kotlin/exercises/meetup/build.gradle +1 -1
  204. data/tracks/kotlin/exercises/minesweeper/{src/example → .meta/src/reference}/kotlin/MinesweeperBoard.kt +0 -0
  205. data/tracks/kotlin/exercises/minesweeper/build.gradle +1 -1
  206. data/tracks/kotlin/exercises/nth-prime/{src/example → .meta/src/reference}/kotlin/Prime.kt +0 -0
  207. data/tracks/kotlin/exercises/nth-prime/build.gradle +1 -1
  208. data/tracks/kotlin/exercises/nucleotide-count/{src/example → .meta/src/reference}/kotlin/DNA.kt +0 -0
  209. data/tracks/kotlin/exercises/nucleotide-count/build.gradle +1 -1
  210. data/tracks/kotlin/exercises/pangram/{src/example → .meta/src/reference}/kotlin/Pangrams.kt +0 -0
  211. data/tracks/kotlin/exercises/pangram/build.gradle +1 -1
  212. data/tracks/kotlin/exercises/pascals-triangle/{src/example → .meta/src/reference}/kotlin/PascalsTriangle.kt +0 -0
  213. data/tracks/kotlin/exercises/pascals-triangle/build.gradle +1 -1
  214. data/tracks/kotlin/exercises/perfect-numbers/{src/example → .meta/src/reference}/kotlin/NaturalNumber.kt +0 -0
  215. data/tracks/kotlin/exercises/perfect-numbers/build.gradle +1 -1
  216. data/tracks/kotlin/exercises/phone-number/{src/example → .meta/src/reference}/kotlin/PhoneNumber.kt +0 -0
  217. data/tracks/kotlin/exercises/phone-number/build.gradle +1 -1
  218. data/tracks/kotlin/exercises/pig-latin/{src/example → .meta/src/reference}/kotlin/PigLatin.kt +0 -0
  219. data/tracks/kotlin/exercises/pig-latin/build.gradle +1 -1
  220. data/tracks/kotlin/exercises/prime-factors/{src/example → .meta/src/reference}/kotlin/PrimeFactorCalculator.kt +0 -0
  221. data/tracks/kotlin/exercises/prime-factors/build.gradle +1 -1
  222. data/tracks/kotlin/exercises/raindrops/{src/example → .meta/src/reference}/kotlin/Raindrops.kt +0 -0
  223. data/tracks/kotlin/exercises/raindrops/build.gradle +1 -1
  224. data/tracks/kotlin/exercises/react/{src/example → .meta/src/reference}/kotlin/React.kt +0 -0
  225. data/tracks/kotlin/exercises/react/build.gradle +1 -1
  226. data/tracks/kotlin/exercises/rna-transcription/{src/example → .meta/src/reference}/kotlin/RnaTranscription.kt +0 -0
  227. data/tracks/kotlin/exercises/rna-transcription/build.gradle +1 -1
  228. data/tracks/kotlin/exercises/robot-name/{src/example → .meta/src/reference}/kotlin/Robot.kt +0 -0
  229. data/tracks/kotlin/exercises/robot-name/build.gradle +1 -1
  230. data/tracks/kotlin/exercises/robot-simulator/.meta/src/reference/kotlin/GridPosition.kt +1 -0
  231. data/tracks/kotlin/exercises/robot-simulator/.meta/src/reference/kotlin/Orientation.kt +1 -0
  232. data/tracks/kotlin/exercises/robot-simulator/{src/example → .meta/src/reference}/kotlin/Robot.kt +0 -0
  233. data/tracks/kotlin/exercises/robot-simulator/build.gradle +1 -1
  234. data/tracks/kotlin/exercises/roman-numerals/{src/example → .meta/src/reference}/kotlin/RomanNumeral.kt +0 -0
  235. data/tracks/kotlin/exercises/roman-numerals/build.gradle +1 -1
  236. data/tracks/kotlin/exercises/rotational-cipher/{src/example → .meta/src/reference}/kotlin/RotationalCipher.kt +0 -0
  237. data/tracks/kotlin/exercises/rotational-cipher/build.gradle +1 -1
  238. data/tracks/kotlin/exercises/saddle-points/{src/example → .meta/src/reference}/kotlin/Matrix.kt +0 -0
  239. data/tracks/kotlin/exercises/saddle-points/{src/example → .meta/src/reference}/kotlin/MatrixCoordinate.kt +0 -0
  240. data/tracks/kotlin/exercises/saddle-points/build.gradle +1 -1
  241. data/tracks/kotlin/exercises/say/{src/example → .meta/src/reference}/kotlin/NumberSpeller.kt +0 -0
  242. data/tracks/kotlin/exercises/say/build.gradle +1 -1
  243. data/tracks/kotlin/exercises/scrabble-score/{src/example → .meta/src/reference}/kotlin/Scrabble.kt +0 -0
  244. data/tracks/kotlin/exercises/scrabble-score/build.gradle +1 -1
  245. data/tracks/kotlin/exercises/secret-handshake/{src/example → .meta/src/reference}/kotlin/HandshakeCalculator.kt +0 -0
  246. data/tracks/kotlin/exercises/secret-handshake/.meta/src/reference/kotlin/Signal.kt +1 -0
  247. data/tracks/kotlin/exercises/secret-handshake/build.gradle +1 -1
  248. data/tracks/kotlin/exercises/series/{src/example → .meta/src/reference}/kotlin/Series.kt +0 -0
  249. data/tracks/kotlin/exercises/series/build.gradle +1 -1
  250. data/tracks/kotlin/exercises/sieve/{src/example → .meta/src/reference}/kotlin/Sieve.kt +0 -0
  251. data/tracks/kotlin/exercises/sieve/build.gradle +1 -1
  252. data/tracks/kotlin/exercises/simple-cipher/{src/example → .meta/src/reference}/kotlin/Cipher.kt +0 -0
  253. data/tracks/kotlin/exercises/simple-cipher/build.gradle +1 -1
  254. data/tracks/kotlin/exercises/space-age/{src/example → .meta/src/reference}/kotlin/SpaceAge.kt +0 -0
  255. data/tracks/kotlin/exercises/space-age/build.gradle +1 -1
  256. data/tracks/kotlin/exercises/spiral-matrix/{src/example → .meta/src/reference}/kotlin/SpiralMatrix.kt +0 -0
  257. data/tracks/kotlin/exercises/spiral-matrix/build.gradle +1 -1
  258. data/tracks/kotlin/exercises/strain/{src/example → .meta/src/reference}/kotlin/Strain.kt +0 -0
  259. data/tracks/kotlin/exercises/strain/build.gradle +1 -1
  260. data/tracks/kotlin/exercises/sublist/{src/example → .meta/src/reference}/kotlin/Relationship.kt +0 -0
  261. data/tracks/kotlin/exercises/sublist/{src/example → .meta/src/reference}/kotlin/Sublist.kt +0 -0
  262. data/tracks/kotlin/exercises/sublist/build.gradle +1 -1
  263. data/tracks/kotlin/exercises/sum-of-multiples/{src/example → .meta/src/reference}/kotlin/SumOfMultiples.kt +0 -0
  264. data/tracks/kotlin/exercises/sum-of-multiples/build.gradle +1 -1
  265. data/tracks/kotlin/exercises/triangle/{src/example → .meta/src/reference}/kotlin/Triangle.kt +0 -0
  266. data/tracks/kotlin/exercises/triangle/build.gradle +1 -1
  267. data/tracks/kotlin/exercises/word-count/{src/example → .meta/src/reference}/kotlin/WordCount.kt +0 -0
  268. data/tracks/kotlin/exercises/word-count/build.gradle +1 -1
  269. data/tracks/kotlin/gradle/wrapper/gradle-wrapper.jar +0 -0
  270. data/tracks/kotlin/gradle/wrapper/gradle-wrapper.properties +2 -2
  271. metadata +186 -182
  272. data/tracks/kotlin/exercises/allergies/src/example/kotlin/Allergen.kt +0 -1
  273. data/tracks/kotlin/exercises/meetup/src/example/kotlin/MeetupSchedule.kt +0 -1
  274. data/tracks/kotlin/exercises/robot-simulator/src/example/kotlin/GridPosition.kt +0 -1
  275. data/tracks/kotlin/exercises/robot-simulator/src/example/kotlin/Orientation.kt +0 -1
  276. data/tracks/kotlin/exercises/secret-handshake/src/example/kotlin/Signal.kt +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c3a805b6e7e811932f76b9d6546d5aed224b27fe
4
- data.tar.gz: f782c09ccca7e40a7beaa87d7519b7646046f29b
3
+ metadata.gz: d970d4848c197189fbc8c33fb872060d48ecf8b7
4
+ data.tar.gz: 00461a89e6bac79334b0a0712634427c4b18b897
5
5
  SHA512:
6
- metadata.gz: c09dd81f75ca8b03185a1cb660ecf868d71fa3cba133f530a7893ef7928c110e0e119584d4c652d1b39b35bf934bb5139f3419d81284fb8f79d5ec96d6d17e4c
7
- data.tar.gz: 351bf0b1cc22a89c2e1e72d784f60f58271f248aed4e5e97ee926db9e457ae45037bcca81dcca81322b6dd83f5823dcd61bf7f5027e84921c26d1ed22b825a64
6
+ metadata.gz: '028bb64347f9d056c7e5431c9391493d4b70b6e2192455ba8ca5f3637a9d2c6ab31c01e45cc754acff593bab06dfa4b66508b9405b1e9fc9cf42bafd34a217f2'
7
+ data.tar.gz: cffdf622c93f4ba455b8f4a55da9189f049bd0bd1360e6010af7c863ba33db320d493f2e34cf3464290baae3c634ed0fe7230853f2576827ebece3990002a11b
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.2.1.28"
2
+ VERSION = "2.2.1.29"
3
3
  end
@@ -50,6 +50,7 @@ foreach(exercise
50
50
  allergies
51
51
  atbash-cipher
52
52
  bracket-push
53
+ pangram
53
54
  )
54
55
  set(exercise_dir exercises/${exercise})
55
56
  travis_fixup(${exercise})
@@ -423,6 +423,17 @@
423
423
  "pattern matching",
424
424
  "stacks"
425
425
  ]
426
+ },
427
+ {
428
+ "uuid": "ea8d6224-0440-6d80-1569-a04127908a200d2ecf0",
429
+ "slug": "pangram",
430
+ "core": false,
431
+ "unlocked_by": null,
432
+ "difficulty": 2,
433
+ "topics": [
434
+ "control-flow (loops)",
435
+ "strings"
436
+ ]
426
437
  }
427
438
  ]
428
439
  }
@@ -0,0 +1,52 @@
1
+ # Get the exercise name from the current directory
2
+ get_filename_component(exercise ${CMAKE_CURRENT_SOURCE_DIR} NAME)
3
+
4
+ # Basic CMake project
5
+ cmake_minimum_required(VERSION 2.8.11)
6
+
7
+ # Name the project after the exercise
8
+ project(${exercise} CXX)
9
+
10
+ # Locate Boost libraries: unit_test_framework, date_time and regex
11
+ set(Boost_USE_STATIC_LIBS ON)
12
+ set(Boost_USE_MULTITHREADED ON)
13
+ set(Boost_USE_STATIC_RUNTIME OFF)
14
+ find_package(Boost 1.59 REQUIRED COMPONENTS unit_test_framework date_time regex)
15
+
16
+ # Enable C++11 features on gcc/clang
17
+ if("${CMAKE_CXX_COMPILER_ID}" MATCHES "(GNU|Clang)")
18
+ set(CMAKE_CXX_FLAGS "-std=c++11")
19
+ endif()
20
+
21
+ # Configure to run all the tests?
22
+ if(${EXERCISM_RUN_ALL_TESTS})
23
+ add_definitions(-DEXERCISM_RUN_ALL_TESTS)
24
+ endif()
25
+
26
+ # Get a source filename from the exercise name by replacing -'s with _'s
27
+ string(REPLACE "-" "_" file ${exercise})
28
+
29
+ # Implementation could be only a header
30
+ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${file}.cpp)
31
+ set(exercise_cpp ${file}.cpp)
32
+ else()
33
+ set(exercise_cpp "")
34
+ endif()
35
+
36
+ # Build executable from sources and headers
37
+ add_executable(${exercise} ${file}_test.cpp ${exercise_cpp} ${file}.h)
38
+
39
+ # We need boost includes
40
+ target_include_directories(${exercise} PRIVATE ${Boost_INCLUDE_DIRS})
41
+
42
+ # We need boost libraries
43
+ target_link_libraries(${exercise} ${Boost_LIBRARIES})
44
+
45
+ # Tell MSVC not to warn us about unchecked iterators in debug builds
46
+ if(${MSVC})
47
+ set_target_properties(${exercise} PROPERTIES
48
+ COMPILE_DEFINITIONS_DEBUG _SCL_SECURE_NO_WARNINGS)
49
+ endif()
50
+
51
+ # Run the tests on every build
52
+ add_custom_command(TARGET ${exercise} POST_BUILD COMMAND ${exercise})
@@ -0,0 +1,35 @@
1
+ #include "pangram.h"
2
+ #include <cctype>
3
+
4
+ namespace
5
+ {
6
+
7
+ bool found_letter(char a, const std::string &s)
8
+ {
9
+ for(auto c: s) {
10
+ if(tolower(c) ==a) {
11
+ return true;
12
+ }
13
+ }
14
+ return false;
15
+ }
16
+
17
+ }
18
+
19
+ namespace pangram
20
+ {
21
+
22
+ bool is_pangram(const std::string &s)
23
+ {
24
+ char letters[] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
25
+ for(char l : letters)
26
+ {
27
+ if(!found_letter(l, s))
28
+ {
29
+ return false;
30
+ }
31
+ }
32
+ return true;
33
+ }
34
+
35
+ }
@@ -0,0 +1,11 @@
1
+ #if !defined(PANGRAM_H)
2
+ #define PANGRAM_H
3
+ #include <string>
4
+
5
+ namespace pangram
6
+ {
7
+
8
+ bool is_pangram(const std::string &s);
9
+
10
+ }
11
+ #endif
@@ -0,0 +1,50 @@
1
+ #include "pangram.h"
2
+ #define BOOST_TEST_MAIN
3
+ #include <boost/test/unit_test.hpp>
4
+
5
+ BOOST_AUTO_TEST_CASE(sentence_empty)
6
+ {
7
+ BOOST_REQUIRE(!pangram::is_pangram(""));
8
+ }
9
+
10
+ #ifdef EXERCISM_RUN_ALL_TESTS
11
+ BOOST_AUTO_TEST_CASE(pangram_with_only_lower_case)
12
+ {
13
+ BOOST_REQUIRE(pangram::is_pangram("the quick brown fox jumps over the lazy dog"));
14
+ }
15
+
16
+ BOOST_AUTO_TEST_CASE(missing_character_x)
17
+ {
18
+ BOOST_REQUIRE(!pangram::is_pangram("a quick movement of the enemy will jeopardize five gunboats"));
19
+ }
20
+
21
+ BOOST_AUTO_TEST_CASE(another_missing_x)
22
+ {
23
+ BOOST_REQUIRE(!pangram::is_pangram("the quick brown fish jumps over the lazy dog"));
24
+ }
25
+
26
+ BOOST_AUTO_TEST_CASE(pangram_with_underscores)
27
+ {
28
+ BOOST_REQUIRE(pangram::is_pangram("the_quick_brown_fox_jumps_over_the_lazy_dog"));
29
+ }
30
+
31
+ BOOST_AUTO_TEST_CASE(pangram_with_numbers)
32
+ {
33
+ BOOST_REQUIRE(pangram::is_pangram("the 1 quick brown fox jumps over the 2 lazy dogs"));
34
+ }
35
+
36
+ BOOST_AUTO_TEST_CASE(missing_letters_replaced_with_numbers)
37
+ {
38
+ BOOST_REQUIRE(!pangram::is_pangram("7h3 qu1ck brown fox jumps ov3r 7h3 lazy dog"));
39
+ }
40
+
41
+ BOOST_AUTO_TEST_CASE(pangram_with_mixed_case_and_punctuation)
42
+ {
43
+ BOOST_REQUIRE(pangram::is_pangram("\"Five quacking Zephyrs jolt my wax bed.\""));
44
+ }
45
+
46
+ BOOST_AUTO_TEST_CASE(upper_and_lower_should_not_be_counted_seperately)
47
+ {
48
+ BOOST_REQUIRE(!pangram::is_pangram("the quick brown fox jumps over with lazy FX"));
49
+ }
50
+ #endif
@@ -8,7 +8,7 @@ protected override void UpdateCanonicalData(CanonicalData canonicalData)
8
8
  {
9
9
  foreach (var canonicalDataCase in canonicalData.Cases)
10
10
  {
11
- canonicalDataCase.Expected = Convert.ToMultiLineString(canonicalDataCase.Expected);
11
+ canonicalDataCase.Expected = ConvertHelper.ToMultiLineString(canonicalDataCase.Expected);
12
12
  canonicalDataCase.UseVariableForExpected = true;
13
13
  }
14
14
  }
@@ -9,7 +9,7 @@ protected override void UpdateCanonicalData(CanonicalData canonicalData)
9
9
  foreach (var canonicalDataCase in canonicalData.Cases)
10
10
  {
11
11
  canonicalDataCase.UseVariableForExpected = true;
12
- canonicalDataCase.Expected = Convert.ToMultiLineString(canonicalDataCase.Expected);
12
+ canonicalDataCase.Expected = ConvertHelper.ToMultiLineString(canonicalDataCase.Expected);
13
13
  }
14
14
  }
15
15
  }
@@ -9,8 +9,8 @@ protected override void UpdateCanonicalData(CanonicalData canonicalData)
9
9
  foreach (var canonicalDataCase in canonicalData.Cases)
10
10
  {
11
11
  canonicalDataCase.Property = "String";
12
- canonicalDataCase.Properties["input"] = Convert.ToMultiLineString(canonicalDataCase.Properties["input"]);
13
- canonicalDataCase.Expected = Convert.ToMultiLineString(canonicalDataCase.Expected);
12
+ canonicalDataCase.Properties["input"] = ConvertHelper.ToMultiLineString(canonicalDataCase.Properties["input"]);
13
+ canonicalDataCase.Expected = ConvertHelper.ToMultiLineString(canonicalDataCase.Expected);
14
14
 
15
15
  canonicalDataCase.UseVariablesForInput = true;
16
16
  canonicalDataCase.UseVariableForExpected = true;
@@ -1,6 +1,6 @@
1
- namespace Generators.Exercises
1
+ namespace Generators.Input
2
2
  {
3
- public static class Convert
3
+ public static class ConvertHelper
4
4
  {
5
5
  public static string ToMultiLineString(this object obj) => string.Join("\n", obj as object[]);
6
6
  }
data/tracks/go/gen/gen.go CHANGED
@@ -70,12 +70,6 @@ func init() {
70
70
  if _, path, _, ok := runtime.Caller(0); ok {
71
71
  dirMetadata = filepath.Join(path, "..", "..", "..", "problem-specifications")
72
72
  }
73
- if _, path, _, ok := runtime.Caller(2); ok {
74
- dirExercise = filepath.Join(path, "..", "..")
75
- }
76
- if dirExercise == "" {
77
- dirExercise = "."
78
- }
79
73
  }
80
74
 
81
75
  // outputSource puts the src text into given fileName
@@ -95,6 +89,21 @@ func Gen(exercise string, j interface{}, t *template.Template) error {
95
89
  if dirMetadata == "" {
96
90
  return errors.New("unable to determine current path")
97
91
  }
92
+ // Determine the exercise directory.
93
+ // Use runtime.Caller to determine path location of the generator main package.
94
+ // Call frames: 0 is this frame, Gen().
95
+ // 1 should be a func in <exercise-dir>/.meta/gen.go (generator main package)
96
+ // which is calling Gen().
97
+ // |
98
+ // V
99
+ if _, path, _, ok := runtime.Caller(1); ok {
100
+ // Construct a path 2 directories higher than the path for .meta/gen.go
101
+ // and it should be exercise directory.
102
+ dirExercise = filepath.Join(path, "..", "..")
103
+ }
104
+ if dirExercise == "" {
105
+ dirExercise = "."
106
+ }
98
107
  jFile := filepath.Join("exercises", exercise, "canonical-data.json")
99
108
  // try to find and read the local json source file
100
109
  log.Printf("[LOCAL] fetching %s test data\n", exercise)
@@ -65,7 +65,7 @@ To submit a fix for an existing exercise or port an exercise to Java with the le
65
65
 
66
66
  There are two objectives to the design of this build:
67
67
 
68
- 1. when a problem is built from within the `exercism/java` repo (i.e. when you, the contributor, are developing the exercise), the tests run against the "example" code;
68
+ 1. when a problem is built from within the `exercism/java` repo (i.e. when you, the contributor, are developing the exercise), the tests run against the reference solution;
69
69
  2. when a problem is built outside the `exercism/java` repo (when a participant is solving the exercise), the tests run against the "main" code.
70
70
 
71
71
  This repo is a multi-project gradle build.
@@ -74,7 +74,7 @@ This repo is a multi-project gradle build.
74
74
 
75
75
  This is the top-level module, contained in the `exercises` directory. It is a container for the problem sub-modules.
76
76
 
77
- * its `build.gradle` points the "main" sourceset to the example code.
77
+ * its `build.gradle` points the "main" sourceset to the reference solution.
78
78
  * its `settings.gradle` names each of the subprojects, one for each problem in the set.
79
79
 
80
80
  ### The Problem Submodules
@@ -87,7 +87,7 @@ Each problem/submodule is a subdirectory of the same name as its slug.
87
87
  Each problem/submodule has three source sets:
88
88
 
89
89
  * `src/test/java/` — a test suite defining the edges of the problem
90
- * `src/example/java/` — an example solution that passes all the tests
90
+ * `./meta/src/reference/java/` — a reference solution that passes all the tests
91
91
  * `src/main/java/` — starter source files, if required/desired *(this directory usually only has a `.keep` file in it)*.
92
92
 
93
93
  ----
@@ -237,7 +237,7 @@ solve_all_exercises() {
237
237
  echo "=================================================="
238
238
 
239
239
  ${exercism_cli} fetch ${TRACK} $exercise
240
- cp -R -H ${track_root}/exercises/${exercise}/src/example/${TRACK}/* ${exercism_exercises_dir}/${TRACK}/${exercise}/src/main/${TRACK}/
240
+ cp -R -H ${track_root}/exercises/${exercise}/.meta/src/reference/${TRACK}/* ${exercism_exercises_dir}/${TRACK}/${exercise}/src/main/${TRACK}/
241
241
 
242
242
  pushd ${exercism_exercises_dir}/${TRACK}/${exercise}
243
243
  # Check that tests compile before we strip @Ignore annotations
@@ -275,7 +275,7 @@ solve_single_exercise() {
275
275
  echo "=================================================="
276
276
 
277
277
  ${exercism_cli} fetch ${TRACK} $exercise_to_solve
278
- cp -R -H ${track_root}/exercises/${exercise_to_solve}/src/example/${TRACK}/* ${exercism_exercises_dir}/${TRACK}/${exercise_to_solve}/src/main/${TRACK}/
278
+ cp -R -H ${track_root}/exercises/${exercise_to_solve}/.meta/src/reference/${TRACK}/* ${exercism_exercises_dir}/${TRACK}/${exercise_to_solve}/src/main/${TRACK}/
279
279
 
280
280
  pushd ${exercism_exercises_dir}/${TRACK}/${exercise_to_solve}
281
281
  # Check that tests compile before we strip @Ignore annotations
@@ -678,5 +678,6 @@
678
678
  "grains",
679
679
  "say"
680
680
  ],
681
- "language": "Java"
681
+ "language": "Java",
682
+ "solution_pattern": "reference"
682
683
  }
@@ -1,7 +1,7 @@
1
1
  // This root Gradle project is used for:
2
2
  //
3
- // - Checking that every test suite compiles against its corresponding example implementation;
4
- // - Checking that every example implementation passes its corresponding test suite;
3
+ // - Checking that every test suite compiles against its corresponding reference implementation;
4
+ // - Checking that every reference implementation passes its corresponding test suite;
5
5
  // - Checking that every provided starter implementation compiles.
6
6
  //
7
7
  // This file is never delivered to Exercism users.
@@ -28,10 +28,10 @@ subprojects {
28
28
  afterEvaluate { project ->
29
29
 
30
30
  sourceSets {
31
- // Set the directory containing the example implementation as the default source set. Default
31
+ // Set the directory containing the reference solution as the default source set. Default
32
32
  // compile tasks will now run against this source set.
33
33
  main {
34
- java.srcDirs = ["src/example/java"]
34
+ java.srcDirs = [".meta/src/reference/java"]
35
35
  }
36
36
 
37
37
  // Define a custom source set named "starterSource" that points to the starter implementations