trackler 2.2.1.113 → 2.2.1.114

Sign up to get free protection for your applications and to get access to all the features.
Files changed (213) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/bash/exercises/hello-world/hello_world.sh +1 -1
  4. data/tracks/c/config.json +24 -0
  5. data/tracks/c/exercises/two-fer/README.md +12 -0
  6. data/tracks/c/exercises/two-fer/makefile +25 -0
  7. data/tracks/c/exercises/two-fer/src/example.c +11 -0
  8. data/tracks/c/exercises/two-fer/src/example.h +6 -0
  9. data/tracks/c/exercises/two-fer/test/test_two_fer.c +51 -0
  10. data/tracks/c/exercises/two-fer/test/vendor/unity.c +1300 -0
  11. data/tracks/c/exercises/two-fer/test/vendor/unity.h +274 -0
  12. data/tracks/c/exercises/two-fer/test/vendor/unity_internals.h +701 -0
  13. data/tracks/c/exercises/wordy/README.md +51 -0
  14. data/tracks/c/exercises/wordy/makefile +25 -0
  15. data/tracks/c/exercises/wordy/src/example.c +53 -0
  16. data/tracks/c/exercises/wordy/src/example.h +7 -0
  17. data/tracks/c/exercises/wordy/test/test_wordy.c +206 -0
  18. data/tracks/c/exercises/wordy/test/vendor/unity.c +1300 -0
  19. data/tracks/c/exercises/wordy/test/vendor/unity.h +274 -0
  20. data/tracks/c/exercises/wordy/test/vendor/unity_internals.h +701 -0
  21. data/tracks/dart/.gitignore +6 -7
  22. data/tracks/dart/bin/create_exercise.dart +17 -17
  23. data/tracks/dart/exercises/anagram/lib/anagram.dart +1 -1
  24. data/tracks/dart/exercises/anagram/test/anagram_test.dart +27 -31
  25. data/tracks/dart/exercises/bob/lib/example.dart +7 -1
  26. data/tracks/dart/exercises/bob/test/bob_test.dart +81 -43
  27. data/tracks/dart/exercises/difference-of-squares/lib/example.dart +3 -3
  28. data/tracks/dart/exercises/difference-of-squares/test/difference_of_squares_test.dart +26 -17
  29. data/tracks/dart/pubspec.lock +28 -16
  30. data/tracks/dart/pubspec.yaml +2 -2
  31. data/tracks/elixir/.travis.yml +3 -3
  32. data/tracks/elixir/README.md +1 -1
  33. data/tracks/elixir/config.json +12 -0
  34. data/tracks/elixir/exercises/alphametics/README.md +73 -0
  35. data/tracks/elixir/exercises/alphametics/alphametics.exs +21 -0
  36. data/tracks/elixir/exercises/alphametics/alphametics_test.exs +162 -0
  37. data/tracks/elixir/exercises/alphametics/example.exs +70 -0
  38. data/tracks/elixir/mix.exs +1 -1
  39. data/tracks/elixir/mix.lock +0 -1
  40. data/tracks/elm/config.json +9 -0
  41. data/tracks/elm/exercises/accumulate/Accumulate.elm +6 -1
  42. data/tracks/elm/exercises/accumulate/Accumulate.example.elm +1 -1
  43. data/tracks/elm/exercises/acronym/Acronym.elm +6 -1
  44. data/tracks/elm/exercises/acronym/Acronym.example.elm +1 -1
  45. data/tracks/elm/exercises/all-your-base/AllYourBase.elm +6 -1
  46. data/tracks/elm/exercises/all-your-base/AllYourBase.example.elm +1 -1
  47. data/tracks/elm/exercises/allergies/Allergies.elm +11 -1
  48. data/tracks/elm/exercises/allergies/Allergies.example.elm +1 -1
  49. data/tracks/elm/exercises/anagram/Anagram.elm +6 -1
  50. data/tracks/elm/exercises/anagram/Anagram.example.elm +1 -1
  51. data/tracks/elm/exercises/atbash-cipher/AtbashCipher.elm +11 -1
  52. data/tracks/elm/exercises/atbash-cipher/AtbashCipher.example.elm +1 -1
  53. data/tracks/elm/exercises/binary-search/BinarySearch.elm +1 -2
  54. data/tracks/elm/exercises/bob/Bob.elm +6 -1
  55. data/tracks/elm/exercises/bob/Bob.example.elm +1 -1
  56. data/tracks/elm/exercises/collatz-conjecture/CollatzConjecture.elm +5 -1
  57. data/tracks/elm/exercises/difference-of-squares/DifferenceOfSquares.elm +16 -1
  58. data/tracks/elm/exercises/difference-of-squares/DifferenceOfSquares.example.elm +1 -1
  59. data/tracks/elm/exercises/etl/Etl.elm +5 -0
  60. data/tracks/elm/exercises/gigasecond/Gigasecond.elm +5 -0
  61. data/tracks/elm/exercises/grade-school/GradeSchool.elm +32 -1
  62. data/tracks/elm/exercises/grade-school/GradeSchool.example.elm +1 -1
  63. data/tracks/elm/exercises/grains/Grains.elm +5 -1
  64. data/tracks/elm/exercises/grains/Grains.example.elm +1 -1
  65. data/tracks/elm/exercises/hamming/Hamming.elm +6 -1
  66. data/tracks/elm/exercises/hello-world/HelloWorld.elm +2 -2
  67. data/tracks/elm/exercises/hello-world/HelloWorld.example.elm +1 -1
  68. data/tracks/elm/exercises/isogram/Isogram.elm +6 -1
  69. data/tracks/elm/exercises/largest-series-product/LargestSeriesProduct.elm +5 -0
  70. data/tracks/elm/exercises/leap/Leap.elm +6 -1
  71. data/tracks/elm/exercises/leap/Leap.example.elm +1 -1
  72. data/tracks/elm/exercises/list-ops/ListOps.elm +51 -1
  73. data/tracks/elm/exercises/list-ops/ListOps.example.elm +11 -1
  74. data/tracks/elm/exercises/list-ops/tests/Tests.elm +1 -1
  75. data/tracks/elm/exercises/luhn/Luhn.elm +6 -1
  76. data/tracks/elm/exercises/nucleotide-count/NucleotideCount.elm +14 -1
  77. data/tracks/elm/exercises/nucleotide-count/NucleotideCount.example.elm +1 -1
  78. data/tracks/elm/exercises/pangram/Pangram.elm +6 -1
  79. data/tracks/elm/exercises/pangram/Pangram.example.elm +1 -1
  80. data/tracks/elm/exercises/pascals-triangle/Triangle.elm +6 -1
  81. data/tracks/elm/exercises/phone-number/PhoneNumber.elm +11 -1
  82. data/tracks/elm/exercises/phone-number/PhoneNumber.example.elm +1 -1
  83. data/tracks/elm/exercises/raindrops/Raindrops.elm +6 -1
  84. data/tracks/elm/exercises/raindrops/Raindrops.example.elm +1 -1
  85. data/tracks/elm/exercises/rna-transcription/RNATranscription.elm +6 -1
  86. data/tracks/elm/exercises/robot-simulator/RobotSimulator.elm +48 -1
  87. data/tracks/elm/exercises/robot-simulator/RobotSimulator.example.elm +10 -1
  88. data/tracks/elm/exercises/roman-numerals/RomanNumerals.elm +5 -0
  89. data/tracks/elm/exercises/run-length-encoding/RunLengthEncoding.elm +11 -2
  90. data/tracks/elm/exercises/say/Say.elm +11 -1
  91. data/tracks/elm/exercises/scrabble-score/ScrabbleScore.elm +6 -1
  92. data/tracks/elm/exercises/scrabble-score/ScrabbleScore.example.elm +1 -1
  93. data/tracks/elm/exercises/series/Series.elm +6 -1
  94. data/tracks/elm/exercises/series/Series.example.elm +1 -1
  95. data/tracks/elm/exercises/space-age/SpaceAge.elm +6 -1
  96. data/tracks/elm/exercises/space-age/SpaceAge.example.elm +1 -1
  97. data/tracks/elm/exercises/strain/Strain.elm +11 -1
  98. data/tracks/elm/exercises/strain/Strain.example.elm +1 -1
  99. data/tracks/elm/exercises/sublist/Sublist.elm +13 -1
  100. data/tracks/elm/exercises/sublist/Sublist.example.elm +1 -1
  101. data/tracks/elm/exercises/sum-of-multiples/SumOfMultiples.elm +6 -1
  102. data/tracks/elm/exercises/sum-of-multiples/SumOfMultiples.example.elm +1 -1
  103. data/tracks/elm/exercises/transpose/README.md +95 -0
  104. data/tracks/elm/exercises/transpose/Transpose.elm +6 -0
  105. data/tracks/elm/exercises/transpose/Transpose.example.elm +47 -0
  106. data/tracks/elm/exercises/transpose/elm-package.json +15 -0
  107. data/tracks/elm/exercises/transpose/tests/Tests.elm +202 -0
  108. data/tracks/elm/exercises/transpose/tests/elm-package.json +16 -0
  109. data/tracks/elm/exercises/triangle/Triangle.elm +12 -1
  110. data/tracks/elm/exercises/triangle/Triangle.example.elm +1 -1
  111. data/tracks/elm/exercises/twelve-days/TwelveDays.elm +6 -1
  112. data/tracks/elm/exercises/word-count/WordCount.elm +3 -1
  113. data/tracks/elm/exercises/word-count/WordCount.example.elm +1 -1
  114. data/tracks/go/exercises/crypto-square/crypto_square_test.go +9 -9
  115. data/tracks/go/exercises/crypto-square/example.go +7 -0
  116. data/tracks/idris/docs/INSTALLATION.md +4 -4
  117. data/tracks/java/config.json +13 -0
  118. data/tracks/java/exercises/alphametics/.meta/version +1 -0
  119. data/tracks/java/exercises/go-counting/.meta/src/reference/java/GoCounting.java +152 -0
  120. data/tracks/java/exercises/go-counting/.meta/src/reference/java/Player.java +3 -0
  121. data/tracks/java/exercises/go-counting/.meta/version +2 -0
  122. data/tracks/java/exercises/go-counting/README.md +50 -0
  123. data/tracks/java/exercises/go-counting/build.gradle +18 -0
  124. data/tracks/java/exercises/go-counting/src/main/java/.keep +0 -0
  125. data/tracks/java/exercises/go-counting/src/main/java/Player.java +3 -0
  126. data/tracks/java/exercises/go-counting/src/test/java/GoCountingTest.java +178 -0
  127. data/tracks/java/exercises/isogram/.meta/version +1 -1
  128. data/tracks/java/exercises/perfect-numbers/.meta/version +1 -1
  129. data/tracks/java/exercises/settings.gradle +1 -0
  130. data/tracks/javascript/.eslintignore +0 -1
  131. data/tracks/javascript/exercises/minesweeper/example.js +15 -15
  132. data/tracks/javascript/package-lock.json +7 -14
  133. data/tracks/javascript/package.json +1 -1
  134. data/tracks/perl6/exercises/grains/.meta/exercise-data.yaml +2 -2
  135. data/tracks/perl6/exercises/grains/grains.t +34 -13
  136. data/tracks/r/config.json +13 -0
  137. data/tracks/r/exercises/bob/README.md +2 -0
  138. data/tracks/r/exercises/bob/example.R +5 -0
  139. data/tracks/r/exercises/bob/test_bob.R +1 -1
  140. data/tracks/r/exercises/crypto-square/README.md +84 -0
  141. data/tracks/r/exercises/crypto-square/crypto-square.R +15 -0
  142. data/tracks/r/exercises/crypto-square/example.R +47 -0
  143. data/tracks/r/exercises/crypto-square/test_crypto-square.R +65 -0
  144. data/tracks/rust/exercises/allergies/tests/allergies.rs +36 -36
  145. data/tracks/rust/exercises/book-store/Cargo-example.toml +1 -2
  146. data/tracks/rust/exercises/book-store/Cargo.toml +1 -1
  147. data/tracks/rust/exercises/book-store/example.rs +10 -14
  148. data/tracks/rust/exercises/book-store/src/lib.rs +1 -1
  149. data/tracks/rust/exercises/book-store/tests/book-store.rs +15 -15
  150. data/tracks/rust/exercises/dominoes/example.rs +3 -3
  151. data/tracks/rust/exercises/dominoes/tests/dominoes.rs +26 -26
  152. data/tracks/rust/exercises/grade-school/tests/grade-school.rs +5 -5
  153. data/tracks/rust/exercises/poker/tests/poker.rs +55 -55
  154. data/tracks/rust/exercises/react/tests/react.rs +28 -28
  155. data/tracks/rust/exercises/rectangles/example.rs +1 -1
  156. data/tracks/rust/exercises/rectangles/tests/rectangles.rs +26 -26
  157. data/tracks/rust/exercises/simple-linked-list/tests/simple-linked-list.rs +1 -1
  158. data/tracks/rust/exercises/sum-of-multiples/tests/sum-of-multiples.rs +12 -12
  159. data/tracks/rust/exercises/variable-length-quantity/example.rs +9 -3
  160. data/tracks/rust/exercises/variable-length-quantity/src/lib.rs +7 -1
  161. data/tracks/rust/exercises/variable-length-quantity/tests/variable-length-quantity.rs +3 -3
  162. data/tracks/rust/exercises/word-count/tests/word-count.rs +20 -20
  163. data/tracks/scala/exercises/secret-handshake/src/test/scala/SecretHandshakeTest.scala +2 -2
  164. data/tracks/scala/exercises/sieve/src/test/scala/SieveTest.scala +12 -12
  165. data/tracks/scala/testgen/src/main/scala/SecretHandshakeTestGenerator.scala +2 -2
  166. data/tracks/scala/testgen/src/main/scala/SieveTestGenerator.scala +2 -2
  167. data/tracks/typescript/config.json +68 -0
  168. data/tracks/typescript/exercises/armstrong-numbers/README.md +44 -0
  169. data/tracks/typescript/exercises/armstrong-numbers/armstrong-numbers.example.ts +11 -0
  170. data/tracks/typescript/exercises/armstrong-numbers/armstrong-numbers.test.ts +35 -0
  171. data/tracks/typescript/exercises/armstrong-numbers/armstrong-numbers.ts +0 -0
  172. data/tracks/typescript/exercises/armstrong-numbers/package.json +36 -0
  173. data/tracks/typescript/exercises/armstrong-numbers/tsconfig.json +22 -0
  174. data/tracks/typescript/exercises/armstrong-numbers/tslint.json +127 -0
  175. data/tracks/typescript/exercises/armstrong-numbers/yarn.lock +2624 -0
  176. data/tracks/typescript/exercises/perfect-numbers/README.md +50 -0
  177. data/tracks/typescript/exercises/perfect-numbers/package.json +36 -0
  178. data/tracks/typescript/exercises/perfect-numbers/perfect-numbers.example.ts +55 -0
  179. data/tracks/typescript/exercises/perfect-numbers/perfect-numbers.test.ts +72 -0
  180. data/tracks/typescript/exercises/perfect-numbers/perfect-numbers.ts +0 -0
  181. data/tracks/typescript/exercises/perfect-numbers/tsconfig.json +22 -0
  182. data/tracks/typescript/exercises/perfect-numbers/tslint.json +127 -0
  183. data/tracks/typescript/exercises/perfect-numbers/yarn.lock +2624 -0
  184. data/tracks/typescript/exercises/rational-numbers/README.md +61 -0
  185. data/tracks/typescript/exercises/rational-numbers/package.json +36 -0
  186. data/tracks/typescript/exercises/rational-numbers/rational-numbers.example.ts +76 -0
  187. data/tracks/typescript/exercises/rational-numbers/rational-numbers.test.ts +197 -0
  188. data/tracks/typescript/exercises/rational-numbers/rational-numbers.ts +0 -0
  189. data/tracks/typescript/exercises/rational-numbers/tsconfig.json +22 -0
  190. data/tracks/typescript/exercises/rational-numbers/tslint.json +127 -0
  191. data/tracks/typescript/exercises/rational-numbers/yarn.lock +2624 -0
  192. data/tracks/typescript/exercises/run-length-encoding/README.md +56 -0
  193. data/tracks/typescript/exercises/run-length-encoding/package.json +36 -0
  194. data/tracks/typescript/exercises/run-length-encoding/run-length-encoding.example.ts +15 -0
  195. data/tracks/typescript/exercises/run-length-encoding/run-length-encoding.test.ts +71 -0
  196. data/tracks/typescript/exercises/run-length-encoding/run-length-encoding.ts +0 -0
  197. data/tracks/typescript/exercises/run-length-encoding/tsconfig.json +22 -0
  198. data/tracks/typescript/exercises/run-length-encoding/tslint.json +127 -0
  199. data/tracks/typescript/exercises/run-length-encoding/yarn.lock +2624 -0
  200. data/tracks/typescript/exercises/secret-handshake/README.md +61 -0
  201. data/tracks/typescript/exercises/secret-handshake/package.json +36 -0
  202. data/tracks/typescript/exercises/secret-handshake/secret-handshake.example.ts +43 -0
  203. data/tracks/typescript/exercises/secret-handshake/secret-handshake.test.ts +69 -0
  204. data/tracks/typescript/exercises/secret-handshake/secret-handshake.ts +0 -0
  205. data/tracks/typescript/exercises/secret-handshake/tsconfig.json +22 -0
  206. data/tracks/typescript/exercises/secret-handshake/tslint.json +127 -0
  207. data/tracks/typescript/exercises/secret-handshake/yarn.lock +2624 -0
  208. metadata +81 -7
  209. data/tracks/dart/exercises/anagram/pubspec.lock +0 -293
  210. data/tracks/dart/exercises/bob/pubspec.lock +0 -293
  211. data/tracks/dart/exercises/difference-of-squares/pubspec.lock +0 -293
  212. data/tracks/java/exercises/alphametics/.meta/src/version +0 -1
  213. data/tracks/r/exercises/bob/.meta/description.md +0 -10
@@ -1,6 +1,6 @@
1
1
  import org.scalatest.{Matchers, FunSuite}
2
2
 
3
- /** @version 1.0.0 */
3
+ /** @version 1.1.0 */
4
4
  class SieveTest extends FunSuite with Matchers {
5
5
 
6
6
  test("no primes under two") {
@@ -26,16 +26,16 @@ class SieveTest extends FunSuite with Matchers {
26
26
  pending
27
27
  Sieve.primes(1000) should be(
28
28
  List(2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61,
29
- 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137,
30
- 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211,
31
- 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283,
32
- 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379,
33
- 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461,
34
- 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563,
35
- 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643,
36
- 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739,
37
- 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829,
38
- 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937,
39
- 941, 947, 953, 967, 971, 977, 983, 991, 997))
29
+ 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139,
30
+ 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223,
31
+ 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293,
32
+ 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383,
33
+ 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463,
34
+ 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569,
35
+ 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647,
36
+ 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743,
37
+ 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839,
38
+ 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941,
39
+ 947, 953, 967, 971, 977, 983, 991, 997))
40
40
  }
41
41
  }
@@ -1,13 +1,13 @@
1
1
  import java.io.File
2
2
 
3
3
  import testgen.TestSuiteBuilder
4
- import testgen.TestSuiteBuilder.fromLabeledTest
4
+ import testgen.TestSuiteBuilder.fromLabeledTestFromInput
5
5
 
6
6
  object SecretHandshakeTestGenerator {
7
7
  def main(args: Array[String]): Unit = {
8
8
  val file = new File("src/main/resources/secret-handshake.json")
9
9
 
10
- val code = TestSuiteBuilder.build(file, fromLabeledTest("input"))
10
+ val code = TestSuiteBuilder.build(file, fromLabeledTestFromInput("number"))
11
11
  println(s"-------------")
12
12
  println(code)
13
13
  println(s"-------------")
@@ -1,13 +1,13 @@
1
1
  import java.io.File
2
2
 
3
3
  import testgen.TestSuiteBuilder
4
- import testgen.TestSuiteBuilder.fromLabeledTest
4
+ import testgen.TestSuiteBuilder.fromLabeledTestFromInput
5
5
 
6
6
  object SieveTestGenerator {
7
7
  def main(args: Array[String]): Unit = {
8
8
  val file = new File("src/main/resources/sieve.json")
9
9
 
10
- val code = TestSuiteBuilder.build(file, fromLabeledTest("limit"))
10
+ val code = TestSuiteBuilder.build(file, fromLabeledTestFromInput("limit"))
11
11
  println(s"-------------")
12
12
  println(code)
13
13
  println(s"-------------")
@@ -52,6 +52,34 @@
52
52
  ],
53
53
  "uuid": "3ea9d03e-6d06-48e5-a4d3-6e1bb9367c2f"
54
54
  },
55
+ {
56
+ "core": false,
57
+ "difficulty": 2,
58
+ "slug": "armstrong-numbers",
59
+ "topics": [
60
+ "algorithms",
61
+ "integers",
62
+ "mathematics"
63
+ ],
64
+ "unlocked_by": null,
65
+ "uuid": "31e1b8ba-a5dd-4806-9a4c-94f7550e25d5"
66
+ },
67
+ {
68
+ "core": false,
69
+ "difficulty": 2,
70
+ "slug": "run-length-encoding",
71
+ "topics": [
72
+ "control_flow_conditionals",
73
+ "exception_handling",
74
+ "parsing",
75
+ "pattern_recognition",
76
+ "regular_expressions",
77
+ "strings",
78
+ "text_formatting"
79
+ ],
80
+ "unlocked_by": null,
81
+ "uuid": "16c5cf98-c381-46bb-a439-78dbc847c0d0"
82
+ },
55
83
  {
56
84
  "core": false,
57
85
  "difficulty": 2,
@@ -142,6 +170,20 @@
142
170
  ],
143
171
  "uuid": "8fe1e0ef-068e-4a53-a576-35be59f8152f"
144
172
  },
173
+ {
174
+ "core": false,
175
+ "difficulty": 3,
176
+ "slug": "perfect-numbers",
177
+ "topics": [
178
+ "arrays",
179
+ "control_flow_conditionals",
180
+ "control_flow_loops",
181
+ "integers",
182
+ "mathematics"
183
+ ],
184
+ "unlocked_by": "space-age",
185
+ "uuid": "53cc064f-35d2-4a0e-a915-6a25130252c3"
186
+ },
145
187
  {
146
188
  "core": false,
147
189
  "difficulty": 3,
@@ -288,6 +330,20 @@
288
330
  ],
289
331
  "uuid": "7d42dd76-a6cf-11e7-abc4-cec278b6b50a"
290
332
  },
333
+ {
334
+ "core": true,
335
+ "difficulty": 6,
336
+ "slug": "secret-handshake",
337
+ "topics": [
338
+ "algorithms",
339
+ "arrays",
340
+ "bitwise_operations",
341
+ "control_flow_conditionals",
342
+ "control_flow_loops",
343
+ "games"
344
+ ],
345
+ "uuid": "ac2ec51b-a2cd-4d8c-99e3-5bd6758b4e7b"
346
+ },
291
347
  {
292
348
  "core": false,
293
349
  "difficulty": 6,
@@ -595,6 +651,18 @@
595
651
  ],
596
652
  "uuid": "10edb37d-cf5d-443a-bb4c-8831a3986b61"
597
653
  },
654
+ {
655
+ "core": false,
656
+ "difficulty": 5,
657
+ "slug": "rational-numbers",
658
+ "topics": [
659
+ "floating_point_numbers",
660
+ "mathematics",
661
+ "algorithms"
662
+ ],
663
+ "unlocked_by": "pascals-triangle",
664
+ "uuid": "4439ab9d-266b-483b-b5ca-3920c478fd62"
665
+ },
598
666
  {
599
667
  "core": false,
600
668
  "difficulty": 5,
@@ -0,0 +1,44 @@
1
+ # Armstrong Numbers
2
+
3
+ An [Armstrong number](https://en.wikipedia.org/wiki/Narcissistic_number) is a number that is the sum of its own digits each raised to the power of the number of digits.
4
+
5
+ For example:
6
+
7
+ - 9 is an Armstrong number, because `9 = 9^1 = 9`
8
+ - 10 is *not* an Armstrong number, because `10 != 1^2 + 0^2 = 2`
9
+ - 153 is an Armstrong number, because: `153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153`
10
+ - 154 is *not* an Armstrong number, because: `154 != 1^3 + 5^3 + 4^3 = 1 + 125 + 64 = 190`
11
+
12
+ Write some code to determine whether a number is an Armstrong number.
13
+
14
+ ## Setup
15
+
16
+ Go through the setup instructions for TypeScript to
17
+ install the necessary dependencies:
18
+
19
+ http://exercism.io/languages/typescript
20
+
21
+ ## Requirements
22
+
23
+ Install assignment dependencies:
24
+
25
+ ```bash
26
+ $ yarn install
27
+ ```
28
+
29
+ ## Making the test suite pass
30
+
31
+ Execute the tests with:
32
+
33
+ ```bash
34
+ $ yarn test
35
+ ```
36
+
37
+
38
+
39
+ ## Source
40
+
41
+ Wikipedia [https://en.wikipedia.org/wiki/Narcissistic_number](https://en.wikipedia.org/wiki/Narcissistic_number)
42
+
43
+ ## Submitting Incomplete Solutions
44
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,11 @@
1
+ class ArmstrongNumbers {
2
+ static isArmstrongNumber(input: number): boolean {
3
+ const digits = String(input).split('')
4
+ const sum = digits.reduce((total, current) => {
5
+ return total + Math.pow(parseInt(current, 10), digits.length)
6
+ }, 0)
7
+ return sum === input
8
+ }
9
+ }
10
+
11
+ export default ArmstrongNumbers
@@ -0,0 +1,35 @@
1
+ import ArmstrongNumbers from './armstrong-numbers'
2
+
3
+ describe('Armstrong Numbers', () => {
4
+ it('Single digit numbers are Armstrong numbers', () => {
5
+ expect(ArmstrongNumbers.isArmstrongNumber(5)).toBeTruthy()
6
+ })
7
+
8
+ xit('There are no 2 digit Armstrong numbers', () => {
9
+ expect(ArmstrongNumbers.isArmstrongNumber(10)).toBeFalsy()
10
+ })
11
+
12
+ xit('Three digit number that is an Armstrong number', () => {
13
+ expect(ArmstrongNumbers.isArmstrongNumber(153)).toBeTruthy()
14
+ })
15
+
16
+ xit('Three digit number that is not an Armstrong number', () => {
17
+ expect(ArmstrongNumbers.isArmstrongNumber(100)).toBeFalsy()
18
+ })
19
+
20
+ xit('Four digit number that is an Armstrong number', () => {
21
+ expect(ArmstrongNumbers.isArmstrongNumber(9474)).toBeTruthy()
22
+ })
23
+
24
+ xit('Four digit number that is not an Armstrong number', () => {
25
+ expect(ArmstrongNumbers.isArmstrongNumber(9475)).toBeFalsy()
26
+ })
27
+
28
+ xit('Seven digit number that is an Armstrong number', () => {
29
+ expect(ArmstrongNumbers.isArmstrongNumber(9926315)).toBeTruthy()
30
+ })
31
+
32
+ xit('Seven digit number that is not an Armstrong number', () => {
33
+ expect(ArmstrongNumbers.isArmstrongNumber(9926314)).toBeFalsy()
34
+ })
35
+ })
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "xtypescript",
3
+ "version": "1.0.0",
4
+ "description": "Exercism exercises in Typescript.",
5
+ "author": "",
6
+ "private": true,
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/exercism/xtypescript"
10
+ },
11
+ "devDependencies": {},
12
+ "scripts": {
13
+ "test": "tsc --noEmit -p . && jest --no-cache",
14
+ "lint": "tsc --noEmit -p . && tslint \"*.ts?(x)\"",
15
+ "lintci": "tslint \"*.ts?(x)\" --force"
16
+ },
17
+ "dependencies": {
18
+ "@types/jest": "^21.1.5",
19
+ "@types/node": "^8.0.47",
20
+ "jest": "^21.2.1",
21
+ "ts-jest": "^21.1.3",
22
+ "tslint": "^5.8.0",
23
+ "typescript": "^2.5.3"
24
+ },
25
+ "jest": {
26
+ "transform": {
27
+ ".(ts|tsx)": "<rootDir>/node_modules/ts-jest/preprocessor.js"
28
+ },
29
+ "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",
30
+ "moduleFileExtensions": [
31
+ "ts",
32
+ "tsx",
33
+ "js"
34
+ ]
35
+ }
36
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es2017",
4
+ "module": "commonjs",
5
+ "alwaysStrict": true,
6
+ "noUnusedLocals": true,
7
+ "noUnusedParameters": true,
8
+ "noImplicitAny": true,
9
+ "strictNullChecks": true,
10
+ "preserveConstEnums": true,
11
+ "noFallthroughCasesInSwitch":true,
12
+ "noImplicitThis":true,
13
+ "noImplicitReturns":true,
14
+ "sourceMap": true,
15
+ "noEmitOnError": true,
16
+ "outDir": "./build"
17
+ },
18
+ "compileOnSave": true,
19
+ "exclude": [
20
+ "node_modules"
21
+ ]
22
+ }
@@ -0,0 +1,127 @@
1
+ {
2
+ "jsRules": {
3
+ "class-name": true,
4
+ "comment-format": [
5
+ true,
6
+ "check-space"
7
+ ],
8
+ "indent": [
9
+ true,
10
+ "spaces"
11
+ ],
12
+ "no-duplicate-variable": true,
13
+ "no-eval": true,
14
+ "no-trailing-whitespace": true,
15
+ "no-unsafe-finally": true,
16
+ "one-line": [
17
+ true,
18
+ "check-open-brace",
19
+ "check-whitespace"
20
+ ],
21
+ "quotemark": [
22
+ false,
23
+ "double"
24
+ ],
25
+ "semicolon": [
26
+ true,
27
+ "never"
28
+ ],
29
+ "triple-equals": [
30
+ true,
31
+ "allow-null-check"
32
+ ],
33
+ "variable-name": [
34
+ true,
35
+ "ban-keywords"
36
+ ],
37
+ "whitespace": [
38
+ true,
39
+ "check-branch",
40
+ "check-decl",
41
+ "check-operator",
42
+ "check-separator",
43
+ "check-type"
44
+ ]
45
+ },
46
+ "rules": {
47
+ "class-name": true,
48
+ "comment-format": [
49
+ true,
50
+ "check-space"
51
+ ],
52
+ "indent": [
53
+ true,
54
+ "spaces"
55
+ ],
56
+ "no-eval": true,
57
+ "no-internal-module": true,
58
+ "no-trailing-whitespace": true,
59
+ "no-unsafe-finally": true,
60
+ "no-var-keyword": true,
61
+ "one-line": [
62
+ true,
63
+ "check-open-brace",
64
+ "check-whitespace"
65
+ ],
66
+ "semicolon": [
67
+ true,
68
+ "never"
69
+ ],
70
+ "triple-equals": [
71
+ true,
72
+ "allow-null-check"
73
+ ],
74
+ "typedef-whitespace": [
75
+ true,
76
+ {
77
+ "call-signature": "nospace",
78
+ "index-signature": "nospace",
79
+ "parameter": "nospace",
80
+ "property-declaration": "nospace",
81
+ "variable-declaration": "nospace"
82
+ }
83
+ ],
84
+ "variable-name": [
85
+ true,
86
+ "ban-keywords"
87
+ ],
88
+ "whitespace": [
89
+ true,
90
+ "check-branch",
91
+ "check-decl",
92
+ "check-operator",
93
+ "check-separator",
94
+ "check-type"
95
+ ],
96
+ "no-namespace": true,
97
+ "prefer-for-of": true,
98
+ "only-arrow-functions": [true, "allow-declarations"],
99
+ "no-var-requires": true,
100
+ "no-any": true,
101
+ "curly": true,
102
+ "forin": true,
103
+ "no-arg": true,
104
+ "label-position": true,
105
+ "no-conditional-assignment": true,
106
+ "no-console": [true, "log", "error"],
107
+ "no-construct": true,
108
+ "no-duplicate-variable": true,
109
+ "no-empty": true,
110
+ "no-invalid-this": [true, "check-function-in-method"],
111
+ "no-misused-new": true,
112
+ "no-null-keyword": true,
113
+ "no-string-literal": true,
114
+ "radix": true,
115
+ "typeof-compare": true,
116
+ "use-isnan": true,
117
+ "prefer-const": true,
118
+ "array-type": [true, "array-simple"],
119
+ "arrow-parens": true,
120
+ "new-parens": true,
121
+ "no-consecutive-blank-lines": [true,1],
122
+ "no-parameter-properties": true,
123
+ "no-unnecessary-initializer": true,
124
+ "object-literal-shorthand": true,
125
+ "object-literal-key-quotes": [true, "as-needed"]
126
+ }
127
+ }