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.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/problem-specifications/exercises/reverse-string/canonical-data.json +3 -3
- data/tracks/c/exercises/hello-world/makefile +9 -0
- data/tracks/c/exercises/phone-number/test/test_phone_number.c +2 -1
- data/tracks/go/exercises/collatz-conjecture/.meta/gen.go +72 -0
- data/tracks/go/exercises/collatz-conjecture/cases_test.go +43 -0
- data/tracks/go/exercises/collatz-conjecture/collatz_conjecture_test.go +0 -42
- data/tracks/perl6/config.json +10 -0
- data/tracks/perl6/docs/ABOUT.md +21 -12
- data/tracks/perl6/exercises/all-your-base/AllYourBase.pm6 +4 -1
- data/tracks/perl6/exercises/all-your-base/Example.pm6 +14 -34
- data/tracks/perl6/exercises/all-your-base/all-your-base.t +40 -53
- data/tracks/perl6/exercises/all-your-base/example.yaml +31 -51
- data/tracks/perl6/exercises/hamming/Example.pm6 +5 -4
- data/tracks/perl6/exercises/hamming/Hamming.pm6 +1 -1
- data/tracks/perl6/exercises/hamming/example.yaml +6 -5
- data/tracks/perl6/exercises/hamming/hamming.t +2 -2
- data/tracks/perl6/exercises/meetup/README.md +16 -12
- data/tracks/perl6/exercises/nucleotide-count/Example.pm6 +7 -0
- data/tracks/perl6/exercises/nucleotide-count/NucleotideCount.pm6 +4 -0
- data/tracks/perl6/exercises/nucleotide-count/README.md +38 -0
- data/tracks/perl6/exercises/nucleotide-count/example.yaml +24 -0
- data/tracks/perl6/exercises/nucleotide-count/nucleotide-count.t +116 -0
- data/tracks/python/exercises/perfect-numbers/example.py +13 -2
- data/tracks/python/exercises/perfect-numbers/perfect_numbers.py +1 -5
- data/tracks/python/exercises/perfect-numbers/perfect_numbers_test.py +60 -22
- data/tracks/python/test/check-exercises.py +1 -30
- data/tracks/scala/config.json +12 -0
- data/tracks/scala/exercises/flatten-array/README.md +29 -0
- data/tracks/scala/exercises/flatten-array/build.sbt +3 -0
- data/tracks/scala/exercises/flatten-array/example.scala +7 -0
- data/tracks/scala/exercises/flatten-array/project/build.properties +1 -0
- data/tracks/scala/exercises/flatten-array/src/main/scala/.keep +0 -0
- data/tracks/scala/exercises/flatten-array/src/test/scala/FlattenArrayTest.scala +55 -0
- 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 =
|
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:
|
data/tracks/scala/config.json
CHANGED
@@ -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 @@
|
|
1
|
+
sbt.version=1.0.3
|
File without changes
|
@@ -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.
|
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-
|
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
|