trackler 2.1.0.12 → 2.1.0.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/common/exercises/difference-of-squares/canonical-data.json +15 -21
  3. data/lib/trackler/version.rb +1 -1
  4. data/tracks/c/config.json +9 -0
  5. data/tracks/c/exercises/scrabble-score/makefile +16 -0
  6. data/tracks/c/exercises/scrabble-score/src/example.c +43 -0
  7. data/tracks/c/exercises/scrabble-score/src/example.h +6 -0
  8. data/tracks/c/exercises/scrabble-score/test/test_scrabble_score.c +77 -0
  9. data/tracks/c/exercises/scrabble-score/test/vendor/unity.c +1300 -0
  10. data/tracks/c/exercises/scrabble-score/test/vendor/unity.h +274 -0
  11. data/tracks/c/exercises/scrabble-score/test/vendor/unity_internals.h +701 -0
  12. data/tracks/csharp/exercises/grade-school/Example.cs +1 -1
  13. data/tracks/csharp/exercises/grade-school/GradeSchoolTest.cs +8 -8
  14. data/tracks/elixir/README.md +29 -12
  15. data/tracks/elixir/SETUP.md +0 -1
  16. data/tracks/elixir/docs/ABOUT.md +21 -7
  17. data/tracks/elixir/docs/LEARNING.md +4 -2
  18. data/tracks/elixir/docs/RESOURCES.md +2 -2
  19. data/tracks/elixir/docs/TESTS.md +0 -2
  20. data/tracks/go/exercises/atbash-cipher/.meta/gen.go +61 -0
  21. data/tracks/go/exercises/atbash-cipher/atbash_cipher_test.go +1 -16
  22. data/tracks/go/exercises/atbash-cipher/cases_test.go +61 -0
  23. data/tracks/go/exercises/atbash-cipher/example.go +1 -1
  24. data/tracks/java/exercises/hamming/src/main/java/Hamming.java +9 -0
  25. data/tracks/java/exercises/simple-linked-list/src/test/java/SimpleLinkedListTest.java +4 -4
  26. data/tracks/javascript/docs/TESTS.md +1 -1
  27. data/tracks/ocaml/config.json +5 -0
  28. data/tracks/ocaml/exercises/acronym/test.ml +2 -0
  29. data/tracks/ocaml/exercises/all-your-base/test.ml +2 -0
  30. data/tracks/ocaml/exercises/anagram/test.ml +2 -0
  31. data/tracks/ocaml/exercises/atbash-cipher/test.ml +3 -0
  32. data/tracks/ocaml/exercises/beer-song/test.ml +2 -0
  33. data/tracks/ocaml/exercises/binary-search/.merlin +5 -0
  34. data/tracks/ocaml/exercises/binary-search/Makefile +11 -0
  35. data/tracks/ocaml/exercises/binary-search/binary_search.mli +2 -0
  36. data/tracks/ocaml/exercises/binary-search/example.ml +19 -0
  37. data/tracks/ocaml/exercises/binary-search/test.ml +38 -0
  38. data/tracks/ocaml/exercises/bob/test.ml +2 -0
  39. data/tracks/ocaml/exercises/bowling/test.ml +2 -0
  40. data/tracks/ocaml/exercises/bracket-push/test.ml +2 -0
  41. data/tracks/ocaml/exercises/change/test.ml +2 -0
  42. data/tracks/ocaml/exercises/connect/test.ml +2 -0
  43. data/tracks/ocaml/exercises/difference-of-squares/test.ml +10 -8
  44. data/tracks/ocaml/exercises/dominoes/test.ml +2 -0
  45. data/tracks/ocaml/exercises/etl/test.ml +2 -0
  46. data/tracks/ocaml/exercises/hamming/test.ml +2 -0
  47. data/tracks/ocaml/exercises/hello-world/test.ml +2 -0
  48. data/tracks/ocaml/exercises/leap/test.ml +2 -0
  49. data/tracks/ocaml/exercises/luhn/test.ml +2 -0
  50. data/tracks/ocaml/exercises/minesweeper/test.ml +2 -0
  51. data/tracks/ocaml/exercises/pangram/test.ml +2 -0
  52. data/tracks/ocaml/exercises/phone-number/test.ml +2 -0
  53. data/tracks/ocaml/exercises/prime-factors/test.ml +2 -0
  54. data/tracks/ocaml/exercises/raindrops/test.ml +2 -0
  55. data/tracks/ocaml/exercises/roman-numerals/test.ml +2 -0
  56. data/tracks/ocaml/exercises/run-length-encoding/test.ml +2 -0
  57. data/tracks/ocaml/exercises/say/test.ml +2 -0
  58. data/tracks/ocaml/exercises/space-age/test.ml +2 -0
  59. data/tracks/ocaml/exercises/triangle/test.ml +2 -0
  60. data/tracks/ocaml/exercises/word-count/test.ml +2 -0
  61. data/tracks/ocaml/tools/test-generator/src/controller.ml +15 -5
  62. data/tracks/ocaml/tools/test-generator/src/model.ml +5 -0
  63. data/tracks/ocaml/tools/test-generator/src/parser.ml +5 -4
  64. data/tracks/ocaml/tools/test-generator/src/special_cases.ml +12 -0
  65. data/tracks/ocaml/tools/test-generator/templates/binary-search/template.ml +20 -0
  66. data/tracks/ocaml/tools/test-generator/templates/change/template.ml +2 -2
  67. data/tracks/ocaml/tools/test-generator/templates/say/template.ml +1 -1
  68. data/tracks/ocaml/tools/test-generator/test/parser_test.ml +1 -1
  69. data/tracks/r/docs/TESTS.md +24 -4
  70. data/tracks/ruby/exercises/trinary/trinary_test.rb +1 -0
  71. data/tracks/scala/config.json +9 -0
  72. data/tracks/scala/exercises/accumulate/src/main/scala/Accumulate.scala +3 -0
  73. data/tracks/scala/exercises/bob/src/main/scala/Bob.scala +3 -0
  74. data/tracks/scala/exercises/difference-of-squares/src/main/scala/Squares.scala +8 -0
  75. data/tracks/scala/exercises/gigasecond/src/main/scala/Gigasecond.scala +8 -0
  76. data/tracks/scala/exercises/grade-school/src/main/scala/School.scala +11 -0
  77. data/tracks/scala/exercises/pangram/src/main/scala/Pangrams.scala +4 -0
  78. data/tracks/scala/exercises/protein-translation/build.sbt +3 -0
  79. data/tracks/scala/exercises/protein-translation/example.scala +41 -0
  80. data/tracks/scala/exercises/protein-translation/src/main/scala/.keep +0 -0
  81. data/tracks/scala/exercises/protein-translation/src/test/scala/ProteinTranslationTest.scala +59 -0
  82. data/tracks/scala/exercises/space-age/src/main/scala/SpaceAge.scala +10 -0
  83. metadata +28 -2
@@ -17,7 +17,7 @@ public IEnumerable<string> Roster()
17
17
  {
18
18
  var students = new List<string>();
19
19
 
20
- foreach (var item in roster)
20
+ foreach (var item in roster.OrderBy(pair => pair.Key))
21
21
  {
22
22
  foreach (var student in item.Value)
23
23
  {
@@ -69,17 +69,17 @@ public void Grade_returns_an_empty_list_if_there_are_no_students_in_that_grade()
69
69
  public void Student_names_with_grades_are_displayed_in_the_same_sorted_roster()
70
70
  {
71
71
  var school = new School();
72
- school.Add("Jennifer", 4);
73
- school.Add("Kareem", 6);
74
- school.Add("Christopher", 4);
75
- school.Add("Kyle", 3);
72
+ school.Add("Peter", 2);
73
+ school.Add("Anna", 1);
74
+ school.Add("Barb", 1);
75
+ school.Add("Zoe", 2);
76
+ school.Add("Alex", 2);
77
+ school.Add("Jim", 3);
78
+ school.Add("Charlie", 1);
76
79
 
77
80
  var actual = school.Roster();
78
81
 
79
-
80
- var expected = new[] { "Christopher", "Jennifer", "Kareem", "Kyle" };
82
+ var expected = new[] { "Anna", "Barb", "Charlie", "Alex", "Peter", "Zoe", "Jim" };
81
83
  Assert.Equal(expected, actual);
82
-
83
-
84
84
  }
85
85
  }
@@ -1,17 +1,22 @@
1
1
  # xElixir
2
+
2
3
  ![build status](https://travis-ci.org/exercism/xelixir.svg?branch=master)
3
4
 
4
5
  Exercism Exercises in Elixir
5
6
 
6
7
  ## Setup
7
8
 
8
- The exercises currently target Elixir 1.3.2 and Erlang/OTP 19. Detailed installation instructions can be found at [http://elixir-lang.org/install.html](http://elixir-lang.org/install.html).
9
+ The exercises currently target Elixir 1.3.2 and Erlang/OTP 19. Detailed
10
+ installation instructions can be found at
11
+ [http://elixir-lang.org/install.html](http://elixir-lang.org/install.html).
9
12
 
10
13
  ## Contributing
11
14
 
12
15
  Thank you so much for contributing! :tada:
13
16
 
14
- We welcome pull requests that provide fixes and improvements to existing exercises. If you're unsure, then go ahead and open a GitHub issue, and we'll discuss the change.
17
+ We welcome pull requests that provide fixes and improvements to existing
18
+ exercises. If you're unsure, then go ahead and open a GitHub issue, and we'll
19
+ discuss the change.
15
20
 
16
21
  Please keep the following in mind:
17
22
 
@@ -19,25 +24,35 @@ Please keep the following in mind:
19
24
 
20
25
  - Pull requests should be focused on a single exercise, issue, or change.
21
26
 
22
- - We welcome changes to code style, and wording. Please open a separate PR for these changes if possible.
27
+ - We welcome changes to code style, and wording. Please open a separate PR for
28
+ these changes if possible.
23
29
 
24
- - Please open an issue before creating a PR that makes significant (breaking) changes to an existing exercise or makes changes across many exercises. It is best to discuss these changes before doing the work.
30
+ - Please open an issue before creating a PR that makes significant (breaking)
31
+ changes to an existing exercise or makes changes across many exercises. It is
32
+ best to discuss these changes before doing the work.
25
33
 
26
- - Follow the coding standards found in [The Elixir Style Guide](https://github.com/niftyn8/elixir_style_guide).
34
+ - Follow the coding standards found in
35
+ [The Elixir Style Guide](https://github.com/niftyn8/elixir_style_guide).
27
36
 
28
37
  - Watch out for trailing spaces, extra blank lines, and spaces in blank lines.
29
38
 
30
- - Each exercise must stand on its own. Do not reference files outside the exercise directory. They will not be included when the user fetches the exercise.
39
+ - Each exercise must stand on its own. Do not reference files outside the
40
+ exercise directory. They will not be included when the user fetches the
41
+ exercise.
31
42
 
32
- - Please do not add a README or README.md file to the exercise directory. The READMEs are constructed using shared metadata, which lives in the
33
- [exercism/x-common](https://github.com/exercism/x-common) repository.
43
+ - Please do not add a README or README.md file to the exercise directory. The
44
+ READMEs are constructed using shared metadata, which lives in the
45
+ [exercism/x-common](https://github.com/exercism/x-common) repository.
34
46
 
35
- - Each problem should have a test suite, an example solution, and a template file for the real implementation.
36
- The example solution should be named `example.exs`.
47
+ - Each problem should have a test suite, an example solution, and a template
48
+ file for the real implementation. The example solution should be named
49
+ `example.exs`.
37
50
 
38
51
  - Use typespecs in the example and template files as described [here](http://elixir-lang.org/getting-started/typespecs-and-behaviours.html).
39
52
 
40
- - Each test file should have code like the following at the top of the file. This allows the tests to be run on CI and configures tests to be skipped with the `:pending` flag.
53
+ - Each test file should have code like the following at the top of the file.
54
+ This allows the tests to be run on CI and configures tests to be skipped with
55
+ the `:pending` flag.
41
56
 
42
57
  ```elixir
43
58
  if !System.get_env("EXERCISM_TEST_EXAMPLES") do
@@ -57,7 +72,9 @@ test "shouting" do
57
72
  end
58
73
  ```
59
74
 
60
- All the tests for xElixir exercises can be run from the top level of the repo with `$ mix test`. Please run this command before submitting your PR. Watch out for and correct any compiler warnings you may have introduced.
75
+ All the tests for xElixir exercises can be run from the top level of the repo
76
+ with `$ mix test`. Please run this command before submitting your PR. Watch out
77
+ for and correct any compiler warnings you may have introduced.
61
78
 
62
79
  ## License
63
80
 
@@ -8,7 +8,6 @@ $ elixir bob_test.exs
8
8
 
9
9
  (Replace `bob_test.exs` with the name of the test file.)
10
10
 
11
-
12
11
  ### Pending tests
13
12
 
14
13
  In the test suites, all but the first test have been skipped.
@@ -1,17 +1,31 @@
1
- [Elixir](http://elixir-lang.org/), initially released in 2012, extends upon the already robust features of Erlang while also being easier for beginners to access, read, test, and write.
1
+ [Elixir](http://elixir-lang.org/), initially released in 2012, extends upon the
2
+ already robust features of Erlang while also being easier for beginners to
3
+ access, read, test, and write.
4
+
5
+ José Valim, the creator of Elixir, explains [here](https://vimeo.com/53221562)
6
+ how he built the language for applications to be:
2
7
 
3
- José Valim, the creator of Elixir, explains [here](https://vimeo.com/53221562) how he built the language for applications to be:
4
8
  1. Distributed
5
9
  2. Fault-Tolerant
6
10
  3. Soft-Real-Time
7
11
  4. Hot-Code-Swapped (can introduce new code without stopping the server)
8
12
 
9
- Elixir actually compiles down to [bytecode](https://en.wikipedia.org/wiki/Bytecode) and then runs on the [BEAM Erlang Virtual Machine](http://erlangcentral.org/videos/euc-2014-robert-virding-hitchhikers-tour-of-the-beam/).
13
+ Elixir actually compiles down to [bytecode](https://en.wikipedia.org/wiki/Bytecode)
14
+ and then runs on the [BEAM Erlang Virtual Machine](http://erlangcentral.org/videos/euc-2014-robert-virding-hitchhikers-tour-of-the-beam/).
10
15
 
11
- There is no "conversion cost" for calling Erlang, meaning you can run Erlang code right next to Elixir code.
16
+ There is no "conversion cost" for calling Erlang, meaning you can run Erlang
17
+ code right next to Elixir code.
12
18
 
13
- Being a functional language, everything in Elixir is an expression. Elixir has "First Class Documentation" meaning comments can be attached to a function, making it easier to retrieve. Regular expressions are also given first class treatment, removing awkward escaping within strings.
19
+ Being a functional language, everything in Elixir is an expression. Elixir has
20
+ "First Class Documentation" meaning comments can be attached to a function,
21
+ making it easier to retrieve. Regular expressions are also given first class
22
+ treatment, removing awkward escaping within strings.
14
23
 
15
- Elixir's asynchronous communication implementation allows the code to be lightweight, yet incorporate high-volume concurrency. Programmers use Elixir to handle thousands of requests and responses *concurrently* on a single server node. It has been used successfully for microservices that need to consume and serve a multitude of APIs rapidly.
24
+ Elixir's asynchronous communication implementation allows the code to be
25
+ lightweight, yet incorporate high-volume concurrency. Programmers use Elixir to
26
+ handle thousands of requests and responses *concurrently* on a single server
27
+ node. It has been used successfully for microservices that need to consume and
28
+ serve a multitude of APIs rapidly.
16
29
 
17
- The [Phoenix framework](http://www.phoenixframework.org/) helps structure Elixir applications for the web.
30
+ The [Phoenix framework](http://www.phoenixframework.org/) helps structure Elixir
31
+ applications for the web.
@@ -1,4 +1,6 @@
1
- Exercism provides exercises and feedback but can be difficult to jump into for those learning Elixir for the first time. These resources can help you get started:
1
+ Exercism provides exercises and feedback but can be difficult to jump into for
2
+ those learning Elixir for the first time. These resources can help you get
3
+ started:
2
4
 
3
5
  * [Elixir Getting Started Guide](http://elixir-lang.org/getting-started/introduction.html)
4
6
  * [Elixir Documentation](http://elixir-lang.org/docs/stable/elixir/)
@@ -9,4 +11,4 @@ Exercism provides exercises and feedback but can be difficult to jump into for t
9
11
  * [Elixir School](https://elixirschool.com)
10
12
  * [Elixir Examples](https://elixir-examples.github.io/)
11
13
  * [Exercism's BEAM Gitter channel](https://gitter.im/exercism/xerlang)
12
- * [Elixir Forum](https://elixirforum.com/)
14
+ * [Elixir Forum](https://elixirforum.com/)
@@ -3,7 +3,7 @@
3
3
  * [Elixir Docs](http://elixir-lang.org/docs.html)
4
4
 
5
5
  ## Hex - A package manager for the Erlang ecosystem.
6
-
6
+
7
7
  * [Hex Docs](https://hex.pm/)
8
8
 
9
9
  ## Testing with ExUnit
@@ -24,4 +24,4 @@
24
24
 
25
25
  ## Elixir Forum
26
26
 
27
- * [Elixir Forum](https://elixirforum.com/)
27
+ * [Elixir Forum](https://elixirforum.com/)
@@ -8,7 +8,6 @@ $ elixir bob_test.exs
8
8
 
9
9
  (Replace `bob_test.exs` with the name of the test file.)
10
10
 
11
-
12
11
  ### Pending tests
13
12
 
14
13
  In the test suites, all but the first test have been skipped.
@@ -75,7 +74,6 @@ will most likely not have a `plt` file. The persistent lookup table,
75
74
  or PLT is used by Dialyzer to cache information about built in Elixir
76
75
  and Erlang types. To create a plt with sensible defaults run:
77
76
 
78
-
79
77
  ```bash
80
78
  $ dialyzer --build_plt --apps erts kernel stdlib crypto public_key /path/to/elixir
81
79
  ```
@@ -0,0 +1,61 @@
1
+ // +build ignore
2
+
3
+ package main
4
+
5
+ import (
6
+ "log"
7
+ "text/template"
8
+
9
+ "../../../gen"
10
+ )
11
+
12
+ func main() {
13
+ t := template.New("").Funcs(template.FuncMap{
14
+ "isEncode": isEncode,
15
+ })
16
+ t, err := t.Parse(tmpl)
17
+ if err != nil {
18
+ log.Fatal(err)
19
+ }
20
+ var j js
21
+ if err := gen.Gen("atbash-cipher", &j, t); err != nil {
22
+ log.Fatal(err)
23
+ }
24
+ }
25
+
26
+ func isEncode(property string) bool {
27
+ return property == "encode"
28
+ }
29
+
30
+ // The JSON structure we expect to be able to unmarshal into
31
+ type js struct {
32
+ Cases []struct {
33
+ Description string
34
+ Cases []struct {
35
+ Description string
36
+ Property string
37
+ Phrase string
38
+ Expected string
39
+ }
40
+ }
41
+ }
42
+
43
+ // template applied to above data structure generates the Go test cases
44
+ var tmpl = `package atbash
45
+
46
+ {{.Header}}
47
+
48
+ type atbashTest struct {
49
+ s string
50
+ expected string
51
+ }
52
+
53
+ var tests = []atbashTest {
54
+ {{range .J.Cases}} {{range .Cases}}{
55
+ {{if isEncode .Property}} s: {{printf "%q" .Phrase }},
56
+ expected: {{printf "%q" .Expected }}, {{else}} s: {{printf "%q" .Expected }},
57
+ expected: {{printf "%q" .Phrase }}, {{- end}}
58
+ },
59
+ {{end}}{{end}}
60
+ }
61
+ `
@@ -2,22 +2,7 @@ package atbash
2
2
 
3
3
  import "testing"
4
4
 
5
- const targetTestVersion = 1
6
-
7
- var tests = []struct {
8
- expected string
9
- s string
10
- }{
11
- {"ml", "no"},
12
- {"ml", "no"},
13
- {"bvh", "yes"},
14
- {"lnt", "OMG"},
15
- {"lnt", "O M G"},
16
- {"nrmwy oldrm tob", "mindblowingly"},
17
- {"gvhgr mt123 gvhgr mt", "Testing, 1 2 3, testing."},
18
- {"gifgs rhurx grlm", "Truth is fiction."},
19
- {"gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt", "The quick brown fox jumps over the lazy dog."},
20
- }
5
+ const targetTestVersion = 2
21
6
 
22
7
  func TestTestVersion(t *testing.T) {
23
8
  if testVersion != targetTestVersion {
@@ -0,0 +1,61 @@
1
+ package atbash
2
+
3
+ // Source: exercism/x-common
4
+ // Commit: bb4f220 atbash-cipher: Fix canonical-data.json formatting
5
+ // x-common version: 1.0.0
6
+
7
+ type atbashTest struct {
8
+ s string
9
+ expected string
10
+ }
11
+
12
+ var tests = []atbashTest{
13
+ {
14
+ s: "yes",
15
+ expected: "bvh",
16
+ },
17
+ {
18
+ s: "no",
19
+ expected: "ml",
20
+ },
21
+ {
22
+ s: "OMG",
23
+ expected: "lnt",
24
+ },
25
+ {
26
+ s: "O M G",
27
+ expected: "lnt",
28
+ },
29
+ {
30
+ s: "mindblowingly",
31
+ expected: "nrmwy oldrm tob",
32
+ },
33
+ {
34
+ s: "Testing,1 2 3, testing.",
35
+ expected: "gvhgr mt123 gvhgr mt",
36
+ },
37
+ {
38
+ s: "Truth is fiction.",
39
+ expected: "gifgs rhurx grlm",
40
+ },
41
+ {
42
+ s: "The quick brown fox jumps over the lazy dog.",
43
+ expected: "gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt",
44
+ },
45
+ {
46
+ s: "exercism",
47
+ expected: "vcvix rhn",
48
+ },
49
+ {
50
+ s: "anobstacleisoftenasteppingstone",
51
+ expected: "zmlyh gzxov rhlug vmzhg vkkrm thglm v",
52
+ },
53
+ {
54
+ s: "testing123testing",
55
+ expected: "gvhgr mt123 gvhgr mt",
56
+ },
57
+ {
58
+ s: "thequickbrownfoxjumpsoverthelazydog",
59
+ expected: "gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt",
60
+ },
61
+ }
@@ -5,7 +5,7 @@ import (
5
5
  "strings"
6
6
  )
7
7
 
8
- const testVersion = 1
8
+ const testVersion = 2
9
9
 
10
10
  var alphabet = "abcdefghijklmnopqrstuvwxyz"
11
11
 
@@ -1,2 +1,11 @@
1
1
  public class Hamming {
2
+
3
+ Hamming(String leftStrand, String rightStrand) {
4
+ throw new UnsupportedOperationException("Delete this statement and write your own implementation.");
5
+ }
6
+
7
+ int getHammingDistance() {
8
+ throw new UnsupportedOperationException("Delete this statement and write your own implementation.");
9
+ }
10
+
2
11
  }
@@ -1,6 +1,6 @@
1
1
  import org.junit.Ignore;
2
- import org.junit.Test;
3
2
  import org.junit.Rule;
3
+ import org.junit.Test;
4
4
  import org.junit.rules.ExpectedException;
5
5
 
6
6
  import java.util.NoSuchElementException;
@@ -12,7 +12,7 @@ public class SimpleLinkedListTest {
12
12
 
13
13
  @Rule
14
14
  public ExpectedException thrown = ExpectedException.none();
15
-
15
+
16
16
  @Test
17
17
  public void aNewListIsEmpty() {
18
18
  SimpleLinkedList list = new SimpleLinkedList();
@@ -74,7 +74,7 @@ public class SimpleLinkedListTest {
74
74
  list.push(6);
75
75
  list.push(5);
76
76
  Integer[] expected = {5, 6, 7, 8, 9};
77
- assertEquals(list.asArray(Integer.class), expected);
77
+ assertArrayEquals(expected, list.asArray(Integer.class));
78
78
  }
79
79
 
80
80
  @Ignore("Remove to run test")
@@ -82,7 +82,7 @@ public class SimpleLinkedListTest {
82
82
  public void canReturnEmptyListAsEmptyArray() {
83
83
  SimpleLinkedList list = new SimpleLinkedList();
84
84
  Object[] expected = {};
85
- assertEquals(list.asArray(Object.class), expected);
85
+ assertArrayEquals(expected, list.asArray(Object.class));
86
86
  }
87
87
 
88
88
  }
@@ -2,7 +2,7 @@ With the first few exercises, you will get a skeleton file with the exported mod
2
2
  For later ones, you can find more information about modules in the [node documentation](http://nodejs.org/api/modules.html#modules_module_exports).
3
3
 
4
4
  For running tests, install `jasmine` as described in the [Installing Javascript section](http://exercism.io/languages/javascript/installing).
5
- Move to the folder where that exercise's files are located (a path similar to <EXERCISM_HOME_DIR>/javascript/<EXERCISE>).
5
+ Move to the folder where that exercise's files are located (a path similar to {EXERCISM_HOME_DIR}/javascript/{EXERCISE}).
6
6
 
7
7
  cd ~/exercism/javascript/bob
8
8
  jasmine bob_test.spec.js
@@ -101,6 +101,11 @@
101
101
  "difficulty": 4,
102
102
  "topics": []
103
103
  },
104
+ {
105
+ "slug": "binary-search",
106
+ "difficulty": 4,
107
+ "topics": ["Search", "Algorithms", "Arrays"]
108
+ },
104
109
  {
105
110
  "slug": "phone-number",
106
111
  "difficulty": 4,
@@ -1,3 +1,5 @@
1
+ (* Test/exercise version: "1.0.0" *)
2
+
1
3
  open Core.Std
2
4
  open OUnit2
3
5
  open Acronym