trackler 2.0.0.2 → 2.0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (197) hide show
  1. checksums.yaml +4 -4
  2. data/common/exercises/forth/canonical-data.json +1 -1
  3. data/common/exercises/pangram/canonical-data.json +0 -10
  4. data/common/exercises/run-length-encoding/canonical-data.json +21 -11
  5. data/lib/trackler/version.rb +1 -1
  6. data/tracks/bash/SETUP.md +2 -39
  7. data/tracks/bash/config.json +0 -9
  8. data/tracks/bash/exercises/hello-world/HINTS.md +38 -0
  9. data/tracks/bash/exercises/hello-world/hello_world_test.sh +0 -14
  10. data/tracks/haskell/.travis.yml +2 -13
  11. data/tracks/haskell/README.md +2 -1
  12. data/tracks/haskell/config.json +6 -0
  13. data/tracks/haskell/exercises/accumulate/examples/success-standard/package.yaml +16 -0
  14. data/tracks/haskell/exercises/accumulate/{src/Example.hs → examples/success-standard/src/Accumulate.hs} +0 -0
  15. data/tracks/haskell/exercises/all-your-base/examples/success-standard/package.yaml +16 -0
  16. data/tracks/haskell/exercises/all-your-base/{src/Example.hs → examples/success-standard/src/Base.hs} +0 -0
  17. data/tracks/haskell/exercises/allergies/examples/success-standard/package.yaml +16 -0
  18. data/tracks/haskell/exercises/allergies/{src/Example.hs → examples/success-standard/src/Allergies.hs} +0 -0
  19. data/tracks/haskell/exercises/alphametics/HINTS.md +5 -0
  20. data/tracks/haskell/exercises/alphametics/examples/success-standard/package.yaml +18 -0
  21. data/tracks/haskell/exercises/alphametics/examples/success-standard/src/Alphametics.hs +116 -0
  22. data/tracks/haskell/exercises/alphametics/package.yaml +20 -0
  23. data/tracks/haskell/exercises/alphametics/src/Alphametics.hs +4 -0
  24. data/tracks/haskell/exercises/alphametics/stack.yaml +1 -0
  25. data/tracks/haskell/exercises/alphametics/test/Tests.hs +78 -0
  26. data/tracks/haskell/exercises/anagram/examples/{list-string → success-liststring}/package.yaml +0 -1
  27. data/tracks/haskell/exercises/anagram/examples/{list-string → success-liststring/src}/Anagram.hs +0 -0
  28. data/tracks/haskell/exercises/anagram/examples/{set-text → success-settext}/package.yaml +0 -0
  29. data/tracks/haskell/exercises/anagram/examples/{set-text → success-settext/src}/Anagram.hs +0 -0
  30. data/tracks/haskell/exercises/atbash-cipher/examples/success-standard/package.yaml +18 -0
  31. data/tracks/haskell/exercises/atbash-cipher/{src/Example.hs → examples/success-standard/src/Atbash.hs} +0 -0
  32. data/tracks/haskell/exercises/bank-account/examples/success-standard/package.yaml +18 -0
  33. data/tracks/haskell/exercises/bank-account/{src/Example.hs → examples/success-standard/src/BankAccount.hs} +0 -0
  34. data/tracks/haskell/exercises/beer-song/examples/success-standard/package.yaml +16 -0
  35. data/tracks/haskell/exercises/beer-song/{src/Example.hs → examples/success-standard/src/Beer.hs} +0 -0
  36. data/tracks/haskell/exercises/binary-search-tree/examples/success-standard/package.yaml +16 -0
  37. data/tracks/haskell/exercises/binary-search-tree/{src/Example.hs → examples/success-standard/src/BST.hs} +0 -0
  38. data/tracks/haskell/exercises/binary/examples/success-standard/package.yaml +16 -0
  39. data/tracks/haskell/exercises/binary/{src/Example.hs → examples/success-standard/src/Binary.hs} +0 -0
  40. data/tracks/haskell/exercises/bob/examples/success-standard/package.yaml +16 -0
  41. data/tracks/haskell/exercises/bob/{src/Example.hs → examples/success-standard/src/Bob.hs} +0 -0
  42. data/tracks/haskell/exercises/change/examples/success-standard/package.yaml +16 -0
  43. data/tracks/haskell/exercises/change/{src/Example.hs → examples/success-standard/src/Change.hs} +0 -0
  44. data/tracks/haskell/exercises/clock/examples/success-standard/package.yaml +16 -0
  45. data/tracks/haskell/exercises/clock/{src/Example.hs → examples/success-standard/src/Clock.hs} +0 -0
  46. data/tracks/haskell/exercises/connect/examples/success-standard/package.yaml +18 -0
  47. data/tracks/haskell/exercises/connect/{src/Example.hs → examples/success-standard/src/Connect.hs} +0 -0
  48. data/tracks/haskell/exercises/crypto-square/examples/success-standard/package.yaml +18 -0
  49. data/tracks/haskell/exercises/crypto-square/{src/Example.hs → examples/success-standard/src/CryptoSquare.hs} +0 -0
  50. data/tracks/haskell/exercises/custom-set/examples/success-standard/package.yaml +16 -0
  51. data/tracks/haskell/exercises/custom-set/{src/Example.hs → examples/success-standard/src/CustomSet.hs} +0 -0
  52. data/tracks/haskell/exercises/difference-of-squares/examples/success-standard/package.yaml +16 -0
  53. data/tracks/haskell/exercises/difference-of-squares/{src/Example.hs → examples/success-standard/src/Squares.hs} +0 -0
  54. data/tracks/haskell/exercises/etl/examples/success-standard/package.yaml +17 -0
  55. data/tracks/haskell/exercises/etl/{src/Example.hs → examples/success-standard/src/ETL.hs} +0 -0
  56. data/tracks/haskell/exercises/food-chain/examples/success-standard/package.yaml +18 -0
  57. data/tracks/haskell/exercises/food-chain/{src/Example.hs → examples/success-standard/src/FoodChain.hs} +0 -0
  58. data/tracks/haskell/exercises/forth/HINTS.md +2 -2
  59. data/tracks/haskell/exercises/forth/examples/success-standard/package.yaml +19 -0
  60. data/tracks/haskell/exercises/forth/{src/Example.hs → examples/success-standard/src/Forth.hs} +3 -3
  61. data/tracks/haskell/exercises/forth/package.yaml +0 -1
  62. data/tracks/haskell/exercises/forth/src/Forth.hs +3 -3
  63. data/tracks/haskell/exercises/forth/test/Tests.hs +120 -65
  64. data/tracks/haskell/exercises/gigasecond/examples/success-standard/package.yaml +17 -0
  65. data/tracks/haskell/exercises/gigasecond/{src/Example.hs → examples/success-standard/src/Gigasecond.hs} +0 -0
  66. data/tracks/haskell/exercises/go-counting/examples/success-standard/package.yaml +20 -0
  67. data/tracks/haskell/exercises/go-counting/{src/Example.hs → examples/success-standard/src/Counting.hs} +0 -0
  68. data/tracks/haskell/exercises/grade-school/examples/success-standard/package.yaml +18 -0
  69. data/tracks/haskell/exercises/grade-school/{src/Example.hs → examples/success-standard/src/School.hs} +0 -0
  70. data/tracks/haskell/exercises/grains/examples/success-standard/package.yaml +16 -0
  71. data/tracks/haskell/exercises/grains/{src/Example.hs → examples/success-standard/src/Grains.hs} +0 -0
  72. data/tracks/haskell/exercises/grains/test/Tests.hs +1 -2
  73. data/tracks/haskell/exercises/hamming/examples/success-standard/package.yaml +16 -0
  74. data/tracks/haskell/exercises/hamming/{src/Example.hs → examples/success-standard/src/Hamming.hs} +0 -0
  75. data/tracks/haskell/exercises/hexadecimal/examples/success-standard/package.yaml +16 -0
  76. data/tracks/haskell/exercises/hexadecimal/{src/Example.hs → examples/success-standard/src/Hexadecimal.hs} +0 -0
  77. data/tracks/haskell/exercises/house/examples/success-standard/package.yaml +16 -0
  78. data/tracks/haskell/exercises/house/{src/Example.hs → examples/success-standard/src/House.hs} +0 -0
  79. data/tracks/haskell/exercises/kindergarten-garden/examples/success-standard/package.yaml +19 -0
  80. data/tracks/haskell/exercises/kindergarten-garden/{src/Example.hs → examples/success-standard/src/Garden.hs} +0 -0
  81. data/tracks/haskell/exercises/largest-series-product/examples/success-standard/package.yaml +18 -0
  82. data/tracks/haskell/exercises/largest-series-product/{src/Example.hs → examples/success-standard/src/Series.hs} +0 -0
  83. data/tracks/haskell/exercises/leap/examples/success-standard/package.yaml +16 -0
  84. data/tracks/haskell/exercises/leap/{src/Example.hs → examples/success-standard/src/LeapYear.hs} +0 -0
  85. data/tracks/haskell/exercises/lens-person/examples/success-standard/package.yaml +19 -0
  86. data/tracks/haskell/exercises/lens-person/{src/Example.hs → examples/success-standard/src/Person.hs} +0 -0
  87. data/tracks/haskell/exercises/linked-list/examples/success-standard/package.yaml +18 -0
  88. data/tracks/haskell/exercises/linked-list/{src/Example.hs → examples/success-standard/src/Deque.hs} +0 -0
  89. data/tracks/haskell/exercises/list-ops/examples/success-standard/package.yaml +16 -0
  90. data/tracks/haskell/exercises/list-ops/{src/Example.hs → examples/success-standard/src/ListOps.hs} +0 -0
  91. data/tracks/haskell/exercises/luhn/examples/success-standard/package.yaml +16 -0
  92. data/tracks/haskell/exercises/luhn/{src/Example.hs → examples/success-standard/src/Luhn.hs} +0 -0
  93. data/tracks/haskell/exercises/matrix/examples/success-standard/package.yaml +17 -0
  94. data/tracks/haskell/exercises/matrix/{src/Example.hs → examples/success-standard/src/Matrix.hs} +0 -0
  95. data/tracks/haskell/exercises/meetup/examples/success-standard/package.yaml +17 -0
  96. data/tracks/haskell/exercises/meetup/{src/Example.hs → examples/success-standard/src/Meetup.hs} +0 -0
  97. data/tracks/haskell/exercises/minesweeper/examples/success-standard/package.yaml +16 -0
  98. data/tracks/haskell/exercises/minesweeper/{src/Example.hs → examples/success-standard/src/Minesweeper.hs} +0 -0
  99. data/tracks/haskell/exercises/nth-prime/examples/success-standard/package.yaml +16 -0
  100. data/tracks/haskell/exercises/nth-prime/{src/Example.hs → examples/success-standard/src/Prime.hs} +0 -0
  101. data/tracks/haskell/exercises/nucleotide-count/examples/success-standard/package.yaml +17 -0
  102. data/tracks/haskell/exercises/nucleotide-count/{src/Example.hs → examples/success-standard/src/DNA.hs} +0 -0
  103. data/tracks/haskell/exercises/ocr-numbers/examples/success-standard/package.yaml +19 -0
  104. data/tracks/haskell/exercises/ocr-numbers/{src/Example.hs → examples/success-standard/src/OCR.hs} +0 -0
  105. data/tracks/haskell/exercises/octal/examples/success-standard/package.yaml +17 -0
  106. data/tracks/haskell/exercises/octal/{src/Example.hs → examples/success-standard/src/Octal.hs} +0 -0
  107. data/tracks/haskell/exercises/palindrome-products/examples/success-standard/package.yaml +16 -0
  108. data/tracks/haskell/exercises/palindrome-products/{src/Example.hs → examples/success-standard/src/Palindromes.hs} +0 -0
  109. data/tracks/haskell/exercises/parallel-letter-frequency/examples/success-standard/package.yaml +20 -0
  110. data/tracks/haskell/exercises/parallel-letter-frequency/{src/Example.hs → examples/success-standard/src/Frequency.hs} +0 -0
  111. data/tracks/haskell/exercises/pascals-triangle/examples/success-standard/package.yaml +16 -0
  112. data/tracks/haskell/exercises/pascals-triangle/{src/Example.hs → examples/success-standard/src/Triangle.hs} +0 -0
  113. data/tracks/haskell/exercises/phone-number/examples/success-standard/package.yaml +16 -0
  114. data/tracks/haskell/exercises/phone-number/{src/Example.hs → examples/success-standard/src/Phone.hs} +0 -0
  115. data/tracks/haskell/exercises/pig-latin/examples/success-standard/package.yaml +16 -0
  116. data/tracks/haskell/exercises/pig-latin/{src/Example.hs → examples/success-standard/src/PigLatin.hs} +0 -0
  117. data/tracks/haskell/exercises/pig-latin/test/Tests.hs +2 -1
  118. data/tracks/haskell/exercises/pov/examples/success-standard/package.yaml +17 -0
  119. data/tracks/haskell/exercises/pov/{src/Example.hs → examples/success-standard/src/POV.hs} +0 -0
  120. data/tracks/haskell/exercises/pov/test/Tests.hs +34 -8
  121. data/tracks/haskell/exercises/prime-factors/examples/success-standard/package.yaml +16 -0
  122. data/tracks/haskell/exercises/prime-factors/{src/Example.hs → examples/success-standard/src/PrimeFactors.hs} +0 -0
  123. data/tracks/haskell/exercises/pythagorean-triplet/examples/success-standard/package.yaml +16 -0
  124. data/tracks/haskell/exercises/pythagorean-triplet/{src/Example.hs → examples/success-standard/src/Triplet.hs} +0 -0
  125. data/tracks/haskell/exercises/queen-attack/examples/success-standard/package.yaml +16 -0
  126. data/tracks/haskell/exercises/queen-attack/{src/Example.hs → examples/success-standard/src/Queens.hs} +0 -0
  127. data/tracks/haskell/exercises/raindrops/examples/success-standard/package.yaml +16 -0
  128. data/tracks/haskell/exercises/raindrops/{src/Example.hs → examples/success-standard/src/Raindrops.hs} +0 -0
  129. data/tracks/haskell/exercises/rna-transcription/examples/success-standard/package.yaml +18 -0
  130. data/tracks/haskell/exercises/rna-transcription/{src/Example.hs → examples/success-standard/src/DNA.hs} +0 -0
  131. data/tracks/haskell/exercises/robot-name/examples/success-standard/package.yaml +18 -0
  132. data/tracks/haskell/exercises/robot-name/{src/Example.hs → examples/success-standard/src/Robot.hs} +0 -0
  133. data/tracks/haskell/exercises/robot-simulator/examples/success-standard/package.yaml +16 -0
  134. data/tracks/haskell/exercises/robot-simulator/{src/Example.hs → examples/success-standard/src/Robot.hs} +0 -0
  135. data/tracks/haskell/exercises/roman-numerals/examples/success-standard/package.yaml +16 -0
  136. data/tracks/haskell/exercises/roman-numerals/{src/Example.hs → examples/success-standard/src/Roman.hs} +0 -0
  137. data/tracks/haskell/exercises/saddle-points/examples/success-standard/package.yaml +19 -0
  138. data/tracks/haskell/exercises/saddle-points/{src/Example.hs → examples/success-standard/src/Matrix.hs} +0 -0
  139. data/tracks/haskell/exercises/say/examples/success-standard/package.yaml +18 -0
  140. data/tracks/haskell/exercises/say/{src/Example.hs → examples/success-standard/src/Say.hs} +0 -0
  141. data/tracks/haskell/exercises/say/test/Tests.hs +4 -2
  142. data/tracks/haskell/exercises/scrabble-score/examples/success-standard/package.yaml +18 -0
  143. data/tracks/haskell/exercises/scrabble-score/{src/Example.hs → examples/success-standard/src/Scrabble.hs} +0 -0
  144. data/tracks/haskell/exercises/secret-handshake/examples/success-standard/package.yaml +16 -0
  145. data/tracks/haskell/exercises/secret-handshake/{src/Example.hs → examples/success-standard/src/SecretHandshake.hs} +0 -0
  146. data/tracks/haskell/exercises/series/examples/success-standard/package.yaml +16 -0
  147. data/tracks/haskell/exercises/series/{src/Example.hs → examples/success-standard/src/Series.hs} +0 -0
  148. data/tracks/haskell/exercises/sgf-parsing/examples/success-standard/package.yaml +20 -0
  149. data/tracks/haskell/exercises/sgf-parsing/{src/Example.hs → examples/success-standard/src/Sgf.hs} +0 -0
  150. data/tracks/haskell/exercises/sieve/examples/success-standard/package.yaml +18 -0
  151. data/tracks/haskell/exercises/sieve/{src/Example.hs → examples/success-standard/src/Sieve.hs} +0 -0
  152. data/tracks/haskell/exercises/simple-cipher/examples/success-standard/package.yaml +18 -0
  153. data/tracks/haskell/exercises/simple-cipher/{src/Example.hs → examples/success-standard/src/Cipher.hs} +0 -0
  154. data/tracks/haskell/exercises/simple-linked-list/examples/success-standard/package.yaml +16 -0
  155. data/tracks/haskell/exercises/simple-linked-list/{src/Example.hs → examples/success-standard/src/LinkedList.hs} +0 -0
  156. data/tracks/haskell/exercises/space-age/examples/success-double/package.yaml +0 -3
  157. data/tracks/haskell/exercises/space-age/examples/success-double/{SpaceAge.hs → src/SpaceAge.hs} +0 -0
  158. data/tracks/haskell/exercises/space-age/examples/success-rational/package.yaml +0 -3
  159. data/tracks/haskell/exercises/space-age/examples/success-rational/{SpaceAge.hs → src/SpaceAge.hs} +0 -0
  160. data/tracks/haskell/exercises/strain/examples/success-standard/package.yaml +16 -0
  161. data/tracks/haskell/exercises/strain/{src/Example.hs → examples/success-standard/src/Strain.hs} +0 -0
  162. data/tracks/haskell/exercises/sublist/examples/success-standard/package.yaml +16 -0
  163. data/tracks/haskell/exercises/sublist/{src/Example.hs → examples/success-standard/src/Sublist.hs} +0 -0
  164. data/tracks/haskell/exercises/sum-of-multiples/examples/success-standard/package.yaml +16 -0
  165. data/tracks/haskell/exercises/sum-of-multiples/{src/Example.hs → examples/success-standard/src/SumOfMultiples.hs} +0 -0
  166. data/tracks/haskell/exercises/triangle/examples/success-standard/package.yaml +18 -0
  167. data/tracks/haskell/exercises/triangle/{src/Example.hs → examples/success-standard/src/Triangle.hs} +0 -0
  168. data/tracks/haskell/exercises/trinary/examples/success-standard/package.yaml +17 -0
  169. data/tracks/haskell/exercises/trinary/{src/Example.hs → examples/success-standard/src/Trinary.hs} +0 -0
  170. data/tracks/haskell/exercises/word-count/examples/success-newtype/package.yaml +0 -2
  171. data/tracks/haskell/exercises/word-count/examples/success-newtype/{WordCount.hs → src/WordCount.hs} +0 -0
  172. data/tracks/haskell/exercises/word-count/examples/success-simple/package.yaml +0 -2
  173. data/tracks/haskell/exercises/word-count/examples/success-simple/{WordCount.hs → src/WordCount.hs} +0 -0
  174. data/tracks/haskell/exercises/wordy/examples/success-standard/package.yaml +19 -0
  175. data/tracks/haskell/exercises/wordy/{src/Example.hs → examples/success-standard/src/WordProblem.hs} +0 -0
  176. data/tracks/haskell/exercises/zebra-puzzle/examples/success-standard/package.yaml +16 -0
  177. data/tracks/haskell/exercises/zebra-puzzle/{src/Example.hs → examples/success-standard/src/ZebraPuzzle.hs} +0 -0
  178. data/tracks/haskell/exercises/zipper/examples/success-standard/package.yaml +16 -0
  179. data/tracks/haskell/exercises/zipper/{src/Example.hs → examples/success-standard/src/Zipper.hs} +0 -0
  180. data/tracks/java/config.json +7 -1
  181. data/tracks/java/exercises/difference-of-squares/build.gradle +17 -0
  182. data/tracks/java/exercises/difference-of-squares/src/example/java/.keep +0 -0
  183. data/tracks/java/exercises/difference-of-squares/src/example/java/Difference.java +20 -0
  184. data/tracks/java/exercises/difference-of-squares/src/main/java/.keep +0 -0
  185. data/tracks/java/exercises/difference-of-squares/src/main/java/Difference.java +5 -0
  186. data/tracks/java/exercises/difference-of-squares/src/test/java/DifferenceTest.java +87 -0
  187. data/tracks/java/exercises/settings.gradle +1 -0
  188. data/tracks/kotlin/docs/TESTS.md +97 -13
  189. data/tracks/ruby/exercises/alphametics/.version +1 -1
  190. data/tracks/ruby/exercises/alphametics/alphametics_test.rb +55 -45
  191. data/tracks/ruby/exercises/alphametics/example.rb +100 -63
  192. data/tracks/ruby/exercises/alphametics/example.tt +7 -6
  193. data/tracks/ruby/lib/alphametics_cases.rb +49 -13
  194. data/tracks/ruby/lib/generator.rb +2 -1
  195. data/tracks/rust/docs/LEARNING.md +1 -0
  196. data/tracks/rust/exercises/acronym/tests/acronym.rs +6 -0
  197. metadata +164 -80
@@ -0,0 +1,16 @@
1
+ name: sum-of-multiples
2
+
3
+ dependencies:
4
+ - base
5
+
6
+ library:
7
+ exposed-modules: SumOfMultiples
8
+ source-dirs: src
9
+
10
+ tests:
11
+ test:
12
+ main: Tests.hs
13
+ source-dirs: test
14
+ dependencies:
15
+ - sum-of-multiples
16
+ - hspec
@@ -0,0 +1,18 @@
1
+ name: triangle
2
+
3
+ dependencies:
4
+ - base
5
+
6
+ library:
7
+ exposed-modules: Triangle
8
+ source-dirs: src
9
+ dependencies:
10
+ - containers
11
+
12
+ tests:
13
+ test:
14
+ main: Tests.hs
15
+ source-dirs: test
16
+ dependencies:
17
+ - triangle
18
+ - hspec
@@ -0,0 +1,17 @@
1
+ name: trinary
2
+
3
+ dependencies:
4
+ - base
5
+
6
+ library:
7
+ exposed-modules: Trinary
8
+ source-dirs: src
9
+
10
+ tests:
11
+ test:
12
+ main: Tests.hs
13
+ source-dirs: test
14
+ dependencies:
15
+ - trinary
16
+ - hspec
17
+ - QuickCheck
@@ -7,8 +7,6 @@ library:
7
7
  exposed-modules: WordCount
8
8
  source-dirs: src
9
9
  dependencies:
10
- # - foo # List here the packages you
11
- # - bar # want to use in your solution.
12
10
  - multiset
13
11
  - text
14
12
 
@@ -7,8 +7,6 @@ library:
7
7
  exposed-modules: WordCount
8
8
  source-dirs: src
9
9
  dependencies:
10
- # - foo # List here the packages you
11
- # - bar # want to use in your solution.
12
10
  - split
13
11
 
14
12
  tests:
@@ -0,0 +1,19 @@
1
+ name: wordy
2
+
3
+ dependencies:
4
+ - base
5
+
6
+ library:
7
+ exposed-modules: WordProblem
8
+ source-dirs: src
9
+ dependencies:
10
+ - attoparsec
11
+ - text
12
+
13
+ tests:
14
+ test:
15
+ main: Tests.hs
16
+ source-dirs: test
17
+ dependencies:
18
+ - wordy
19
+ - hspec
@@ -0,0 +1,16 @@
1
+ name: zebra-puzzle
2
+
3
+ dependencies:
4
+ - base
5
+
6
+ library:
7
+ exposed-modules: ZebraPuzzle
8
+ source-dirs: src
9
+
10
+ tests:
11
+ test:
12
+ main: Tests.hs
13
+ source-dirs: test
14
+ dependencies:
15
+ - zebra-puzzle
16
+ - hspec
@@ -0,0 +1,16 @@
1
+ name: zipper
2
+
3
+ dependencies:
4
+ - base
5
+
6
+ library:
7
+ exposed-modules: Zipper
8
+ source-dirs: src
9
+
10
+ tests:
11
+ test:
12
+ main: Tests.hs
13
+ source-dirs: test
14
+ dependencies:
15
+ - zipper
16
+ - hspec
@@ -42,7 +42,8 @@
42
42
  "linked-list",
43
43
  "nth-prime",
44
44
  "pascals-triangle",
45
- "beer-song"
45
+ "beer-song",
46
+ "difference-of-squares"
46
47
  ],
47
48
  "exercises": [
48
49
  {
@@ -239,6 +240,11 @@
239
240
  "slug": "beer-song",
240
241
  "difficulty": 1,
241
242
  "topics": []
243
+ },
244
+ {
245
+ "slug": "difference-of-squares",
246
+ "difficulty": 1,
247
+ "topics": []
242
248
  }
243
249
  ],
244
250
  "deprecated": [
@@ -0,0 +1,17 @@
1
+ apply plugin: "java"
2
+ apply plugin: "eclipse"
3
+ apply plugin: "idea"
4
+
5
+ repositories {
6
+ mavenCentral()
7
+ }
8
+
9
+ dependencies {
10
+ testCompile "junit:junit:4.12"
11
+ }
12
+ test {
13
+ testLogging {
14
+ exceptionFormat = 'full'
15
+ events = ["passed", "failed", "skipped"]
16
+ }
17
+ }
@@ -0,0 +1,20 @@
1
+ import java.util.stream.IntStream;
2
+
3
+ public final class Difference {
4
+
5
+ public static int computeSquareOfSumTo(final int input) {
6
+ final int sum = input * (input + 1) / 2;
7
+ return (int) Math.pow(sum, 2);
8
+ }
9
+
10
+ public static int computeSumOfSquaresTo(final int input) {
11
+ return IntStream.rangeClosed(1, input)
12
+ .map(i -> (int) Math.pow(i, 2))
13
+ .sum();
14
+ }
15
+
16
+ public static int betweenSquareOfSumAndSumOfSquaresTo(final int input) {
17
+ return computeSquareOfSumTo(input) - computeSumOfSquaresTo(input);
18
+ }
19
+
20
+ }
@@ -0,0 +1,5 @@
1
+ public final class Difference {
2
+
3
+
4
+
5
+ }
@@ -0,0 +1,87 @@
1
+ import org.junit.Ignore;
2
+ import org.junit.Test;
3
+
4
+ import static org.junit.Assert.assertEquals;
5
+
6
+ public final class DifferenceTest {
7
+
8
+ @Test
9
+ public void testSquareOfSum5() {
10
+ final int expected = 225;
11
+ final int actual = Difference.computeSquareOfSumTo(5);
12
+ assertEquals(expected, actual);
13
+ }
14
+
15
+ @Ignore
16
+ @Test
17
+ public void testSquareOfSum10() {
18
+ final int expected = 3025;
19
+ final int actual = Difference.computeSquareOfSumTo(10);
20
+ assertEquals(expected, actual);
21
+ }
22
+
23
+ @Ignore
24
+ @Test
25
+ public void testSquareOfSum100() {
26
+ final int expected = 25502500;
27
+ final int actual = Difference.computeSquareOfSumTo(100);
28
+ assertEquals(expected, actual);
29
+ }
30
+
31
+ @Ignore
32
+ @Test
33
+ public void testSumOfSquares5() {
34
+ final int expected = 55;
35
+ final int actual = Difference.computeSumOfSquaresTo(5);
36
+ assertEquals(expected, actual);
37
+ }
38
+
39
+ @Ignore
40
+ @Test
41
+ public void testSumOfSquares10() {
42
+ final int expected = 385;
43
+ final int actual = Difference.computeSumOfSquaresTo(10);
44
+ assertEquals(expected, actual);
45
+ }
46
+
47
+ @Ignore
48
+ @Test
49
+ public void testSumOfSquares100() {
50
+ final int expected = 338350;
51
+ final int actual = Difference.computeSumOfSquaresTo(100);
52
+ assertEquals(expected, actual);
53
+ }
54
+
55
+ @Ignore
56
+ @Test
57
+ public void testDifferenceOfSquares0() {
58
+ final int expected = 0;
59
+ final int actual = Difference.betweenSquareOfSumAndSumOfSquaresTo(0);
60
+ assertEquals(expected, actual);
61
+ }
62
+
63
+ @Ignore
64
+ @Test
65
+ public void testDifferenceOfSquares5() {
66
+ final int expected = 170;
67
+ final int actual = Difference.betweenSquareOfSumAndSumOfSquaresTo(5);
68
+ assertEquals(expected, actual);
69
+ }
70
+
71
+ @Ignore
72
+ @Test
73
+ public void testDifferenceOfSquares10() {
74
+ final int expected = 2640;
75
+ final int actual = Difference.betweenSquareOfSumAndSumOfSquaresTo(10);
76
+ assertEquals(expected, actual);
77
+ }
78
+
79
+ @Ignore
80
+ @Test
81
+ public void testDifferenceOfSquares100() {
82
+ final int expected = 25164150;
83
+ final int actual = Difference.betweenSquareOfSumAndSumOfSquaresTo(100);
84
+ assertEquals(expected, actual);
85
+ }
86
+
87
+ }
@@ -7,6 +7,7 @@ include 'beer-song'
7
7
  include 'binary'
8
8
  include 'bob'
9
9
  include 'crypto-square'
10
+ include 'difference-of-squares'
10
11
  include 'etl'
11
12
  include 'gigasecond'
12
13
  include 'grade-school'
@@ -46,37 +46,41 @@ Gradle project: [C:\Users\johndoe\exercism\kotlin\etl\build.gradle ](...)
46
46
 
47
47
  ### Get started with the first exercise
48
48
 
49
- 1. In the terminal window, get the first exercise...
49
+ In the terminal window, get the first exercise:
50
50
 
51
- $ exercism fetch kotlin
51
+ $ exercism fetch kotlin
52
52
 
53
- Not Submitted: 1 problem
54
- Kotlin (Etl) /Users/johndoe/exercism/kotlin/etl
53
+ Not Submitted: 1 problem
54
+ Kotlin (Etl) /Users/johndoe/exercism/kotlin/etl
55
55
 
56
- New: 1 problem
57
- Kotlin (Etl) /Users/johndoe/exercism/kotlin/etl
56
+ New: 1 problem
57
+ Kotlin (Etl) /Users/johndoe/exercism/kotlin/etl
58
58
 
59
- unchanged: 0, updated: 0, new: 1
59
+ unchanged: 0, updated: 0, new: 1
60
60
 
61
- 2. In the "Welcome to IntelliJ IDEA" window, click the "Open" option.
61
+ ### Running the Tests
62
62
 
63
- 3. Navigate to the `/Users/johndoe/exercism/kotlin/etl` folder. Make sure you've selected the
63
+ #### Option 1: IntelliJ
64
+
65
+ 1. In the "Welcome to IntelliJ IDEA" window, click the "Open" option.
66
+
67
+ 2. Navigate to the `/Users/johndoe/exercism/kotlin/etl` folder. Make sure you've selected the
64
68
  "etl" folder. Click "OK".
65
69
 
66
- 4. In the "Import Project from Gradle" dialog, check the "auto-import" and "create directories"
70
+ 3. In the "Import Project from Gradle" dialog, check the "auto-import" and "create directories"
67
71
  checkboxes and select "Use customizable gradle wrapper".
68
72
 
69
73
  ![IntelliJ 14 CE -- Gradle import dialog](http://x.exercism.io/v3/tracks/kotlin/docs/img/mac-osx--idea-ce-gradle-import-dialog.png)
70
74
 
71
- 5. Click "OK". IntelliJ will automatically create its project artifacts based on the Gradle project file.
75
+ 4. Click "OK". IntelliJ will automatically create its project artifacts based on the Gradle project file.
72
76
 
73
77
  * After the project has loaded and you've dismissed the "Tip of the Day" dialog, you may see a
74
78
  notice (in the top-right-hand corner), saying, "Unindex remote maven repositories found." you can
75
79
  safely dismiss this notice.
76
80
 
77
- 6. Open the `README.md` file and carefully read the background for the assignment.
81
+ 5. Open the `README.md` file and carefully read the background for the assignment.
78
82
 
79
- 7. Start by running the test suite: In the "Project" view, right-click on the test file
83
+ 6. Start by running the test suite: In the "Project" view, right-click on the test file
80
84
  (`etl\src\test\kotlin\EtlTest`), select "Run", then pick the "EtlTest" that has a JUnit icon to the
81
85
  left of it (red and green arrows), NOT the Gradle icon (circular green).
82
86
  ![Run tests through IDEA JUnit Runner, NOT Gradle](http://x.exercism.io/v3/tracks/kotlin/docs/img/mac-osx--idea-ce-run-unit-tests.png)
@@ -89,3 +93,83 @@ Gradle project: [C:\Users\johndoe\exercism\kotlin\etl\build.gradle ](...)
89
93
  nice list of what needs to be fixed in the "Messages Make" view.
90
94
 
91
95
  ... and away you go!!!
96
+
97
+ #### Option 2: Command Line
98
+
99
+ The Exercism exercises for Kotlin can be built and tested from the command line using [Gradle](https://gradle.org).
100
+
101
+ After [installing Gradle](https://www.jayway.com/2013/05/12/getting-started-with-gradle), you can run the tests for any exercise by running `gradle test`, as long as you're in the same directory as the `build.gradle` file:
102
+
103
+ ```
104
+ $ pwd
105
+ /Users/johndoe/Code/exercism/kotlin/hello-world
106
+
107
+ $ gradle test
108
+ ...
109
+
110
+ :test
111
+
112
+ HelloWorldTest > helloSampleName FAILED
113
+ org.junit.ComparisonFailure at HelloWorldTest.kt:25
114
+
115
+ HelloWorldTest > helloNullName FAILED
116
+ org.junit.ComparisonFailure at HelloWorldTest.kt:20
117
+
118
+ HelloWorldTest > helloBlankName FAILED
119
+ org.junit.ComparisonFailure at HelloWorldTest.kt:13
120
+
121
+ HelloWorldTest > helloNoName FAILED
122
+ org.junit.ComparisonFailure at HelloWorldTest.kt:8
123
+
124
+ HelloWorldTest > helloAnotherSampleName FAILED
125
+ org.junit.ComparisonFailure at HelloWorldTest.kt:30
126
+
127
+ 5 tests completed, 5 failed
128
+ :test FAILED
129
+
130
+ FAILURE: Build failed with an exception.
131
+
132
+ * What went wrong:
133
+ Execution failed for task ':test'.
134
+ > There were failing tests. See the report at: file:///Users/johndoe/Code/exercism/kotlin/hello-world/build/reports/tests/test/index.html
135
+
136
+ * Try:
137
+ Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
138
+
139
+ BUILD FAILED
140
+
141
+ Total time: 1.141 secs
142
+ ```
143
+
144
+ When test cases are failing, you can get more information about the failing tests by including the `test` task's `--info` option:
145
+
146
+ ```
147
+ $ gradle test --info
148
+ ...
149
+
150
+ :test
151
+
152
+ ...
153
+
154
+ HelloWorldTest > helloSampleName FAILED
155
+ org.junit.ComparisonFailure: expected:<Hell[o], Alice!> but was:<Hell[ooo], Alice!>
156
+ at org.junit.Assert.assertEquals(Assert.java:115)
157
+ at kotlin.test.junit.JUnitAsserter.assertEquals(JUnitSupport.kt:23)
158
+ at kotlin.test.AssertionsKt__TestAssertionsKt.assertEquals(TestAssertions.kt:29)
159
+ at kotlin.test.AssertionsKt.assertEquals(Unknown Source)
160
+ at kotlin.test.AssertionsKt__TestAssertionsKt.assertEquals$default(TestAssertions.kt:28)
161
+ at kotlin.test.AssertionsKt.assertEquals$default(Unknown Source)
162
+ at HelloWorldTest.helloSampleName(HelloWorldTest.kt:25)
163
+
164
+ ...
165
+
166
+ 5 tests completed, 5 failed
167
+
168
+ ...
169
+
170
+ BUILD FAILED
171
+
172
+ Total time: 1.162 secs
173
+
174
+ ...
175
+ ```