trackler 2.2.1.9 → 2.2.1.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/CONTRIBUTING.md +1 -1
  4. data/problem-specifications/TOPICS.txt +1 -0
  5. data/tracks/coffeescript/config/maintainers.json +15 -0
  6. data/tracks/coldfusion/config/maintainers.json +6 -0
  7. data/tracks/coq/config/maintainers.json +15 -0
  8. data/tracks/cpp/config/maintainers.json +25 -0
  9. data/tracks/delphi/config.json +1 -0
  10. data/tracks/delphi/config/maintainers.json +1 -1
  11. data/tracks/delphi/docs/SNIPPET.txt +14 -0
  12. data/tracks/ecmascript/config.json +711 -300
  13. data/tracks/elisp/config/maintainers.json +15 -0
  14. data/tracks/elm/config/maintainers.json +25 -0
  15. data/tracks/erlang/exercises/triangle/test/triangle_tests.erl +3 -3
  16. data/tracks/fortran/config/maintainers.json +15 -0
  17. data/tracks/go/config.json +3 -1
  18. data/tracks/go/config/maintainers.json +3 -1
  19. data/tracks/go/docs/ABOUT.md +3 -3
  20. data/tracks/groovy/config.json +1 -3
  21. data/tracks/groovy/config/maintainers.json +15 -0
  22. data/tracks/groovy/exercises/grains/Grains.groovy +9 -0
  23. data/tracks/groovy/exercises/grains/GrainsSpec.groovy +43 -0
  24. data/tracks/groovy/exercises/grains/README.md +1 -1
  25. data/tracks/groovy/exercises/word-count/Phrase.groovy +10 -0
  26. data/tracks/groovy/exercises/word-count/PhraseSpec.groovy +47 -0
  27. data/tracks/groovy/exercises/word-count/README.md +1 -1
  28. data/tracks/haxe/config/maintainers.json +6 -0
  29. data/tracks/idris/config/maintainers.json +15 -0
  30. data/tracks/java/CONTRIBUTING.md +1 -1
  31. data/tracks/java/exercises/series/src/example/java/Series.java +7 -9
  32. data/tracks/julia/config.json +12 -0
  33. data/tracks/julia/config/exercise_readme.go.tmpl +2 -0
  34. data/tracks/julia/exercises/anagram/README.md +1 -0
  35. data/tracks/julia/exercises/atbash-cipher/README.md +1 -0
  36. data/tracks/julia/exercises/bob/README.md +1 -0
  37. data/tracks/julia/exercises/collatz-conjecture/README.md +34 -0
  38. data/tracks/julia/exercises/collatz-conjecture/collatz-conjecture.jl +0 -0
  39. data/tracks/julia/exercises/collatz-conjecture/example.jl +14 -0
  40. data/tracks/julia/exercises/collatz-conjecture/runtests.jl +11 -0
  41. data/tracks/julia/exercises/complex-numbers/README.md +1 -0
  42. data/tracks/julia/exercises/custom-set/README.md +1 -0
  43. data/tracks/julia/exercises/difference-of-squares/README.md +1 -0
  44. data/tracks/julia/exercises/etl/README.md +1 -0
  45. data/tracks/julia/exercises/gigasecond/README.md +1 -0
  46. data/tracks/julia/exercises/hamming/README.md +1 -0
  47. data/tracks/julia/exercises/hello-world/README.md +1 -0
  48. data/tracks/julia/exercises/isogram/README.md +1 -0
  49. data/tracks/julia/exercises/leap/README.md +1 -0
  50. data/tracks/julia/exercises/luhn/README.md +1 -0
  51. data/tracks/julia/exercises/nucleotide-count/README.md +1 -0
  52. data/tracks/julia/exercises/pangram/README.md +1 -0
  53. data/tracks/julia/exercises/pascals-triangle/README.md +1 -0
  54. data/tracks/julia/exercises/raindrops/README.md +1 -0
  55. data/tracks/julia/exercises/rna-transcription/README.md +1 -0
  56. data/tracks/julia/exercises/robot-name/README.md +1 -0
  57. data/tracks/julia/exercises/roman-numerals/README.md +1 -0
  58. data/tracks/julia/exercises/rotational-cipher/README.md +1 -0
  59. data/tracks/julia/exercises/scrabble-score/README.md +1 -0
  60. data/tracks/julia/exercises/secret-handshake/README.md +1 -0
  61. data/tracks/julia/exercises/sieve/README.md +1 -0
  62. data/tracks/julia/exercises/transpose/README.md +1 -0
  63. data/tracks/julia/exercises/trinary/README.md +1 -0
  64. data/tracks/julia/exercises/word-count/README.md +1 -0
  65. data/tracks/lisp/.travis.yml +1 -1
  66. data/tracks/lisp/config/maintainers.json +5 -5
  67. data/tracks/mips/config.json +22 -22
  68. data/tracks/mips/config/maintainers.json +15 -0
  69. data/tracks/nim/config/maintainers.json +15 -0
  70. data/tracks/php/config/maintainers.json +35 -0
  71. data/tracks/plsql/config/maintainers.json +15 -0
  72. data/tracks/powershell/config/maintainers.json +25 -0
  73. data/tracks/prolog/config/maintainers.json +15 -0
  74. data/tracks/python/config/maintainers.json +25 -0
  75. data/tracks/racket/config/maintainers.json +35 -0
  76. data/tracks/scheme/config/maintainers.json +25 -0
  77. data/tracks/sml/config.json +1 -1
  78. data/tracks/sml/exercises/accumulate/{test_accumulate.sml → test.sml} +0 -0
  79. data/tracks/sml/exercises/allergies/{test_allergies.sml → test.sml} +0 -0
  80. data/tracks/sml/exercises/anagram/{test_anagram.sml → test.sml} +0 -0
  81. data/tracks/sml/exercises/binary/{test_binary.sml → test.sml} +0 -0
  82. data/tracks/sml/exercises/flatten-array/{test_flatten_array.sml → test.sml} +0 -0
  83. data/tracks/sml/exercises/hamming/{test_hamming.sml → test.sml} +0 -0
  84. data/tracks/sml/exercises/nth-prime/{test_nth_prime.sml → test.sml} +0 -0
  85. data/tracks/sml/exercises/raindrops/{test_raindrops.sml → test.sml} +0 -0
  86. data/tracks/vbnet/config/maintainers.json +15 -0
  87. metadata +39 -12
  88. data/tracks/groovy/exercises/grains/GrainsTest.groovy +0 -45
  89. data/tracks/groovy/exercises/word-count/PhraseTest.groovy +0 -69
@@ -0,0 +1,15 @@
1
+ {
2
+ "maintainers": [
3
+ {
4
+ "github_username": "yurrriq",
5
+ "show_on_website": false,
6
+ "alumnus": false,
7
+ "name": null,
8
+ "bio": null,
9
+ "link_text": null,
10
+ "link_url": null,
11
+ "avatar_url": null
12
+ }
13
+ ],
14
+ "docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md"
15
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "maintainers": [
3
+ {
4
+ "github_username": "tgecho",
5
+ "show_on_website": false,
6
+ "alumnus": false,
7
+ "name": null,
8
+ "bio": null,
9
+ "link_text": null,
10
+ "link_url": null,
11
+ "avatar_url": null
12
+ },
13
+ {
14
+ "github_username": "bewatts",
15
+ "show_on_website": false,
16
+ "alumnus": false,
17
+ "name": null,
18
+ "bio": null,
19
+ "link_text": null,
20
+ "link_url": null,
21
+ "avatar_url": null
22
+ }
23
+ ],
24
+ "docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md"
25
+ }
@@ -43,14 +43,14 @@ triangles_with_negative_sides_are_illegal_test() ->
43
43
  ?assertMatch({error, "all side lengths must be positive"},
44
44
  ?TESTED_MODULE:kind(3, 4, -5)).
45
45
 
46
- triangles_violating_triangle_inequality_are_illegel_test() ->
46
+ triangles_violating_triangle_inequality_are_illegal_test() ->
47
47
  ?assertMatch({error, "side lengths violate triangle inequality"},
48
48
  ?TESTED_MODULE:kind(1, 1, 3)).
49
49
 
50
- triangles_violating_triangle_inequality_are_illegel_2_test() ->
50
+ triangles_violating_triangle_inequality_are_illegal_2_test() ->
51
51
  ?assertMatch({error, "side lengths violate triangle inequality"},
52
52
  ?TESTED_MODULE:kind(2, 4, 2)).
53
53
 
54
- triangles_violating_triangle_inequality_are_illegel_3_test() ->
54
+ triangles_violating_triangle_inequality_are_illegal_3_test() ->
55
55
  ?assertMatch({error, "side lengths violate triangle inequality"},
56
56
  ?TESTED_MODULE:kind(7, 3, 2)).
@@ -0,0 +1,15 @@
1
+ {
2
+ "maintainers": [
3
+ {
4
+ "github_username": "sentientmonkey",
5
+ "show_on_website": false,
6
+ "alumnus": false,
7
+ "name": null,
8
+ "bio": null,
9
+ "link_text": null,
10
+ "link_url": null,
11
+ "avatar_url": null
12
+ }
13
+ ],
14
+ "docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md"
15
+ }
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "language": "Go",
3
3
  "active": true,
4
+ "blurb": "Go is a compiled, open source programming language with a small, consistent syntax, a powerful standard library, and fantastic tooling. It's a great fit for web backends and command-line tools.",
4
5
  "ignore_pattern": "example(?!.*test)",
5
6
  "foregone": [
6
7
  "space-age",
@@ -328,6 +329,7 @@
328
329
  "unlocked_by": null,
329
330
  "difficulty": 3,
330
331
  "topics": [
332
+ "Cryptography",
331
333
  "Filtering",
332
334
  "Strings",
333
335
  "Text Formatting",
@@ -822,8 +824,8 @@
822
824
  "difficulty": 3,
823
825
  "topics": [
824
826
  "Algorithms",
827
+ "Cryptography",
825
828
  "Interfaces",
826
- "Security",
827
829
  "Strings",
828
830
  "Transforming"
829
831
  ]
@@ -12,7 +12,9 @@
12
12
  },
13
13
  {
14
14
  "github_username": "kytrinyx",
15
- "alumnus": true
15
+ "alumnus": true,
16
+ "name": "Katrina Owen",
17
+ "bio": "I love Go for its simplicity and consistency. I also appreciate how hard the Go project is working to make the ecosystem welcoming to newcomers. I no longer maintain the Go track, but still maintain the Go tooling on Exercism."
16
18
  },
17
19
  {
18
20
  "github_username": "petertseng",
@@ -1,7 +1,7 @@
1
- Go is an open source programming language started by engineers at Google. It's written using a C-style syntax, has statically typed variables, manages memory using garbage collection, and is compiled into stand-alone executables.
1
+ Fans of Go (called *gophers*) describe Go as having the expressiveness of dynamic languages like Python or Ruby, with the performance of compiled languages like C or C++.
2
2
 
3
- Go is noted for the [concurrent programming features](https://golang.org/doc/effective_go.html#concurrency) built into the language core, the networking packages in the standard library ([such as a web server](https://golang.org/pkg/net/http/)), fast compilation and execution speed, and its simple, minimalistic language design.
3
+ The language is open source, and was started by engineers at Google. It's written using a C-style syntax, has statically typed variables, manages memory using garbage collection, and is compiled into stand-alone executables.
4
4
 
5
- Fans of Go (called *gophers*) describe it as having the expressiveness of dynamic languages like Python or Ruby, with the performance of compiled languages like C or C++.
5
+ Go is noted for the [concurrent programming features](https://golang.org/doc/effective_go.html#concurrency) built into the language core, the networking packages in the standard library ([such as a web server](https://golang.org/pkg/net/http/)), fast compilation and execution speed. Its simple, minimalistic and consistent language design make for a delightful experience, while the abundant and thoughtful tooling addresses traditional problems such as [consistent formatting](https://godoc.org/github.com/golang/go/src/cmd/gofmt) and [documentation](http://godoc.org/golang.org/x/tools/cmd/godoc).
6
6
 
7
7
  The home page for Go is [golang.org](https://golang.org/), and there is an excellent interactive tutorial at [tour.golang.org](https://tour.golang.org/).
@@ -1,10 +1,8 @@
1
1
  {
2
- "slug": "groovy",
3
2
  "language": "Groovy",
4
- "repository": "https://github.com/exercism/groovy",
5
3
  "checklist_issue": 9,
6
4
  "active": false,
7
- "test_pattern": "(Test|Spec)[.]groovy",
5
+ "test_pattern": "(Spec)[.]groovy",
8
6
  "foregone": [
9
7
 
10
8
  ],
@@ -0,0 +1,15 @@
1
+ {
2
+ "maintainers": [
3
+ {
4
+ "github_username": "Dispader",
5
+ "show_on_website": false,
6
+ "alumnus": false,
7
+ "name": null,
8
+ "bio": null,
9
+ "link_text": null,
10
+ "link_url": null,
11
+ "avatar_url": null
12
+ }
13
+ ],
14
+ "docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md"
15
+ }
@@ -0,0 +1,9 @@
1
+ class Grains {
2
+ def square(num) {
3
+ // YOUR CODE HERE
4
+ }
5
+
6
+ def total() {
7
+ // YOUR CODE HERE
8
+ }
9
+ }
@@ -0,0 +1,43 @@
1
+ @Grab('org.spockframework:spock-core:1.0-groovy-2.4')
2
+ import spock.lang.*
3
+
4
+ class GrainsSpec extends Specification {
5
+
6
+ @Shared
7
+ def grains = new Grains()
8
+
9
+ def 'square of 1' () {
10
+ expect: 1 == grains.square(1)
11
+ }
12
+
13
+ def 'square of 2' () {
14
+ expect: 2 == grains.square(2)
15
+ }
16
+
17
+ def 'square of 3' () {
18
+ expect: 4 == grains.square(3)
19
+ }
20
+
21
+
22
+ def 'square of 4' () {
23
+ expect: 8 == grains.square(4)
24
+ }
25
+
26
+ def 'square of 16' () {
27
+ expect: 32768 == grains.square(16)
28
+ }
29
+
30
+ // GROOVY-7129
31
+ def 'square of 32' () {
32
+ expect: 2147483648 == grains.square(32)
33
+ }
34
+
35
+ def 'square of 64' () {
36
+ expect: 9223372036854775808 == grains.square(64)
37
+ }
38
+
39
+ def 'test total' () {
40
+ expect:
41
+ 18446744073709551615 == grains.total()
42
+ }
43
+ }
@@ -33,7 +33,7 @@ For installation and learning resources, refer to the
33
33
  Run the tests by executing the test script.
34
34
 
35
35
  ```
36
- $ groovy ./HelloWorldSpec.groovy
36
+ $ groovy ./GrainsSpec.groovy
37
37
  ```
38
38
 
39
39
  After the first test(s) pass, continue by commenting out or removing the `@Ignore` annotations prepending other tests.
@@ -0,0 +1,10 @@
1
+ class Phrase {
2
+
3
+ def Phrase(s) {
4
+ // YOUR CODE HERE
5
+ }
6
+
7
+ def wordCount() {
8
+ // YOUR CODE HERE
9
+ }
10
+ }
@@ -0,0 +1,47 @@
1
+ @Grab('org.spockframework:spock-core:1.0-groovy-2.4')
2
+ import spock.lang.*
3
+
4
+ class PhraseSpec extends Specification {
5
+
6
+ def 'count one word' () {
7
+ expect: ["word":1] == new Phrase("word").wordCount()
8
+ }
9
+
10
+ def 'count one of each' () {
11
+ expect: ["one":1,"of":1,"each":1] == new Phrase("one of each").wordCount()
12
+ }
13
+
14
+ def 'count multiple occurrences' () {
15
+ def phrase = new Phrase("one fish two fish red fish blue fish")
16
+ expect: ["one":1,"fish":4,"two":1,"red":1,"blue":1] == phrase.wordCount()
17
+ }
18
+
19
+ def 'count everything only once' () {
20
+ def phrase = new Phrase("all the kings horses and all the kings men")
21
+ // call wordCount 2x to verify
22
+ phrase.wordCount()
23
+ expect: ["all":2,"the":2,"kings":2,"horses":1,"and":1,"men":1] == phrase.wordCount()
24
+ }
25
+
26
+ def 'ignore punctuation' () {
27
+ def phrase = new Phrase('car : carpet as java : javascript!!&@$%^&')
28
+ expect: ["car":1,"carpet":1,"as":1,"java":1,"javascript":1] == phrase.wordCount()
29
+ }
30
+
31
+ def 'handle no spaces' () {
32
+ expect: ["one":1,"two":1,"three":1] == new Phrase("one,two,three").wordCount()
33
+ }
34
+
35
+ def 'include numbers' () {
36
+ expect: ["testing":2,"1":1,"2":1] == new Phrase("testing, 1, 2 testing").wordCount()
37
+ }
38
+
39
+ def 'normalize case' () {
40
+ expect: ["go":3] == new Phrase("go Go GO").wordCount()
41
+ }
42
+
43
+ def 'handle apostrophes' () {
44
+ def phrase = new Phrase("First: don't laugh. Then: don't cry.")
45
+ expect: ["first":1,"don't":2,"laugh":1,"then":1,"cry":1] == phrase.wordCount()
46
+ }
47
+ }
@@ -18,7 +18,7 @@ For installation and learning resources, refer to the
18
18
  Run the tests by executing the test script.
19
19
 
20
20
  ```
21
- $ groovy ./HelloWorldSpec.groovy
21
+ $ groovy ./PhraseSpec.groovy
22
22
  ```
23
23
 
24
24
  After the first test(s) pass, continue by commenting out or removing the `@Ignore` annotations prepending other tests.
@@ -0,0 +1,6 @@
1
+ {
2
+ "maintainers": [
3
+
4
+ ],
5
+ "docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md"
6
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "maintainers": [
3
+ {
4
+ "github_username": "yurrriq",
5
+ "show_on_website": false,
6
+ "alumnus": false,
7
+ "name": null,
8
+ "bio": null,
9
+ "link_text": null,
10
+ "link_url": null,
11
+ "avatar_url": null
12
+ }
13
+ ],
14
+ "docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md"
15
+ }
@@ -37,7 +37,7 @@ To submit a fix for an existing exercise or port an exercise to Java with the le
37
37
 
38
38
  1. **Ensure you have the basic Java tooling installed:** JDK 1.8+, an editor and Gradle 2.x.
39
39
 
40
- (see [exercism.io: Installing Java](http://exercism.io/languages/java/installing))
40
+ (see [exercism.io: Installing Java](http://exercism.io/languages/java/installation))
41
41
  - **Setup a branch on a fork of [exercism/java](https://github.com/exercism/java) on your computer.**
42
42
 
43
43
  See [GitHub Help: Forking](https://help.github.com/articles/fork-a-repo/). Use those instructions (in conjunction with the [Git Basics doc](https://github.com/exercism/docs/blob/master/contributing/git-basics.md)) to:
@@ -4,21 +4,19 @@ import java.util.Arrays;
4
4
  import java.util.List;
5
5
  import java.util.stream.Collectors;
6
6
 
7
- public class Series {
7
+ class Series {
8
8
 
9
9
  private final int digitsSize;
10
10
  private List<Integer> digits;
11
11
 
12
- public Series(String string) {
13
- this.digits = Arrays
14
- .asList(string.split(("")))
15
- .stream()
16
- .map(digit -> Integer.parseInt(digit))
17
- .collect(Collectors.toList());
12
+ Series(String string) {
13
+ this.digits = Arrays.stream(string.split(""))
14
+ .map(Integer::parseInt)
15
+ .collect(Collectors.toList());
18
16
  this.digitsSize = this.digits.size();
19
17
  }
20
18
 
21
- public List<List<Integer>> slices(int num) {
19
+ List<List<Integer>> slices(int num) {
22
20
  if (num > this.digitsSize) {
23
21
  throw new IllegalArgumentException("Slice size is too big.");
24
22
  }
@@ -32,7 +30,7 @@ public class Series {
32
30
  return result;
33
31
  }
34
32
 
35
- public List<Integer> getDigits() {
33
+ List<Integer> getDigits() {
36
34
  return digits;
37
35
  }
38
36
 
@@ -218,6 +218,18 @@
218
218
  "sorting"
219
219
  ]
220
220
  },
221
+ {
222
+ "uuid": "43f1dc63-0412-9a80-49ba-b620f4bbfccac2731e4",
223
+ "slug": "collatz-conjecture",
224
+ "core": false,
225
+ "unlocked_by": null,
226
+ "difficulty": 2,
227
+ "topics": [
228
+ "mathematics",
229
+ "control-flow (exceptions)",
230
+ "control-flow (if-else statements)"
231
+ ]
232
+ },
221
233
  {
222
234
  "uuid": "9474a13b-09c1-4e4d-90e3-1a14fde5eb62",
223
235
  "slug": "bob",
@@ -8,9 +8,11 @@
8
8
  {{ . }}
9
9
  {{ end }}
10
10
  {{- with .Spec.Credits -}}
11
+
11
12
  ## Source
12
13
 
13
14
  {{ . }}
14
15
  {{ end }}
16
+
15
17
  ## Submitting Incomplete Solutions
16
18
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -9,5 +9,6 @@ Given `"listen"` and a list of candidates like `"enlists" "google"
9
9
 
10
10
  Inspired by the Extreme Startup game [https://github.com/rchatley/extreme_startup](https://github.com/rchatley/extreme_startup)
11
11
 
12
+
12
13
  ## Submitting Incomplete Solutions
13
14
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -30,5 +30,6 @@ things based on word boundaries.
30
30
 
31
31
  Wikipedia [http://en.wikipedia.org/wiki/Atbash](http://en.wikipedia.org/wiki/Atbash)
32
32
 
33
+
33
34
  ## Submitting Incomplete Solutions
34
35
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -14,5 +14,6 @@ He answers 'Whatever.' to anything else.
14
14
 
15
15
  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)
16
16
 
17
+
17
18
  ## Submitting Incomplete Solutions
18
19
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,34 @@
1
+ # Collatz Conjecture
2
+
3
+ The Collatz Conjecture or 3x+1 problem can be summarized as follows:
4
+
5
+ Take any positive integer n. If n is even, divide n by 2 to get n / 2. If n is
6
+ odd, multiply n by 3 and add 1 to get 3n + 1. Repeat the process indefinitely.
7
+ The conjecture states that no matter which number you start with, you will
8
+ always reach 1 eventually.
9
+
10
+ Given a number n, return the number of steps required to reach 1.
11
+
12
+ ## Examples
13
+ Starting with n = 12, the steps would be as follows:
14
+
15
+ 0. 12
16
+ 1. 6
17
+ 2. 3
18
+ 3. 10
19
+ 4. 5
20
+ 5. 16
21
+ 6. 8
22
+ 7. 4
23
+ 8. 2
24
+ 9. 1
25
+
26
+ Resulting in 9 steps. So for input n = 12, the return value would be 9.
27
+
28
+ ## Source
29
+
30
+ An unsolved problem in mathematics named after mathematician Lothar Collatz [https://en.wikipedia.org/wiki/3x_%2B_1_problem](https://en.wikipedia.org/wiki/3x_%2B_1_problem)
31
+
32
+
33
+ ## Submitting Incomplete Solutions
34
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.