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.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/tracks/bash/exercises/hello-world/hello_world.sh +1 -1
- data/tracks/c/config.json +24 -0
- data/tracks/c/exercises/two-fer/README.md +12 -0
- data/tracks/c/exercises/two-fer/makefile +25 -0
- data/tracks/c/exercises/two-fer/src/example.c +11 -0
- data/tracks/c/exercises/two-fer/src/example.h +6 -0
- data/tracks/c/exercises/two-fer/test/test_two_fer.c +51 -0
- data/tracks/c/exercises/two-fer/test/vendor/unity.c +1300 -0
- data/tracks/c/exercises/two-fer/test/vendor/unity.h +274 -0
- data/tracks/c/exercises/two-fer/test/vendor/unity_internals.h +701 -0
- data/tracks/c/exercises/wordy/README.md +51 -0
- data/tracks/c/exercises/wordy/makefile +25 -0
- data/tracks/c/exercises/wordy/src/example.c +53 -0
- data/tracks/c/exercises/wordy/src/example.h +7 -0
- data/tracks/c/exercises/wordy/test/test_wordy.c +206 -0
- data/tracks/c/exercises/wordy/test/vendor/unity.c +1300 -0
- data/tracks/c/exercises/wordy/test/vendor/unity.h +274 -0
- data/tracks/c/exercises/wordy/test/vendor/unity_internals.h +701 -0
- data/tracks/dart/.gitignore +6 -7
- data/tracks/dart/bin/create_exercise.dart +17 -17
- data/tracks/dart/exercises/anagram/lib/anagram.dart +1 -1
- data/tracks/dart/exercises/anagram/test/anagram_test.dart +27 -31
- data/tracks/dart/exercises/bob/lib/example.dart +7 -1
- data/tracks/dart/exercises/bob/test/bob_test.dart +81 -43
- data/tracks/dart/exercises/difference-of-squares/lib/example.dart +3 -3
- data/tracks/dart/exercises/difference-of-squares/test/difference_of_squares_test.dart +26 -17
- data/tracks/dart/pubspec.lock +28 -16
- data/tracks/dart/pubspec.yaml +2 -2
- data/tracks/elixir/.travis.yml +3 -3
- data/tracks/elixir/README.md +1 -1
- data/tracks/elixir/config.json +12 -0
- data/tracks/elixir/exercises/alphametics/README.md +73 -0
- data/tracks/elixir/exercises/alphametics/alphametics.exs +21 -0
- data/tracks/elixir/exercises/alphametics/alphametics_test.exs +162 -0
- data/tracks/elixir/exercises/alphametics/example.exs +70 -0
- data/tracks/elixir/mix.exs +1 -1
- data/tracks/elixir/mix.lock +0 -1
- data/tracks/elm/config.json +9 -0
- data/tracks/elm/exercises/accumulate/Accumulate.elm +6 -1
- data/tracks/elm/exercises/accumulate/Accumulate.example.elm +1 -1
- data/tracks/elm/exercises/acronym/Acronym.elm +6 -1
- data/tracks/elm/exercises/acronym/Acronym.example.elm +1 -1
- data/tracks/elm/exercises/all-your-base/AllYourBase.elm +6 -1
- data/tracks/elm/exercises/all-your-base/AllYourBase.example.elm +1 -1
- data/tracks/elm/exercises/allergies/Allergies.elm +11 -1
- data/tracks/elm/exercises/allergies/Allergies.example.elm +1 -1
- data/tracks/elm/exercises/anagram/Anagram.elm +6 -1
- data/tracks/elm/exercises/anagram/Anagram.example.elm +1 -1
- data/tracks/elm/exercises/atbash-cipher/AtbashCipher.elm +11 -1
- data/tracks/elm/exercises/atbash-cipher/AtbashCipher.example.elm +1 -1
- data/tracks/elm/exercises/binary-search/BinarySearch.elm +1 -2
- data/tracks/elm/exercises/bob/Bob.elm +6 -1
- data/tracks/elm/exercises/bob/Bob.example.elm +1 -1
- data/tracks/elm/exercises/collatz-conjecture/CollatzConjecture.elm +5 -1
- data/tracks/elm/exercises/difference-of-squares/DifferenceOfSquares.elm +16 -1
- data/tracks/elm/exercises/difference-of-squares/DifferenceOfSquares.example.elm +1 -1
- data/tracks/elm/exercises/etl/Etl.elm +5 -0
- data/tracks/elm/exercises/gigasecond/Gigasecond.elm +5 -0
- data/tracks/elm/exercises/grade-school/GradeSchool.elm +32 -1
- data/tracks/elm/exercises/grade-school/GradeSchool.example.elm +1 -1
- data/tracks/elm/exercises/grains/Grains.elm +5 -1
- data/tracks/elm/exercises/grains/Grains.example.elm +1 -1
- data/tracks/elm/exercises/hamming/Hamming.elm +6 -1
- data/tracks/elm/exercises/hello-world/HelloWorld.elm +2 -2
- data/tracks/elm/exercises/hello-world/HelloWorld.example.elm +1 -1
- data/tracks/elm/exercises/isogram/Isogram.elm +6 -1
- data/tracks/elm/exercises/largest-series-product/LargestSeriesProduct.elm +5 -0
- data/tracks/elm/exercises/leap/Leap.elm +6 -1
- data/tracks/elm/exercises/leap/Leap.example.elm +1 -1
- data/tracks/elm/exercises/list-ops/ListOps.elm +51 -1
- data/tracks/elm/exercises/list-ops/ListOps.example.elm +11 -1
- data/tracks/elm/exercises/list-ops/tests/Tests.elm +1 -1
- data/tracks/elm/exercises/luhn/Luhn.elm +6 -1
- data/tracks/elm/exercises/nucleotide-count/NucleotideCount.elm +14 -1
- data/tracks/elm/exercises/nucleotide-count/NucleotideCount.example.elm +1 -1
- data/tracks/elm/exercises/pangram/Pangram.elm +6 -1
- data/tracks/elm/exercises/pangram/Pangram.example.elm +1 -1
- data/tracks/elm/exercises/pascals-triangle/Triangle.elm +6 -1
- data/tracks/elm/exercises/phone-number/PhoneNumber.elm +11 -1
- data/tracks/elm/exercises/phone-number/PhoneNumber.example.elm +1 -1
- data/tracks/elm/exercises/raindrops/Raindrops.elm +6 -1
- data/tracks/elm/exercises/raindrops/Raindrops.example.elm +1 -1
- data/tracks/elm/exercises/rna-transcription/RNATranscription.elm +6 -1
- data/tracks/elm/exercises/robot-simulator/RobotSimulator.elm +48 -1
- data/tracks/elm/exercises/robot-simulator/RobotSimulator.example.elm +10 -1
- data/tracks/elm/exercises/roman-numerals/RomanNumerals.elm +5 -0
- data/tracks/elm/exercises/run-length-encoding/RunLengthEncoding.elm +11 -2
- data/tracks/elm/exercises/say/Say.elm +11 -1
- data/tracks/elm/exercises/scrabble-score/ScrabbleScore.elm +6 -1
- data/tracks/elm/exercises/scrabble-score/ScrabbleScore.example.elm +1 -1
- data/tracks/elm/exercises/series/Series.elm +6 -1
- data/tracks/elm/exercises/series/Series.example.elm +1 -1
- data/tracks/elm/exercises/space-age/SpaceAge.elm +6 -1
- data/tracks/elm/exercises/space-age/SpaceAge.example.elm +1 -1
- data/tracks/elm/exercises/strain/Strain.elm +11 -1
- data/tracks/elm/exercises/strain/Strain.example.elm +1 -1
- data/tracks/elm/exercises/sublist/Sublist.elm +13 -1
- data/tracks/elm/exercises/sublist/Sublist.example.elm +1 -1
- data/tracks/elm/exercises/sum-of-multiples/SumOfMultiples.elm +6 -1
- data/tracks/elm/exercises/sum-of-multiples/SumOfMultiples.example.elm +1 -1
- data/tracks/elm/exercises/transpose/README.md +95 -0
- data/tracks/elm/exercises/transpose/Transpose.elm +6 -0
- data/tracks/elm/exercises/transpose/Transpose.example.elm +47 -0
- data/tracks/elm/exercises/transpose/elm-package.json +15 -0
- data/tracks/elm/exercises/transpose/tests/Tests.elm +202 -0
- data/tracks/elm/exercises/transpose/tests/elm-package.json +16 -0
- data/tracks/elm/exercises/triangle/Triangle.elm +12 -1
- data/tracks/elm/exercises/triangle/Triangle.example.elm +1 -1
- data/tracks/elm/exercises/twelve-days/TwelveDays.elm +6 -1
- data/tracks/elm/exercises/word-count/WordCount.elm +3 -1
- data/tracks/elm/exercises/word-count/WordCount.example.elm +1 -1
- data/tracks/go/exercises/crypto-square/crypto_square_test.go +9 -9
- data/tracks/go/exercises/crypto-square/example.go +7 -0
- data/tracks/idris/docs/INSTALLATION.md +4 -4
- data/tracks/java/config.json +13 -0
- data/tracks/java/exercises/alphametics/.meta/version +1 -0
- data/tracks/java/exercises/go-counting/.meta/src/reference/java/GoCounting.java +152 -0
- data/tracks/java/exercises/go-counting/.meta/src/reference/java/Player.java +3 -0
- data/tracks/java/exercises/go-counting/.meta/version +2 -0
- data/tracks/java/exercises/go-counting/README.md +50 -0
- data/tracks/java/exercises/go-counting/build.gradle +18 -0
- data/tracks/java/exercises/go-counting/src/main/java/.keep +0 -0
- data/tracks/java/exercises/go-counting/src/main/java/Player.java +3 -0
- data/tracks/java/exercises/go-counting/src/test/java/GoCountingTest.java +178 -0
- data/tracks/java/exercises/isogram/.meta/version +1 -1
- data/tracks/java/exercises/perfect-numbers/.meta/version +1 -1
- data/tracks/java/exercises/settings.gradle +1 -0
- data/tracks/javascript/.eslintignore +0 -1
- data/tracks/javascript/exercises/minesweeper/example.js +15 -15
- data/tracks/javascript/package-lock.json +7 -14
- data/tracks/javascript/package.json +1 -1
- data/tracks/perl6/exercises/grains/.meta/exercise-data.yaml +2 -2
- data/tracks/perl6/exercises/grains/grains.t +34 -13
- data/tracks/r/config.json +13 -0
- data/tracks/r/exercises/bob/README.md +2 -0
- data/tracks/r/exercises/bob/example.R +5 -0
- data/tracks/r/exercises/bob/test_bob.R +1 -1
- data/tracks/r/exercises/crypto-square/README.md +84 -0
- data/tracks/r/exercises/crypto-square/crypto-square.R +15 -0
- data/tracks/r/exercises/crypto-square/example.R +47 -0
- data/tracks/r/exercises/crypto-square/test_crypto-square.R +65 -0
- data/tracks/rust/exercises/allergies/tests/allergies.rs +36 -36
- data/tracks/rust/exercises/book-store/Cargo-example.toml +1 -2
- data/tracks/rust/exercises/book-store/Cargo.toml +1 -1
- data/tracks/rust/exercises/book-store/example.rs +10 -14
- data/tracks/rust/exercises/book-store/src/lib.rs +1 -1
- data/tracks/rust/exercises/book-store/tests/book-store.rs +15 -15
- data/tracks/rust/exercises/dominoes/example.rs +3 -3
- data/tracks/rust/exercises/dominoes/tests/dominoes.rs +26 -26
- data/tracks/rust/exercises/grade-school/tests/grade-school.rs +5 -5
- data/tracks/rust/exercises/poker/tests/poker.rs +55 -55
- data/tracks/rust/exercises/react/tests/react.rs +28 -28
- data/tracks/rust/exercises/rectangles/example.rs +1 -1
- data/tracks/rust/exercises/rectangles/tests/rectangles.rs +26 -26
- data/tracks/rust/exercises/simple-linked-list/tests/simple-linked-list.rs +1 -1
- data/tracks/rust/exercises/sum-of-multiples/tests/sum-of-multiples.rs +12 -12
- data/tracks/rust/exercises/variable-length-quantity/example.rs +9 -3
- data/tracks/rust/exercises/variable-length-quantity/src/lib.rs +7 -1
- data/tracks/rust/exercises/variable-length-quantity/tests/variable-length-quantity.rs +3 -3
- data/tracks/rust/exercises/word-count/tests/word-count.rs +20 -20
- data/tracks/scala/exercises/secret-handshake/src/test/scala/SecretHandshakeTest.scala +2 -2
- data/tracks/scala/exercises/sieve/src/test/scala/SieveTest.scala +12 -12
- data/tracks/scala/testgen/src/main/scala/SecretHandshakeTestGenerator.scala +2 -2
- data/tracks/scala/testgen/src/main/scala/SieveTestGenerator.scala +2 -2
- data/tracks/typescript/config.json +68 -0
- data/tracks/typescript/exercises/armstrong-numbers/README.md +44 -0
- data/tracks/typescript/exercises/armstrong-numbers/armstrong-numbers.example.ts +11 -0
- data/tracks/typescript/exercises/armstrong-numbers/armstrong-numbers.test.ts +35 -0
- data/tracks/typescript/exercises/armstrong-numbers/armstrong-numbers.ts +0 -0
- data/tracks/typescript/exercises/armstrong-numbers/package.json +36 -0
- data/tracks/typescript/exercises/armstrong-numbers/tsconfig.json +22 -0
- data/tracks/typescript/exercises/armstrong-numbers/tslint.json +127 -0
- data/tracks/typescript/exercises/armstrong-numbers/yarn.lock +2624 -0
- data/tracks/typescript/exercises/perfect-numbers/README.md +50 -0
- data/tracks/typescript/exercises/perfect-numbers/package.json +36 -0
- data/tracks/typescript/exercises/perfect-numbers/perfect-numbers.example.ts +55 -0
- data/tracks/typescript/exercises/perfect-numbers/perfect-numbers.test.ts +72 -0
- data/tracks/typescript/exercises/perfect-numbers/perfect-numbers.ts +0 -0
- data/tracks/typescript/exercises/perfect-numbers/tsconfig.json +22 -0
- data/tracks/typescript/exercises/perfect-numbers/tslint.json +127 -0
- data/tracks/typescript/exercises/perfect-numbers/yarn.lock +2624 -0
- data/tracks/typescript/exercises/rational-numbers/README.md +61 -0
- data/tracks/typescript/exercises/rational-numbers/package.json +36 -0
- data/tracks/typescript/exercises/rational-numbers/rational-numbers.example.ts +76 -0
- data/tracks/typescript/exercises/rational-numbers/rational-numbers.test.ts +197 -0
- data/tracks/typescript/exercises/rational-numbers/rational-numbers.ts +0 -0
- data/tracks/typescript/exercises/rational-numbers/tsconfig.json +22 -0
- data/tracks/typescript/exercises/rational-numbers/tslint.json +127 -0
- data/tracks/typescript/exercises/rational-numbers/yarn.lock +2624 -0
- data/tracks/typescript/exercises/run-length-encoding/README.md +56 -0
- data/tracks/typescript/exercises/run-length-encoding/package.json +36 -0
- data/tracks/typescript/exercises/run-length-encoding/run-length-encoding.example.ts +15 -0
- data/tracks/typescript/exercises/run-length-encoding/run-length-encoding.test.ts +71 -0
- data/tracks/typescript/exercises/run-length-encoding/run-length-encoding.ts +0 -0
- data/tracks/typescript/exercises/run-length-encoding/tsconfig.json +22 -0
- data/tracks/typescript/exercises/run-length-encoding/tslint.json +127 -0
- data/tracks/typescript/exercises/run-length-encoding/yarn.lock +2624 -0
- data/tracks/typescript/exercises/secret-handshake/README.md +61 -0
- data/tracks/typescript/exercises/secret-handshake/package.json +36 -0
- data/tracks/typescript/exercises/secret-handshake/secret-handshake.example.ts +43 -0
- data/tracks/typescript/exercises/secret-handshake/secret-handshake.test.ts +69 -0
- data/tracks/typescript/exercises/secret-handshake/secret-handshake.ts +0 -0
- data/tracks/typescript/exercises/secret-handshake/tsconfig.json +22 -0
- data/tracks/typescript/exercises/secret-handshake/tslint.json +127 -0
- data/tracks/typescript/exercises/secret-handshake/yarn.lock +2624 -0
- metadata +81 -7
- data/tracks/dart/exercises/anagram/pubspec.lock +0 -293
- data/tracks/dart/exercises/bob/pubspec.lock +0 -293
- data/tracks/dart/exercises/difference-of-squares/pubspec.lock +0 -293
- data/tracks/java/exercises/alphametics/.meta/src/version +0 -1
- 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.
|
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
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
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.
|
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,
|
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.
|
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,
|
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
|
+
})
|
File without changes
|
@@ -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
|
+
}
|