trackler 2.2.1.179 → 2.2.1.180

Sign up to get free protection for your applications and to get access to all the features.
Files changed (144) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/yacht/description.md +14 -13
  4. data/tracks/ballerina/config.json +1 -0
  5. data/tracks/coffeescript/config.json +138 -41
  6. data/tracks/coffeescript/docs/ABOUT.md +3 -7
  7. data/tracks/coq/config.json +1 -0
  8. data/tracks/d/config.json +1 -0
  9. data/tracks/dart/config.json +1 -0
  10. data/tracks/elixir/config.json +17 -16
  11. data/tracks/elixir/docs/ABOUT.md +10 -2
  12. data/tracks/fortran/config.json +1 -0
  13. data/tracks/gnu-apl/config.json +1 -0
  14. data/tracks/go/config.json +13 -0
  15. data/tracks/go/exercises/list-ops/README.md +27 -0
  16. data/tracks/go/exercises/list-ops/example.go +99 -0
  17. data/tracks/go/exercises/list-ops/listops_test.go +291 -0
  18. data/tracks/groovy/config.json +1 -0
  19. data/tracks/haxe/config.json +1 -0
  20. data/tracks/perl5/exercises/leap/.meta/exercise-data.yaml +3 -5
  21. data/tracks/perl5/exercises/leap/.meta/solutions/Leap.pm +2 -4
  22. data/tracks/perl5/exercises/leap/Leap.pm +1 -1
  23. data/tracks/perl5/exercises/leap/leap.t +2 -2
  24. data/tracks/php/config.json +1 -0
  25. data/tracks/plsql/config.json +1 -0
  26. data/tracks/pony/config.json +1 -0
  27. data/tracks/purescript/config.json +1 -0
  28. data/tracks/reasonml/config/exercise_readme.go.tmpl +18 -2
  29. data/tracks/reasonml/exercises/anagram/README.md +15 -4
  30. data/tracks/reasonml/exercises/armstrong-numbers/README.md +3 -4
  31. data/tracks/reasonml/exercises/binary-search/README.md +14 -7
  32. data/tracks/reasonml/exercises/bob/README.md +14 -6
  33. data/tracks/reasonml/exercises/change/README.md +2 -4
  34. data/tracks/reasonml/exercises/hello-world/README.md +2 -3
  35. data/tracks/reasonml/exercises/isogram/README.md +4 -6
  36. data/tracks/reasonml/exercises/leap/README.md +14 -4
  37. data/tracks/reasonml/exercises/pangram/README.md +13 -3
  38. data/tracks/reasonml/exercises/phone-number/README.md +15 -7
  39. data/tracks/reasonml/exercises/raindrops/README.md +14 -7
  40. data/tracks/reasonml/exercises/rna-transcription/README.md +13 -3
  41. data/tracks/reasonml/exercises/roman-numerals/README.md +4 -8
  42. data/tracks/reasonml/exercises/run-length-encoding/README.md +14 -7
  43. data/tracks/reasonml/exercises/space-age/README.md +13 -3
  44. data/tracks/reasonml/exercises/word-count/README.md +18 -8
  45. data/tracks/rust/.travis.yml +1 -0
  46. data/tracks/rust/_test/check-exercises-for-authors.sh +10 -0
  47. data/tracks/rust/bin/format_exercises +2 -0
  48. data/tracks/rust/exercises/accumulate/Cargo.toml +0 -1
  49. data/tracks/rust/exercises/accumulate/example.rs +4 -1
  50. data/tracks/rust/exercises/acronym/example.rs +6 -5
  51. data/tracks/rust/exercises/acronym/tests/acronym.rs +1 -1
  52. data/tracks/rust/exercises/all-your-base/example.rs +8 -2
  53. data/tracks/rust/exercises/allergies/example.rs +28 -6
  54. data/tracks/rust/exercises/alphametics/example.rs +18 -10
  55. data/tracks/rust/exercises/anagram/example.rs +8 -4
  56. data/tracks/rust/exercises/atbash-cipher/example.rs +15 -15
  57. data/tracks/rust/exercises/beer-song/example.rs +18 -12
  58. data/tracks/rust/exercises/binary-search/Cargo.toml +0 -1
  59. data/tracks/rust/exercises/binary-search/example.rs +3 -4
  60. data/tracks/rust/exercises/bob/example.rs +11 -5
  61. data/tracks/rust/exercises/book-store/Cargo-example.toml +0 -1
  62. data/tracks/rust/exercises/book-store/Cargo.toml +0 -1
  63. data/tracks/rust/exercises/book-store/example.rs +15 -19
  64. data/tracks/rust/exercises/bowling/example.rs +3 -1
  65. data/tracks/rust/exercises/bracket-push/example.rs +7 -2
  66. data/tracks/rust/exercises/circular-buffer/example.rs +1 -1
  67. data/tracks/rust/exercises/clock/.meta/ALLOWED_TO_NOT_COMPILE +3 -0
  68. data/tracks/rust/exercises/clock/Cargo.toml +0 -1
  69. data/tracks/rust/exercises/clock/example.rs +5 -3
  70. data/tracks/rust/exercises/clock/src/lib.rs +14 -0
  71. data/tracks/rust/exercises/collatz-conjecture/example.rs +2 -2
  72. data/tracks/rust/exercises/crypto-square/Cargo-example.toml +0 -1
  73. data/tracks/rust/exercises/crypto-square/Cargo.toml +0 -1
  74. data/tracks/rust/exercises/custom-set/example.rs +17 -15
  75. data/tracks/rust/exercises/decimal/Cargo-example.toml +0 -1
  76. data/tracks/rust/exercises/decimal/Cargo.toml +0 -1
  77. data/tracks/rust/exercises/decimal/example.rs +5 -5
  78. data/tracks/rust/exercises/diamond/Cargo.toml +0 -1
  79. data/tracks/rust/exercises/difference-of-squares/example.rs +1 -1
  80. data/tracks/rust/exercises/dominoes/example.rs +20 -19
  81. data/tracks/rust/exercises/etl/example.rs +4 -3
  82. data/tracks/rust/exercises/forth/example.rs +29 -45
  83. data/tracks/rust/exercises/grade-school/example.rs +4 -2
  84. data/tracks/rust/exercises/hexadecimal/example.rs +2 -4
  85. data/tracks/rust/exercises/isbn-verifier/example.rs +5 -6
  86. data/tracks/rust/exercises/isbn-verifier/tests/isbn-verifier.rs +12 -0
  87. data/tracks/rust/exercises/isogram/example.rs +9 -3
  88. data/tracks/rust/exercises/largest-series-product/example.rs +2 -1
  89. data/tracks/rust/exercises/luhn-from/example.rs +3 -1
  90. data/tracks/rust/exercises/luhn/example.rs +5 -3
  91. data/tracks/rust/exercises/macros/Cargo.toml +0 -1
  92. data/tracks/rust/exercises/nth-prime/Cargo.toml +0 -1
  93. data/tracks/rust/exercises/nth-prime/example.rs +6 -6
  94. data/tracks/rust/exercises/nucleotide-codons/Cargo.toml +0 -1
  95. data/tracks/rust/exercises/nucleotide-codons/example.rs +23 -17
  96. data/tracks/rust/exercises/nucleotide-count/example.rs +15 -5
  97. data/tracks/rust/exercises/nucleotide-count/src/lib.rs +15 -0
  98. data/tracks/rust/exercises/nucleotide-count/tests/nucleotide-count.rs +3 -3
  99. data/tracks/rust/exercises/palindrome-products/Cargo.toml +0 -1
  100. data/tracks/rust/exercises/pangram/example.rs +6 -6
  101. data/tracks/rust/exercises/parallel-letter-frequency/example.rs +7 -4
  102. data/tracks/rust/exercises/pascals-triangle/example.rs +6 -2
  103. data/tracks/rust/exercises/perfect-numbers/example.rs +2 -2
  104. data/tracks/rust/exercises/phone-number/example.rs +11 -15
  105. data/tracks/rust/exercises/pig-latin/Cargo-example.toml +0 -1
  106. data/tracks/rust/exercises/pig-latin/Cargo.toml +0 -1
  107. data/tracks/rust/exercises/pig-latin/example.rs +6 -2
  108. data/tracks/rust/exercises/poker/Cargo-example.toml +0 -1
  109. data/tracks/rust/exercises/poker/Cargo.toml +0 -1
  110. data/tracks/rust/exercises/poker/example.rs +9 -8
  111. data/tracks/rust/exercises/prime-factors/Cargo.toml +0 -1
  112. data/tracks/rust/exercises/prime-factors/example.rs +1 -1
  113. data/tracks/rust/exercises/protein-translation/Cargo.toml +0 -1
  114. data/tracks/rust/exercises/protein-translation/example.rs +6 -5
  115. data/tracks/rust/exercises/proverb/Cargo.toml +0 -1
  116. data/tracks/rust/exercises/proverb/example.rs +0 -1
  117. data/tracks/rust/exercises/pythagorean-triplet/Cargo.toml +0 -1
  118. data/tracks/rust/exercises/pythagorean-triplet/example.rs +3 -3
  119. data/tracks/rust/exercises/queen-attack/example.rs +3 -3
  120. data/tracks/rust/exercises/react/example.rs +61 -29
  121. data/tracks/rust/exercises/reverse-string/Cargo.toml +0 -1
  122. data/tracks/rust/exercises/rna-transcription/example.rs +17 -9
  123. data/tracks/rust/exercises/robot-name/example.rs +4 -3
  124. data/tracks/rust/exercises/robot-simulator/example.rs +5 -2
  125. data/tracks/rust/exercises/roman-numerals/example.rs +15 -14
  126. data/tracks/rust/exercises/rotational-cipher/Cargo.toml +0 -1
  127. data/tracks/rust/exercises/rotational-cipher/example.rs +10 -14
  128. data/tracks/rust/exercises/rotational-cipher/src/lib.rs +7 -1
  129. data/tracks/rust/exercises/run-length-encoding/Cargo.toml +0 -1
  130. data/tracks/rust/exercises/run-length-encoding/example.rs +34 -29
  131. data/tracks/rust/exercises/saddle-points/example.rs +0 -1
  132. data/tracks/rust/exercises/say/Cargo.toml +0 -1
  133. data/tracks/rust/exercises/say/example.rs +34 -8
  134. data/tracks/rust/exercises/series/example.rs +6 -8
  135. data/tracks/rust/exercises/simple-linked-list/example.rs +0 -2
  136. data/tracks/rust/exercises/spiral-matrix/example.rs +0 -1
  137. data/tracks/rust/exercises/tournament/example.rs +33 -20
  138. data/tracks/rust/exercises/triangle/example.rs +1 -1
  139. data/tracks/rust/exercises/two-bucket/example.rs +2 -6
  140. data/tracks/rust/exercises/two-fer/example.rs +3 -3
  141. data/tracks/rust/exercises/variable-length-quantity/example.rs +2 -3
  142. data/tracks/rust/exercises/word-count/example.rs +4 -1
  143. data/tracks/rust/exercises/wordy/example.rs +10 -4
  144. metadata +7 -2
@@ -9,6 +9,7 @@
9
9
  "slug": "hello-world",
10
10
  "uuid": "30dff5e7-f2a4-4d7b-be1e-765091958a92",
11
11
  "core": false,
12
+ "auto_approve": true,
12
13
  "unlocked_by": null,
13
14
  "difficulty": 1,
14
15
  "topics": null
@@ -9,6 +9,7 @@
9
9
  "slug": "hello-world",
10
10
  "uuid": "3596bbf7-66f0-49c0-8c3e-3472455f90c7",
11
11
  "core": false,
12
+ "auto_approve": true,
12
13
  "unlocked_by": null,
13
14
  "difficulty": 1,
14
15
  "topics": null
@@ -1,9 +1,9 @@
1
1
  exercise: Leap
2
- version: 3
2
+ version: 4
3
3
  plan: 5
4
4
  subs: is_leap
5
5
  tests: |-
6
- is is_leap($_->{input}{year}), $_->{expected}, $_->{description} foreach @{$C_DATA->{cases}};
6
+ ok !(is_leap($_->{input}{year}) xor $_->{expected}), $_->{description} foreach @{$C_DATA->{cases}};
7
7
 
8
8
  exercise_comment: '# The name of this exercise.'
9
9
  version_comment: '# The version we will be matching against the exercise.'
@@ -17,9 +17,7 @@ version_test_comment: |-
17
17
  example: |-
18
18
  sub is_leap {
19
19
  my $year = shift;
20
- divisible_by($year, 400)
21
- or divisible_by($year, 4) and !divisible_by($year, 100)
22
- ? 1 : 0;
20
+ divisible_by($year, 400) or divisible_by($year, 4) and !divisible_by($year, 100);
23
21
  }
24
22
 
25
23
  sub divisible_by {
@@ -1,5 +1,5 @@
1
1
  # Declare package 'Leap' with version
2
- package Leap 3;
2
+ package Leap 4;
3
3
  use strict;
4
4
  use warnings;
5
5
  use Exporter 'import';
@@ -7,9 +7,7 @@ our @EXPORT_OK = qw(is_leap);
7
7
 
8
8
  sub is_leap {
9
9
  my $year = shift;
10
- divisible_by($year, 400)
11
- or divisible_by($year, 4) and !divisible_by($year, 100)
12
- ? 1 : 0;
10
+ divisible_by($year, 400) or divisible_by($year, 4) and !divisible_by($year, 100);
13
11
  }
14
12
 
15
13
  sub divisible_by {
@@ -1,5 +1,5 @@
1
1
  # Declare package 'Leap' with version
2
- package Leap 3;
2
+ package Leap 4;
3
3
  use strict;
4
4
  use warnings;
5
5
  use Exporter 'import';
@@ -7,7 +7,7 @@ use lib $FindBin::Bin; # Look for the module inside the same directory as this t
7
7
  use Leap qw(is_leap);
8
8
 
9
9
  my $exercise = 'Leap'; # The name of this exercise.
10
- my $test_version = 3; # The version we will be matching against the exercise.
10
+ my $test_version = 4; # The version we will be matching against the exercise.
11
11
  use Test::More tests => 5; # This is how many tests we expect to run.
12
12
 
13
13
  # If the exercise is updated, we want to make sure other people testing
@@ -23,7 +23,7 @@ if ($exercise_version != $test_version) {
23
23
  can_ok $exercise, 'import' or BAIL_OUT 'Cannot import subroutines from module';
24
24
 
25
25
  my $C_DATA = do { local $/; decode_json(<DATA>); };
26
- is is_leap($_->{input}{year}), $_->{expected}, $_->{description} foreach @{$C_DATA->{cases}};
26
+ ok !(is_leap($_->{input}{year}) xor $_->{expected}), $_->{description} foreach @{$C_DATA->{cases}};
27
27
 
28
28
  __DATA__
29
29
  {
@@ -7,6 +7,7 @@
7
7
  "slug": "hello-world",
8
8
  "uuid": "56116aa6-e3d1-4122-a394-a7e0f6ab6fea",
9
9
  "core": false,
10
+ "auto_approve": true,
10
11
  "unlocked_by": null,
11
12
  "difficulty": 1,
12
13
  "topics": [
@@ -8,6 +8,7 @@
8
8
  "slug": "hello-world",
9
9
  "uuid": "53156fc9-0945-f080-08a9-ce269bfc9121a5d2c5c",
10
10
  "core": false,
11
+ "auto_approve": true,
11
12
  "unlocked_by": null,
12
13
  "difficulty": 1,
13
14
  "topics": null
@@ -7,6 +7,7 @@
7
7
  "slug": "hello-world",
8
8
  "uuid": "cc5f77d1-b94d-4a05-b205-08eaa00bf49e",
9
9
  "core": false,
10
+ "auto_approve": true,
10
11
  "unlocked_by": null,
11
12
  "difficulty": 1,
12
13
  "topics": [
@@ -7,6 +7,7 @@
7
7
  "slug": "hello-world",
8
8
  "uuid": "c41a2961-f7ca-4eaf-83cf-48762fc39c06",
9
9
  "core": false,
10
+ "auto_approve": true,
10
11
  "unlocked_by": null,
11
12
  "difficulty": 1,
12
13
  "topics": [
@@ -12,5 +12,21 @@
12
12
 
13
13
  {{ . }}
14
14
  {{ end }}
15
- ## Submitting Incomplete Solutions
16
- It's possible to submit an incomplete solution so you can see how others have completed the exercise.
15
+ ## Building and testing
16
+ You will need the node package manager (npm) installed - download from [here](https://www.npmjs.com/get-npm)
17
+ There is one time setup for each exercise, which may take a few minutes:
18
+ ```
19
+ npm install
20
+ ```
21
+
22
+ Open two shells, and in the first, start the build process.
23
+ ```
24
+ npm start
25
+ ```
26
+
27
+ In the second, start the tests running.
28
+ ```
29
+ npm test
30
+ ```
31
+
32
+ As you edit the code, the two processes will continually rebuild and rerun the tests.
@@ -5,14 +5,25 @@ Given a word and a list of possible anagrams, select the correct sublist.
5
5
  Given `"listen"` and a list of candidates like `"enlists" "google"
6
6
  "inlets" "banana"` the program should return a list containing
7
7
  `"inlets"`.
8
+ ## Source
8
9
 
9
- # Build
10
+ Inspired by the Extreme Startup game [https://github.com/rchatley/extreme_startup](https://github.com/rchatley/extreme_startup)
11
+
12
+ ## Building and testing
13
+ You will need the node package manager (npm) installed - download from [here](https://www.npmjs.com/get-npm)
14
+ There is one time setup for each exercise, which may take a few minutes:
10
15
  ```
11
- npm run build
16
+ npm install
12
17
  ```
13
18
 
14
- # Build + Watch
19
+ Open two shells, and in the first, start the build process.
20
+ ```
21
+ npm start
22
+ ```
15
23
 
24
+ In the second, start the tests running.
16
25
  ```
17
- npm run start
26
+ npm test
18
27
  ```
28
+
29
+ As you edit the code, the two processes will continually rebuild and rerun the tests.
@@ -10,10 +10,9 @@ For example:
10
10
  - 154 is *not* an Armstrong number, because: `154 != 1^3 + 5^3 + 4^3 = 1 + 125 + 64 = 190`
11
11
 
12
12
  Write some code to determine whether a number is an Armstrong number.
13
+ ## Source
13
14
 
14
- ## Getting Started
15
- For installation and learning resources, refer to the
16
- [exercism help page](http://exercism.io/languages/reasonml).
15
+ Wikipedia [https://en.wikipedia.org/wiki/Narcissistic_number](https://en.wikipedia.org/wiki/Narcissistic_number)
17
16
 
18
17
  ## Building and testing
19
18
  You will need the node package manager (npm) installed - download from [here](https://www.npmjs.com/get-npm)
@@ -32,4 +31,4 @@ In the second, start the tests running.
32
31
  npm test
33
32
  ```
34
33
 
35
- As you edit the code, the two processes will continually rebuild and rerun the tests.
34
+ As you edit the code, the two processes will continually rebuild and rerun the tests.
@@ -33,18 +33,25 @@ found in the array and a special "not found" indication is returned.
33
33
  A binary search halves the number of items to check with each iteration,
34
34
  so locating an item (or determining its absence) takes logarithmic time.
35
35
  A binary search is a dichotomic divide and conquer search algorithm.
36
+ ## Source
36
37
 
37
- # Build
38
+ Wikipedia [http://en.wikipedia.org/wiki/Binary_search_algorithm](http://en.wikipedia.org/wiki/Binary_search_algorithm)
39
+
40
+ ## Building and testing
41
+ You will need the node package manager (npm) installed - download from [here](https://www.npmjs.com/get-npm)
42
+ There is one time setup for each exercise, which may take a few minutes:
38
43
  ```
39
- npm run build
44
+ npm install
40
45
  ```
41
46
 
42
- # Build + Watch
43
-
47
+ Open two shells, and in the first, start the build process.
44
48
  ```
45
- npm run start
49
+ npm start
46
50
  ```
47
51
 
52
+ In the second, start the tests running.
53
+ ```
54
+ npm test
55
+ ```
48
56
 
49
- # Editor
50
- If you use `vscode`, Press `Windows + Shift + B` it will build automatically
57
+ As you edit the code, the two processes will continually rebuild and rerun the tests.
@@ -12,17 +12,25 @@ He says 'Fine. Be that way!' if you address him without actually saying
12
12
  anything.
13
13
 
14
14
  He answers 'Whatever.' to anything else.
15
+ ## Source
15
16
 
16
- # Build
17
+ Inspired by the 'Deaf Grandma' exercise in Chris Pine's Learn to Program tutorial. [http://pine.fm/LearnToProgram/?Chapter=06](http://pine.fm/LearnToProgram/?Chapter=06)
18
+
19
+ ## Building and testing
20
+ You will need the node package manager (npm) installed - download from [here](https://www.npmjs.com/get-npm)
21
+ There is one time setup for each exercise, which may take a few minutes:
17
22
  ```
18
- npm run build
23
+ npm install
19
24
  ```
20
25
 
21
- # Build + Watch
26
+ Open two shells, and in the first, start the build process.
27
+ ```
28
+ npm start
29
+ ```
22
30
 
31
+ In the second, start the tests running.
23
32
  ```
24
- npm run start
33
+ npm test
25
34
  ```
26
35
 
27
- # Editor
28
- If you use `vscode`, Press `Windows + Shift + B` it will build automatically
36
+ As you edit the code, the two processes will continually rebuild and rerun the tests.
@@ -15,11 +15,9 @@ that the sum of the coins' value would equal the correct amount of change.
15
15
  - Does your algorithm work for any given set of coins?
16
16
  - Can you ask for negative change?
17
17
  - Can you ask for a change value smaller than the smallest coin value?
18
+ ## Source
18
19
 
19
-
20
- ## Getting Started
21
- For installation and learning resources, refer to the
22
- [exercism help page](http://exercism.io/languages/reasonml).
20
+ Software Craftsmanship - Coin Change Kata [https://web.archive.org/web/20130115115225/http://craftsmanship.sv.cmu.edu:80/exercises/coin-change-kata](https://web.archive.org/web/20130115115225/http://craftsmanship.sv.cmu.edu:80/exercises/coin-change-kata)
23
21
 
24
22
  ## Building and testing
25
23
  You will need the node package manager (npm) installed - download from [here](https://www.npmjs.com/get-npm)
@@ -13,10 +13,9 @@ The objectives are simple:
13
13
  - Submit your solution and check it at the website.
14
14
 
15
15
  If everything goes well, you will be ready to fetch your first real exercise.
16
+ ## Source
16
17
 
17
- ## Getting Started
18
- For installation and learning resources, refer to the
19
- [exercism help page](http://exercism.io/languages/reasonml).
18
+ This is an exercise to introduce users to using Exercism [http://en.wikipedia.org/wiki/%22Hello,_world!%22_program](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program)
20
19
 
21
20
  ## Building and testing
22
21
  You will need the node package manager (npm) installed - download from [here](https://www.npmjs.com/get-npm)
@@ -2,8 +2,7 @@
2
2
 
3
3
  Determine if a word or phrase is an isogram.
4
4
 
5
- An isogram (also known as a "nonpattern word") is a word or phrase without a repeating letter,
6
- however spaces and hyphens are allowed to appear multiple times.
5
+ An isogram (also known as a "nonpattern word") is a word or phrase without a repeating letter, however spaces and hyphens are allowed to appear multiple times.
7
6
 
8
7
  Examples of isograms:
9
8
 
@@ -13,10 +12,9 @@ Examples of isograms:
13
12
  - six-year-old
14
13
 
15
14
  The word *isograms*, however, is not an isogram, because the s repeats.
15
+ ## Source
16
16
 
17
- ## Getting Started
18
- For installation and learning resources, refer to the
19
- [exercism help page](http://exercism.io/languages/reasonml).
17
+ Wikipedia [https://en.wikipedia.org/wiki/Isogram](https://en.wikipedia.org/wiki/Isogram)
20
18
 
21
19
  ## Building and testing
22
20
  You will need the node package manager (npm) installed - download from [here](https://www.npmjs.com/get-npm)
@@ -35,4 +33,4 @@ In the second, start the tests running.
35
33
  npm test
36
34
  ```
37
35
 
38
- As you edit the code, the two processes will continually rebuild and rerun the tests.
36
+ As you edit the code, the two processes will continually rebuild and rerun the tests.
@@ -1,4 +1,4 @@
1
- # Leap in ReasonML
1
+ # Leap
2
2
 
3
3
  Given a year, report if it is a leap year.
4
4
 
@@ -25,15 +25,25 @@ For a delightful, four minute explanation of the whole leap year
25
25
  phenomenon, go watch [this youtube video][video].
26
26
 
27
27
  [video]: http://www.youtube.com/watch?v=xX96xng7sAE
28
+ ## Source
28
29
 
29
- # Build + Watch
30
+ JavaRanch Cattle Drive, exercise 3 [http://www.javaranch.com/leap.jsp](http://www.javaranch.com/leap.jsp)
30
31
 
32
+ ## Building and testing
33
+ You will need the node package manager (npm) installed - download from [here](https://www.npmjs.com/get-npm)
34
+ There is one time setup for each exercise, which may take a few minutes:
31
35
  ```
32
- npm start
36
+ npm install
33
37
  ```
34
38
 
35
- # Test + Watch
39
+ Open two shells, and in the first, start the build process.
40
+ ```
41
+ npm start
42
+ ```
36
43
 
44
+ In the second, start the tests running.
37
45
  ```
38
46
  npm test
39
47
  ```
48
+
49
+ As you edit the code, the two processes will continually rebuild and rerun the tests.
@@ -7,15 +7,25 @@ The best known English pangram is:
7
7
 
8
8
  The alphabet used consists of ASCII letters `a` to `z`, inclusive, and is case
9
9
  insensitive. Input will not contain non-ASCII symbols.
10
+ ## Source
10
11
 
11
- # Build + Watch
12
+ Wikipedia [https://en.wikipedia.org/wiki/Pangram](https://en.wikipedia.org/wiki/Pangram)
12
13
 
14
+ ## Building and testing
15
+ You will need the node package manager (npm) installed - download from [here](https://www.npmjs.com/get-npm)
16
+ There is one time setup for each exercise, which may take a few minutes:
13
17
  ```
14
- npm start
18
+ npm install
15
19
  ```
16
20
 
17
- # Test + Watch
21
+ Open two shells, and in the first, start the build process.
22
+ ```
23
+ npm start
24
+ ```
18
25
 
26
+ In the second, start the tests running.
19
27
  ```
20
28
  npm test
21
29
  ```
30
+
31
+ As you edit the code, the two processes will continually rebuild and rerun the tests.
@@ -1,4 +1,5 @@
1
1
  # Phone Number
2
+
2
3
  Clean up user-entered phone numbers so that they can be sent SMS messages.
3
4
 
4
5
  The **North American Numbering Plan (NANP)** is a telephone numbering system used by many countries in North America like the United States, Canada or Bermuda. All NANP-countries share the same international country code: `1`.
@@ -26,18 +27,25 @@ should all produce the output
26
27
  `6139950253`
27
28
 
28
29
  **Note:** As this exercise only deals with telephone numbers used in NANP-countries, only 1 is considered a valid country code.
30
+ ## Source
31
+
32
+ Event Manager by JumpstartLab [http://tutorials.jumpstartlab.com/projects/eventmanager.html](http://tutorials.jumpstartlab.com/projects/eventmanager.html)
29
33
 
30
- # Build
34
+ ## Building and testing
35
+ You will need the node package manager (npm) installed - download from [here](https://www.npmjs.com/get-npm)
36
+ There is one time setup for each exercise, which may take a few minutes:
31
37
  ```
32
- npm run build
38
+ npm install
33
39
  ```
34
40
 
35
- # Build + Watch
36
-
41
+ Open two shells, and in the first, start the build process.
37
42
  ```
38
- npm run start
43
+ npm start
39
44
  ```
40
45
 
46
+ In the second, start the tests running.
47
+ ```
48
+ npm test
49
+ ```
41
50
 
42
- # Editor
43
- If you use `vscode`, Press `Windows + Shift + B` it will build automatically
51
+ As you edit the code, the two processes will continually rebuild and rerun the tests.
@@ -16,18 +16,25 @@ Convert a number to a string, the contents of which depend on the number's facto
16
16
  - In raindrop-speak, this would be a "PlingPlang".
17
17
  - 34 has four factors: 1, 2, 17, and 34.
18
18
  - In raindrop-speak, this would be "34".
19
+ ## Source
19
20
 
20
- # Build
21
+ A variation on a famous interview question intended to weed out potential candidates. [http://jumpstartlab.com](http://jumpstartlab.com)
22
+
23
+ ## Building and testing
24
+ You will need the node package manager (npm) installed - download from [here](https://www.npmjs.com/get-npm)
25
+ There is one time setup for each exercise, which may take a few minutes:
21
26
  ```
22
- npm run build
27
+ npm install
23
28
  ```
24
29
 
25
- # Build + Watch
26
-
30
+ Open two shells, and in the first, start the build process.
27
31
  ```
28
- npm run start
32
+ npm start
29
33
  ```
30
34
 
35
+ In the second, start the tests running.
36
+ ```
37
+ npm test
38
+ ```
31
39
 
32
- # Editor
33
- If you use `vscode`, Press `Windows + Shift + B` it will build automatically
40
+ As you edit the code, the two processes will continually rebuild and rerun the tests.