trackler 2.2.1.58 → 2.2.1.59

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/isbn-verifier/canonical-data.json +3 -3
  4. data/tracks/c/docs/C_STYLE_GUIDE.md +23 -0
  5. data/tracks/erlang/config.json +10 -0
  6. data/tracks/erlang/exercises/custom-set/README.md +54 -0
  7. data/tracks/erlang/exercises/custom-set/include/exercism.hrl +11 -0
  8. data/tracks/erlang/exercises/custom-set/rebar.config +30 -0
  9. data/tracks/erlang/exercises/custom-set/src/custom_set.app.src +9 -0
  10. data/tracks/erlang/exercises/custom-set/src/custom_set.erl +27 -0
  11. data/tracks/erlang/exercises/custom-set/src/example.erl +51 -0
  12. data/tracks/erlang/exercises/custom-set/test/custom_set_tests.erl +188 -0
  13. data/tracks/erlang/testgen/src/tgen_custom-set.erl +98 -0
  14. data/tracks/haskell/config.json +11 -0
  15. data/tracks/haskell/exercises/perfect-numbers/README.md +78 -0
  16. data/tracks/haskell/exercises/perfect-numbers/examples/success-standard/package.yaml +16 -0
  17. data/tracks/haskell/exercises/perfect-numbers/examples/success-standard/src/PerfectNumbers.hs +10 -0
  18. data/tracks/haskell/exercises/perfect-numbers/package.yaml +20 -0
  19. data/tracks/haskell/exercises/perfect-numbers/src/PerfectNumbers.hs +6 -0
  20. data/tracks/haskell/exercises/perfect-numbers/stack.yaml +1 -0
  21. data/tracks/haskell/exercises/perfect-numbers/test/Tests.hs +79 -0
  22. data/tracks/javascript/exercises/acronym/README.md +1 -1
  23. data/tracks/javascript/exercises/all-your-base/README.md +1 -1
  24. data/tracks/javascript/exercises/allergies/README.md +1 -1
  25. data/tracks/javascript/exercises/alphametics/README.md +1 -1
  26. data/tracks/javascript/exercises/anagram/README.md +1 -1
  27. data/tracks/javascript/exercises/atbash-cipher/README.md +1 -1
  28. data/tracks/javascript/exercises/beer-song/README.md +1 -1
  29. data/tracks/javascript/exercises/binary-search-tree/README.md +1 -1
  30. data/tracks/javascript/exercises/binary-search/README.md +1 -1
  31. data/tracks/javascript/exercises/binary/README.md +1 -1
  32. data/tracks/javascript/exercises/bob/README.md +1 -1
  33. data/tracks/javascript/exercises/bowling/README.md +1 -1
  34. data/tracks/javascript/exercises/bracket-push/README.md +1 -1
  35. data/tracks/javascript/exercises/change/README.md +1 -1
  36. data/tracks/javascript/exercises/circular-buffer/README.md +1 -1
  37. data/tracks/javascript/exercises/clock/README.md +1 -1
  38. data/tracks/javascript/exercises/collatz-conjecture/README.md +1 -1
  39. data/tracks/javascript/exercises/crypto-square/README.md +1 -1
  40. data/tracks/javascript/exercises/custom-set/README.md +1 -1
  41. data/tracks/javascript/exercises/diamond/README.md +1 -1
  42. data/tracks/javascript/exercises/difference-of-squares/README.md +1 -1
  43. data/tracks/javascript/exercises/diffie-hellman/README.md +1 -1
  44. data/tracks/javascript/exercises/etl/README.md +1 -1
  45. data/tracks/javascript/exercises/flatten-array/README.md +1 -1
  46. data/tracks/javascript/exercises/food-chain/README.md +1 -1
  47. data/tracks/javascript/exercises/gigasecond/README.md +1 -1
  48. data/tracks/javascript/exercises/grade-school/README.md +1 -1
  49. data/tracks/javascript/exercises/grains/README.md +1 -1
  50. data/tracks/javascript/exercises/hamming/README.md +1 -1
  51. data/tracks/javascript/exercises/hello-world/README.md +1 -1
  52. data/tracks/javascript/exercises/hexadecimal/README.md +1 -1
  53. data/tracks/javascript/exercises/isogram/README.md +1 -1
  54. data/tracks/javascript/exercises/kindergarten-garden/README.md +1 -1
  55. data/tracks/javascript/exercises/largest-series-product/README.md +1 -1
  56. data/tracks/javascript/exercises/leap/README.md +1 -1
  57. data/tracks/javascript/exercises/linked-list/README.md +1 -1
  58. data/tracks/javascript/exercises/list-ops/README.md +1 -1
  59. data/tracks/javascript/exercises/luhn/README.md +1 -1
  60. data/tracks/javascript/exercises/matrix/README.md +1 -1
  61. data/tracks/javascript/exercises/meetup/README.md +1 -1
  62. data/tracks/javascript/exercises/minesweeper/README.md +1 -1
  63. data/tracks/javascript/exercises/nth-prime/README.md +1 -1
  64. data/tracks/javascript/exercises/nucleotide-count/README.md +1 -1
  65. data/tracks/javascript/exercises/ocr-numbers/README.md +1 -1
  66. data/tracks/javascript/exercises/octal/README.md +1 -1
  67. data/tracks/javascript/exercises/palindrome-products/README.md +1 -1
  68. data/tracks/javascript/exercises/pangram/README.md +1 -1
  69. data/tracks/javascript/exercises/pascals-triangle/README.md +1 -1
  70. data/tracks/javascript/exercises/perfect-numbers/README.md +1 -1
  71. data/tracks/javascript/exercises/phone-number/README.md +1 -1
  72. data/tracks/javascript/exercises/pig-latin/README.md +1 -1
  73. data/tracks/javascript/exercises/point-mutations/README.md +1 -1
  74. data/tracks/javascript/exercises/prime-factors/README.md +1 -1
  75. data/tracks/javascript/exercises/protein-translation/README.md +1 -1
  76. data/tracks/javascript/exercises/proverb/README.md +1 -1
  77. data/tracks/javascript/exercises/pythagorean-triplet/README.md +1 -1
  78. data/tracks/javascript/exercises/queen-attack/README.md +1 -1
  79. data/tracks/javascript/exercises/raindrops/README.md +1 -1
  80. data/tracks/javascript/exercises/rna-transcription/README.md +1 -1
  81. data/tracks/javascript/exercises/robot-name/README.md +1 -1
  82. data/tracks/javascript/exercises/robot-simulator/README.md +1 -1
  83. data/tracks/javascript/exercises/roman-numerals/README.md +1 -1
  84. data/tracks/javascript/exercises/run-length-encoding/README.md +1 -1
  85. data/tracks/javascript/exercises/saddle-points/README.md +1 -1
  86. data/tracks/javascript/exercises/say/README.md +1 -1
  87. data/tracks/javascript/exercises/scrabble-score/README.md +1 -1
  88. data/tracks/javascript/exercises/secret-handshake/README.md +1 -1
  89. data/tracks/javascript/exercises/series/README.md +1 -1
  90. data/tracks/javascript/exercises/sieve/README.md +1 -1
  91. data/tracks/javascript/exercises/simple-cipher/README.md +1 -1
  92. data/tracks/javascript/exercises/simple-linked-list/README.md +1 -1
  93. data/tracks/javascript/exercises/space-age/README.md +1 -1
  94. data/tracks/javascript/exercises/strain/README.md +1 -1
  95. data/tracks/javascript/exercises/sum-of-multiples/README.md +1 -1
  96. data/tracks/javascript/exercises/transpose/README.md +1 -1
  97. data/tracks/javascript/exercises/triangle/README.md +1 -1
  98. data/tracks/javascript/exercises/trinary/README.md +1 -1
  99. data/tracks/javascript/exercises/twelve-days/README.md +1 -1
  100. data/tracks/javascript/exercises/two-bucket/README.md +1 -1
  101. data/tracks/javascript/exercises/word-count/README.md +1 -1
  102. data/tracks/javascript/exercises/wordy/README.md +1 -1
  103. data/tracks/javascript/exercises/zipper/README.md +1 -1
  104. data/tracks/typescript/config.json +15 -1
  105. data/tracks/typescript/exercises/pythagorean-triplet/README.md +54 -0
  106. data/tracks/typescript/exercises/pythagorean-triplet/package.json +36 -0
  107. data/tracks/typescript/exercises/pythagorean-triplet/pythagorean-triplet.example.ts +60 -0
  108. data/tracks/typescript/exercises/pythagorean-triplet/pythagorean-triplet.test.ts +37 -0
  109. data/tracks/typescript/exercises/pythagorean-triplet/pythagorean-triplet.ts +0 -0
  110. data/tracks/typescript/exercises/pythagorean-triplet/tsconfig.json +22 -0
  111. data/tracks/typescript/exercises/pythagorean-triplet/tslint.json +127 -0
  112. data/tracks/typescript/exercises/pythagorean-triplet/yarn.lock +2624 -0
  113. metadata +25 -2
@@ -0,0 +1,98 @@
1
+ -module('tgen_custom-set').
2
+
3
+ -behaviour(tgen).
4
+
5
+ -export([
6
+ available/0,
7
+ version/0,
8
+ generate_test/1
9
+ ]).
10
+
11
+ -spec available() -> true.
12
+ available() ->
13
+ true.
14
+
15
+ version() -> 1.
16
+
17
+ generate_test(#{description := _, cases := Cases}) ->
18
+ rewrap(lists:flatten(lists:map(fun generate_test/1, Cases)), {[], []});
19
+ generate_test(F=#{description := Desc, expected := Exp, property := Prop, set1 := Set1, set2 := Set2}) when is_list(Exp) ->
20
+ TestName = tgen:to_test_name(Desc),
21
+ Property = binary_to_list(Prop),
22
+
23
+ Fn = tgs:simple_fun(TestName, [
24
+ tgs:call_macro("assertEqual", [
25
+ tgs:call_macro("TESTED_MODULE:from_list", [
26
+ tgs:value(Exp)]),
27
+ tgs:call_macro("TESTED_MODULE:" ++ Property, [
28
+ tgs:call_macro("TESTED_MODULE:from_list", [tgs:value(Set1)]),
29
+ tgs:call_macro("TESTED_MODULE:from_list", [tgs:value(Set2)])])])]),
30
+
31
+ {ok, Fn, [{Property, ["Set1", "Set2"]}]};
32
+ generate_test(F=#{description := Desc, expected := Exp, property := Prop, set1 := Set1, set2 := Set2}) when Exp =:= true; Exp =:= false ->
33
+ TestName = tgen:to_test_name(Desc),
34
+ Property = binary_to_list(Prop),
35
+
36
+ Assert = case Exp of
37
+ true -> "assert";
38
+ false -> "assertNot"
39
+ end,
40
+
41
+ Fn = tgs:simple_fun(TestName, [
42
+ tgs:call_macro(Assert, [
43
+ tgs:call_macro("TESTED_MODULE:" ++ Property, [
44
+ tgs:call_macro("TESTED_MODULE:from_list", [tgs:value(Set1)]),
45
+ tgs:call_macro("TESTED_MODULE:from_list", [tgs:value(Set2)])])])]),
46
+
47
+ {ok, Fn, [{Property, ["Set1", "Set2"]}, {"from_list", ["List"]}]};
48
+ generate_test(#{description := Desc, expected := Exp, property := Prop, set := Set, element := Elem}) when is_list(Exp) ->
49
+ TestName = tgen:to_test_name(Desc),
50
+ Property = binary_to_list(Prop),
51
+
52
+ Fn = tgs:simple_fun(TestName, [
53
+ tgs:call_macro("assertEqual", [
54
+ tgs:call_macro("TESTED_MODULE:from_list", [
55
+ tgs:value(Exp)]),
56
+ tgs:call_macro("TESTED_MODULE:" ++ Property, [
57
+ tgs:value(Elem),
58
+ tgs:call_macro("TESTED_MODULE:from_list", [
59
+ erl_syntax:abstract(Set)])])])]),
60
+
61
+ {ok, Fn, [{Property, ["Elem", "Set"]}, {"from_list", ["List"]}]};
62
+ generate_test(#{description := Desc, expected := Exp, property := Prop, set := Set, element := Elem}) when Exp =:= true; Exp =:= false ->
63
+ TestName = tgen:to_test_name(Desc),
64
+ Property = binary_to_list(Prop),
65
+
66
+ Assert = case Exp of
67
+ true -> "assert";
68
+ false -> "assertNot"
69
+ end,
70
+
71
+ Fn = tgs:simple_fun(TestName, [
72
+ tgs:call_macro(Assert, [
73
+ tgs:call_macro("TESTED_MODULE:" ++ Property, [
74
+ tgs:value(Elem),
75
+ tgs:call_macro("TESTED_MODULE:from_list", [
76
+ erl_syntax:abstract(Set)])])])]),
77
+
78
+ {ok, Fn, [{Property, ["Elem", "Set"]}, {"from_list", ["List"]}]};
79
+ generate_test(#{description := Desc, expected := Exp, property := <<"empty">>, set := Set}) when Exp =:= true; Exp =:= false ->
80
+ TestName = tgen:to_test_name(Desc),
81
+ Property = binary_to_list(<<"empty">>),
82
+
83
+ Assert = case Exp of
84
+ true -> "assert";
85
+ false -> "assertNot"
86
+ end,
87
+
88
+ Fn = tgs:simple_fun(TestName, [
89
+ tgs:call_macro(Assert, [
90
+ tgs:call_macro("TESTED_MODULE:" ++ Property, [
91
+ tgs:call_macro("TESTED_MODULE:from_list", [
92
+ tgs:value(Set)])])])]),
93
+
94
+ {ok, Fn, [{Property, ["Set"]}, {"from_list", ["List"]}]}.
95
+
96
+ rewrap([], {Fns, Props}) -> {ok, lists:reverse(Fns), Props};
97
+ rewrap([{ok, Fn, Props}|Tail], {Fns, AccProps}) ->
98
+ rewrap(Tail, {[Fn|Fns], Props ++ AccProps}).
@@ -69,6 +69,17 @@
69
69
  "Number Theory"
70
70
  ]
71
71
  },
72
+ {
73
+ "uuid": "928b22c5-f2bd-4496-8605-fcff2dad2c3a",
74
+ "slug": "perfect-numbers",
75
+ "core": false,
76
+ "unlocked_by": null,
77
+ "difficulty": 1,
78
+ "topics": [
79
+ "Maybe",
80
+ "Number Theory"
81
+ ]
82
+ },
72
83
  {
73
84
  "uuid": "6eba4eac-6665-4ad6-ac21-3651a11ab4b4",
74
85
  "slug": "isogram",
@@ -0,0 +1,78 @@
1
+ # Perfect Numbers
2
+
3
+ Determine if a number is perfect, abundant, or deficient based on
4
+ Nicomachus' (60 - 120 CE) classification scheme for natural numbers.
5
+
6
+ The Greek mathematician [Nicomachus](https://en.wikipedia.org/wiki/Nicomachus) devised a classification scheme for natural numbers, identifying each as belonging uniquely to the categories of **perfect**, **abundant**, or **deficient** based on their [aliquot sum](https://en.wikipedia.org/wiki/Aliquot_sum). The aliquot sum is defined as the sum of the factors of a number not including the number itself. For example, the aliquot sum of 15 is (1 + 3 + 5) = 9
7
+
8
+ - **Perfect**: aliquot sum = number
9
+ - 6 is a perfect number because (1 + 2 + 3) = 6
10
+ - 28 is a perfect number because (1 + 2 + 4 + 7 + 14) = 28
11
+ - **Abundant**: aliquot sum > number
12
+ - 12 is an abundant number because (1 + 2 + 3 + 4 + 6) = 16
13
+ - 24 is an abundant number because (1 + 2 + 3 + 4 + 6 + 8 + 12) = 36
14
+ - **Deficient**: aliquot sum < number
15
+ - 8 is a deficient number because (1 + 2 + 4) = 7
16
+ - Prime numbers are deficient
17
+
18
+ Implement a way to determine whether a given number is **perfect**. Depending on your language track, you may also need to implement a way to determine whether a given number is **abundant** or **deficient**.
19
+
20
+
21
+ ## Getting Started
22
+
23
+ For installation and learning resources, refer to the
24
+ [exercism help page](http://exercism.io/languages/haskell).
25
+
26
+ ## Running the tests
27
+
28
+ To run the test suite, execute the following command:
29
+
30
+ ```bash
31
+ stack test
32
+ ```
33
+
34
+ #### If you get an error message like this...
35
+
36
+ ```
37
+ No .cabal file found in directory
38
+ ```
39
+
40
+ You are probably running an old stack version and need
41
+ to upgrade it.
42
+
43
+ #### Otherwise, if you get an error message like this...
44
+
45
+ ```
46
+ No compiler found, expected minor version match with...
47
+ Try running "stack setup" to install the correct GHC...
48
+ ```
49
+
50
+ Just do as it says and it will download and install
51
+ the correct compiler version:
52
+
53
+ ```bash
54
+ stack setup
55
+ ```
56
+
57
+ ## Running *GHCi*
58
+
59
+ If you want to play with your solution in GHCi, just run the command:
60
+
61
+ ```bash
62
+ stack ghci
63
+ ```
64
+
65
+ ## Feedback, Issues, Pull Requests
66
+
67
+ The [exercism/haskell](https://github.com/exercism/haskell) repository on
68
+ GitHub is the home for all of the Haskell exercises.
69
+
70
+ If you have feedback about an exercise, or want to help implementing a new
71
+ one, head over there and create an issue. We'll do our best to help you!
72
+
73
+ ## Source
74
+
75
+ Taken from Chapter 2 of Functional Thinking by Neal Ford. [http://shop.oreilly.com/product/0636920029687.do](http://shop.oreilly.com/product/0636920029687.do)
76
+
77
+ ## Submitting Incomplete Solutions
78
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,16 @@
1
+ name: perfect-numbers
2
+
3
+ dependencies:
4
+ - base
5
+
6
+ library:
7
+ exposed-modules: PerfectNumbers
8
+ source-dirs: src
9
+
10
+ tests:
11
+ test:
12
+ main: Tests.hs
13
+ source-dirs: test
14
+ dependencies:
15
+ - perfect-numbers
16
+ - hspec
@@ -0,0 +1,10 @@
1
+ module PerfectNumbers (classify, Classification(..)) where
2
+
3
+ data Classification = Deficient | Perfect | Abundant deriving (Eq, Show)
4
+
5
+ classify :: Int -> Maybe Classification
6
+ classify n | n < 1 = Nothing
7
+ | n < divisors = Just Abundant
8
+ | n > divisors = Just Deficient
9
+ | otherwise = Just Perfect
10
+ where divisors = sum $ filter ((0==) . mod n) [1..(div n 2)]
@@ -0,0 +1,20 @@
1
+ name: perfect-numbers
2
+ version: 1.0.1.1
3
+
4
+ dependencies:
5
+ - base
6
+
7
+ library:
8
+ exposed-modules: PerfectNumbers
9
+ source-dirs: src
10
+ dependencies:
11
+ # - foo # List here the packages you
12
+ # - bar # want to use in your solution.
13
+
14
+ tests:
15
+ test:
16
+ main: Tests.hs
17
+ source-dirs: test
18
+ dependencies:
19
+ - perfect-numbers
20
+ - hspec
@@ -0,0 +1,6 @@
1
+ module PerfectNumbers (classify, Classification(..)) where
2
+
3
+ data Classification = Deficient | Perfect | Abundant deriving (Eq, Show)
4
+
5
+ classify :: Int -> Maybe Classification
6
+ classify = error "You need to implement this function."
@@ -0,0 +1 @@
1
+ resolver: lts-8.21
@@ -0,0 +1,79 @@
1
+ {-# LANGUAGE RecordWildCards #-}
2
+
3
+ import Data.Foldable (for_)
4
+ import Test.Hspec (Spec, describe, it, shouldBe)
5
+ import Test.Hspec.Runner (configFastFail, defaultConfig, hspecWith)
6
+
7
+ import PerfectNumbers
8
+
9
+ main :: IO ()
10
+ main = hspecWith defaultConfig {configFastFail = True} specs
11
+
12
+ specs :: Spec
13
+ specs = describe "classify" $ for_ cases test
14
+ where
15
+
16
+ test Case{..} = it description assertion
17
+ where
18
+ assertion = classify number `shouldBe` expected
19
+
20
+
21
+ data Case = Case { description :: String
22
+ , number :: Int
23
+ , expected :: Maybe Classification
24
+ }
25
+
26
+ cases :: [Case]
27
+ cases = [ Case { description = "Smallest perfect number is classified correctly"
28
+ , number = 6
29
+ , expected = Just Perfect
30
+ }
31
+ , Case { description = "Medium perfect number is classified correctly"
32
+ , number = 28
33
+ , expected = Just Perfect
34
+ }
35
+ , Case { description = "Large perfect number is classified correctly"
36
+ , number = 33550336
37
+ , expected = Just Perfect
38
+ }
39
+ , Case { description = "Smallest abundant number is classified correctly"
40
+ , number = 12
41
+ , expected = Just Abundant
42
+ }
43
+ , Case { description = "Medium abundant number is classified correctly"
44
+ , number = 30
45
+ , expected = Just Abundant
46
+ }
47
+ , Case { description = "Large abundant number is classified correctly"
48
+ , number = 33550335
49
+ , expected = Just Abundant
50
+ }
51
+ , Case { description = "Smallest prime deficient number is classified correctly"
52
+ , number = 2
53
+ , expected = Just Deficient
54
+ }
55
+ , Case { description = "Smallest non-prime deficient number is classified correctly"
56
+ , number = 4
57
+ , expected = Just Deficient
58
+ }
59
+ , Case { description = "Medium deficient number is classified correctly"
60
+ , number = 32
61
+ , expected = Just Deficient
62
+ }
63
+ , Case { description = "Large deficient number is classified correctly"
64
+ , number = 33550337
65
+ , expected = Just Deficient
66
+ }
67
+ , Case { description = "Edge case (no factors other than itself) is classified correctly"
68
+ , number = 1
69
+ , expected = Just Deficient
70
+ }
71
+ , Case { description = "Zero is rejected (not a natural number)"
72
+ , number = 0
73
+ , expected = Nothing
74
+ }
75
+ , Case { description = "Negative integer is rejected (not a natural number)"
76
+ , number = -1
77
+ , expected = Nothing
78
+ }
79
+ ]
@@ -13,7 +13,7 @@ like Portable Network Graphics to its acronym (PNG).
13
13
  Go through the setup instructions for JavaScript to
14
14
  install the necessary dependencies:
15
15
 
16
- http://exercism.io/languages/javascript
16
+ http://exercism.io/languages/javascript/installation
17
17
 
18
18
  ## Making the Test Suite Pass
19
19
 
@@ -36,7 +36,7 @@ I think you got the idea!
36
36
  Go through the setup instructions for JavaScript to
37
37
  install the necessary dependencies:
38
38
 
39
- http://exercism.io/languages/javascript
39
+ http://exercism.io/languages/javascript/installation
40
40
 
41
41
  ## Making the Test Suite Pass
42
42
 
@@ -35,7 +35,7 @@ score is 257, your program should only report the eggs (1) allergy.
35
35
  Go through the setup instructions for JavaScript to
36
36
  install the necessary dependencies:
37
37
 
38
- http://exercism.io/languages/javascript
38
+ http://exercism.io/languages/javascript/installation
39
39
 
40
40
  ## Making the Test Suite Pass
41
41
 
@@ -36,7 +36,7 @@ Write a function to solve alphametics puzzles.
36
36
  Go through the setup instructions for JavaScript to
37
37
  install the necessary dependencies:
38
38
 
39
- http://exercism.io/languages/javascript
39
+ http://exercism.io/languages/javascript/installation
40
40
 
41
41
  ## Making the Test Suite Pass
42
42
 
@@ -11,7 +11,7 @@ Given `"listen"` and a list of candidates like `"enlists" "google"
11
11
  Go through the setup instructions for JavaScript to
12
12
  install the necessary dependencies:
13
13
 
14
- http://exercism.io/languages/javascript
14
+ http://exercism.io/languages/javascript/installation
15
15
 
16
16
  ## Making the Test Suite Pass
17
17
 
@@ -32,7 +32,7 @@ things based on word boundaries.
32
32
  Go through the setup instructions for JavaScript to
33
33
  install the necessary dependencies:
34
34
 
35
- http://exercism.io/languages/javascript
35
+ http://exercism.io/languages/javascript/installation
36
36
 
37
37
  ## Making the Test Suite Pass
38
38
 
@@ -325,7 +325,7 @@ experiment make the code better? Worse? Did you learn anything from it?
325
325
  Go through the setup instructions for JavaScript to
326
326
  install the necessary dependencies:
327
327
 
328
- http://exercism.io/languages/javascript
328
+ http://exercism.io/languages/javascript/installation
329
329
 
330
330
  ## Making the Test Suite Pass
331
331
 
@@ -58,7 +58,7 @@ And if we then added 1, 5, and 7, it would look like this
58
58
  Go through the setup instructions for JavaScript to
59
59
  install the necessary dependencies:
60
60
 
61
- http://exercism.io/languages/javascript
61
+ http://exercism.io/languages/javascript/installation
62
62
 
63
63
  ## Making the Test Suite Pass
64
64
 
@@ -39,7 +39,7 @@ A binary search is a dichotomic divide and conquer search algorithm.
39
39
  Go through the setup instructions for JavaScript to
40
40
  install the necessary dependencies:
41
41
 
42
- http://exercism.io/languages/javascript
42
+ http://exercism.io/languages/javascript/installation
43
43
 
44
44
  ## Making the Test Suite Pass
45
45
 
@@ -33,7 +33,7 @@ So: `101 => 1*2^2 + 0*2^1 + 1*2^0 => 1*4 + 0*2 + 1*1 => 4 + 1 => 5 base 10`.
33
33
  Go through the setup instructions for JavaScript to
34
34
  install the necessary dependencies:
35
35
 
36
- http://exercism.io/languages/javascript
36
+ http://exercism.io/languages/javascript/installation
37
37
 
38
38
  ## Making the Test Suite Pass
39
39
 
@@ -16,7 +16,7 @@ He answers 'Whatever.' to anything else.
16
16
  Go through the setup instructions for JavaScript to
17
17
  install the necessary dependencies:
18
18
 
19
- http://exercism.io/languages/javascript
19
+ http://exercism.io/languages/javascript/installation
20
20
 
21
21
  ## Making the Test Suite Pass
22
22