trackler 2.2.1.65 → 2.2.1.66

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/reverse-string/canonical-data.json +3 -3
  4. data/tracks/c/exercises/hello-world/makefile +9 -0
  5. data/tracks/c/exercises/phone-number/test/test_phone_number.c +2 -1
  6. data/tracks/go/exercises/collatz-conjecture/.meta/gen.go +72 -0
  7. data/tracks/go/exercises/collatz-conjecture/cases_test.go +43 -0
  8. data/tracks/go/exercises/collatz-conjecture/collatz_conjecture_test.go +0 -42
  9. data/tracks/perl6/config.json +10 -0
  10. data/tracks/perl6/docs/ABOUT.md +21 -12
  11. data/tracks/perl6/exercises/all-your-base/AllYourBase.pm6 +4 -1
  12. data/tracks/perl6/exercises/all-your-base/Example.pm6 +14 -34
  13. data/tracks/perl6/exercises/all-your-base/all-your-base.t +40 -53
  14. data/tracks/perl6/exercises/all-your-base/example.yaml +31 -51
  15. data/tracks/perl6/exercises/hamming/Example.pm6 +5 -4
  16. data/tracks/perl6/exercises/hamming/Hamming.pm6 +1 -1
  17. data/tracks/perl6/exercises/hamming/example.yaml +6 -5
  18. data/tracks/perl6/exercises/hamming/hamming.t +2 -2
  19. data/tracks/perl6/exercises/meetup/README.md +16 -12
  20. data/tracks/perl6/exercises/nucleotide-count/Example.pm6 +7 -0
  21. data/tracks/perl6/exercises/nucleotide-count/NucleotideCount.pm6 +4 -0
  22. data/tracks/perl6/exercises/nucleotide-count/README.md +38 -0
  23. data/tracks/perl6/exercises/nucleotide-count/example.yaml +24 -0
  24. data/tracks/perl6/exercises/nucleotide-count/nucleotide-count.t +116 -0
  25. data/tracks/python/exercises/perfect-numbers/example.py +13 -2
  26. data/tracks/python/exercises/perfect-numbers/perfect_numbers.py +1 -5
  27. data/tracks/python/exercises/perfect-numbers/perfect_numbers_test.py +60 -22
  28. data/tracks/python/test/check-exercises.py +1 -30
  29. data/tracks/scala/config.json +12 -0
  30. data/tracks/scala/exercises/flatten-array/README.md +29 -0
  31. data/tracks/scala/exercises/flatten-array/build.sbt +3 -0
  32. data/tracks/scala/exercises/flatten-array/example.scala +7 -0
  33. data/tracks/scala/exercises/flatten-array/project/build.properties +1 -0
  34. data/tracks/scala/exercises/flatten-array/src/main/scala/.keep +0 -0
  35. data/tracks/scala/exercises/flatten-array/src/test/scala/FlattenArrayTest.scala +55 -0
  36. metadata +15 -2
@@ -2,8 +2,6 @@
2
2
  from __future__ import print_function
3
3
 
4
4
  import os
5
- import ast
6
- import imp
7
5
  import glob
8
6
  import shutil
9
7
  import subprocess
@@ -22,7 +20,7 @@ def python_executable_name():
22
20
  def check_assignment(name, test_file):
23
21
  # Returns the exit code of the tests
24
22
  workdir = tempfile.mkdtemp(name)
25
- example_name = modname_heuristic(test_file)
23
+ example_name = name.replace("-", "_")
26
24
  try:
27
25
  test_file_out = os.path.join(workdir, os.path.basename(test_file))
28
26
  if name in ALLOW_SKIP:
@@ -40,33 +38,6 @@ def check_assignment(name, test_file):
40
38
  shutil.rmtree(workdir)
41
39
 
42
40
 
43
- def modname_heuristic(test_file):
44
- with open(test_file) as f:
45
- tree = ast.parse(f.read(), filename=test_file)
46
- # return the first nonexistent module that the tests import
47
- for node in ast.walk(tree):
48
- for modname in possible_module_names(node):
49
- if is_module_missing(modname):
50
- return modname
51
-
52
-
53
- def possible_module_names(node):
54
- if isinstance(node, ast.Import):
55
- for alias in node.names:
56
- yield alias.name
57
- elif isinstance(node, ast.ImportFrom):
58
- yield node.module
59
-
60
-
61
- def is_module_missing(modname):
62
- try:
63
- imp.find_module(modname)
64
- except ImportError:
65
- return True
66
- else:
67
- return False
68
-
69
-
70
41
  def load_config():
71
42
  try:
72
43
  with open('./config.json') as json_file:
@@ -34,6 +34,18 @@
34
34
  "Mathematics"
35
35
  ]
36
36
  },
37
+ {
38
+ "uuid": "825e94e5-6fc8-4dce-befe-74e1516fae14",
39
+ "slug": "flatten-array",
40
+ "core": true,
41
+ "unlocked_by": null,
42
+ "difficulty": 2,
43
+ "topics": [
44
+ "Recursion",
45
+ "Lists",
46
+ "Pattern matching"
47
+ ]
48
+ },
37
49
  {
38
50
  "uuid": "57b76aba-a485-464d-84ba-e9a445b25be6",
39
51
  "slug": "bob",
@@ -0,0 +1,29 @@
1
+ # Flatten Array
2
+
3
+ Take a nested list and return a single flattened list with all values except nil/null.
4
+
5
+ The challenge is to write a function that accepts an arbitrarily-deep nested list-like structure and returns a flattened structure without any nil/null values.
6
+
7
+ For Example
8
+
9
+ input: [1,[2,3,null,4],[null],5]
10
+
11
+ output: [1,2,3,4,5]
12
+
13
+ Do not use scala built-in `flatten` function.
14
+
15
+ ## Submitting Exercises
16
+
17
+ Note that, when trying to submit an exercise, make sure the solution is in the `exercism/scala/<exerciseName>` directory.
18
+
19
+ For example, if you're submitting `FlattenArray.scala` for the Bob exercise, the submit command would be something like `exercism submit <path_to_exercism_dir>/src/main/scala/FlattenArray.scala`.
20
+
21
+ For more detailed information about running tests, code style and linting,
22
+ please see the [help page](http://exercism.io/languages/scala).
23
+
24
+ ## Source
25
+
26
+ Interview Question [https://reference.wolfram.com/language/ref/Flatten.html](https://reference.wolfram.com/language/ref/Flatten.html)
27
+
28
+ ## Submitting Incomplete Solutions
29
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,3 @@
1
+ scalaVersion := "2.12.1"
2
+
3
+ libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
@@ -0,0 +1,7 @@
1
+ object FlattenArray {
2
+ def flatten(l: List[Any]): List[Any] = (l match {
3
+ case Nil => Nil
4
+ case (h:List[_])::tail => flatten(h):::flatten(tail)
5
+ case h::tail => h::flatten(tail)
6
+ }).filter(_ != null)
7
+ }
@@ -0,0 +1 @@
1
+ sbt.version=1.0.3
@@ -0,0 +1,55 @@
1
+ import org.scalatest.{Matchers, FunSuite}
2
+
3
+ class FlattenArrayTest extends FunSuite with Matchers {
4
+ test("empty list") {
5
+ FlattenArray.flatten(List()) should equal(List())
6
+ }
7
+
8
+ test("no nesting") {
9
+ pending
10
+ FlattenArray.flatten(List(0, 1, 2)) should equal(List(0, 1, 2))
11
+ }
12
+
13
+ test("flattens array with just integers present") {
14
+ pending
15
+ FlattenArray.flatten(List(1, List(2, 3, 4, 5, 6, 7), 8)) should equal(
16
+ List(1, 2, 3, 4, 5, 6, 7, 8))
17
+ }
18
+
19
+ test("5 level nesting") {
20
+ pending
21
+ FlattenArray.flatten(List(0,
22
+ 2,
23
+ List(List(2, 3), 8, 100, 4, List(List(List(50)))),
24
+ -2)) should equal(
25
+ List(0, 2, 2, 3, 8, 100, 4, 50, -2))
26
+ }
27
+
28
+ test("6 level nesting") {
29
+ pending
30
+ FlattenArray.flatten(List(
31
+ 1,
32
+ List(2, List(List(3)), List(4, List(List(5))), 6, 7),
33
+ 8)) should equal(List(1, 2, 3, 4, 5, 6, 7, 8))
34
+ }
35
+
36
+ test("6 level nest list with null values") {
37
+ pending
38
+ FlattenArray.flatten(
39
+ List(0,
40
+ 2,
41
+ List(List(2, 3), 8, List(List(100)), null, List(List(null))),
42
+ -2)) should equal(List(0, 2, 2, 3, 8, 100, -2))
43
+ }
44
+
45
+ test("all values in nested list are null") {
46
+ pending
47
+ FlattenArray.flatten(
48
+ List(null,
49
+ List(List(List(null))),
50
+ null,
51
+ null,
52
+ List(List(null, null), null),
53
+ null)) should equal(List())
54
+ }
55
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trackler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1.65
4
+ version: 2.2.1.66
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katrina Owen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-14 00:00:00.000000000 Z
11
+ date: 2017-11-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -5716,7 +5716,9 @@ files:
5716
5716
  - tracks/go/exercises/clock/clock_test.go
5717
5717
  - tracks/go/exercises/clock/example.go
5718
5718
  - tracks/go/exercises/clock/example_clock_test.go
5719
+ - tracks/go/exercises/collatz-conjecture/.meta/gen.go
5719
5720
  - tracks/go/exercises/collatz-conjecture/README.md
5721
+ - tracks/go/exercises/collatz-conjecture/cases_test.go
5720
5722
  - tracks/go/exercises/collatz-conjecture/collatz_conjecture_test.go
5721
5723
  - tracks/go/exercises/collatz-conjecture/example.go
5722
5724
  - tracks/go/exercises/connect/.meta/gen.go
@@ -9902,6 +9904,11 @@ files:
9902
9904
  - tracks/perl6/exercises/meetup/README.md
9903
9905
  - tracks/perl6/exercises/meetup/example.yaml
9904
9906
  - tracks/perl6/exercises/meetup/meetup.t
9907
+ - tracks/perl6/exercises/nucleotide-count/Example.pm6
9908
+ - tracks/perl6/exercises/nucleotide-count/NucleotideCount.pm6
9909
+ - tracks/perl6/exercises/nucleotide-count/README.md
9910
+ - tracks/perl6/exercises/nucleotide-count/example.yaml
9911
+ - tracks/perl6/exercises/nucleotide-count/nucleotide-count.t
9905
9912
  - tracks/perl6/exercises/pangram/Example.pm6
9906
9913
  - tracks/perl6/exercises/pangram/Pangram.pm6
9907
9914
  - tracks/perl6/exercises/pangram/README.md
@@ -12397,6 +12404,12 @@ files:
12397
12404
  - tracks/scala/exercises/etl/example.scala
12398
12405
  - tracks/scala/exercises/etl/src/main/scala/.keep
12399
12406
  - tracks/scala/exercises/etl/src/test/scala/EtlTest.scala
12407
+ - tracks/scala/exercises/flatten-array/README.md
12408
+ - tracks/scala/exercises/flatten-array/build.sbt
12409
+ - tracks/scala/exercises/flatten-array/example.scala
12410
+ - tracks/scala/exercises/flatten-array/project/build.properties
12411
+ - tracks/scala/exercises/flatten-array/src/main/scala/.keep
12412
+ - tracks/scala/exercises/flatten-array/src/test/scala/FlattenArrayTest.scala
12400
12413
  - tracks/scala/exercises/food-chain/README.md
12401
12414
  - tracks/scala/exercises/food-chain/build.sbt
12402
12415
  - tracks/scala/exercises/food-chain/example.scala