trackler 2.2.1.20 → 2.2.1.21
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/tracks/csharp/config.json +11 -0
- data/tracks/csharp/exercises/Exercises.All.sln +15 -1
- data/tracks/csharp/exercises/Exercises.Default.sln +120 -106
- data/tracks/csharp/exercises/complex-numbers/ComplexNumbers.cs +53 -0
- data/tracks/csharp/exercises/complex-numbers/ComplexNumbers.csproj +18 -0
- data/tracks/csharp/exercises/complex-numbers/ComplexNumbersTest.cs +255 -0
- data/tracks/csharp/exercises/complex-numbers/Example.cs +78 -0
- data/tracks/csharp/exercises/grains/Example.cs +8 -1
- data/tracks/csharp/exercises/grains/GrainsTest.cs +38 -17
- data/tracks/csharp/generators/Exercises/ComplexNumbers.cs +119 -0
- data/tracks/csharp/generators/Exercises/Grains.cs +29 -0
- data/tracks/csharp/generators/Output/ValueFormatter.cs +2 -0
- data/tracks/delphi/exercises/two-fer/utwoferExample.pas +2 -5
- data/tracks/ecmascript/exercises/queen-attack/example.js +28 -23
- data/tracks/ecmascript/exercises/queen-attack/queen-attack.spec.js +10 -15
- data/tracks/java/config.json +1 -0
- data/tracks/r/exercises/perfect-numbers/example.R +1 -1
- data/tracks/r/exercises/perfect-numbers/perfect-numbers.R +1 -1
- data/tracks/r/exercises/perfect-numbers/test_perfect-numbers.R +13 -13
- data/tracks/ruby/docs/24pullrequests.md +1 -1
- data/tracks/ruby/exercises/hello-world/.meta/generator/test_template.erb +1 -1
- data/tracks/ruby/exercises/hello-world/hello_world_test.rb +1 -1
- data/tracks/ruby/test/generator/command_line/generator_optparser_test.rb +1 -1
- data/tracks/ruby/test/generator/command_line_test.rb +1 -1
- data/tracks/ruby/test/generator/files/metadata_files_test.rb +1 -1
- data/tracks/rust/exercises/accumulate/README.md +0 -3
- data/tracks/rust/exercises/beer-song/src/lib.rs +7 -0
- data/tracks/rust/exercises/bob/src/lib.rs +3 -0
- data/tracks/rust/exercises/bowling/example.rs +1 -1
- data/tracks/rust/exercises/difference-of-squares/src/lib.rs +11 -0
- data/tracks/rust/exercises/grade-school/example.rs +1 -1
- data/tracks/rust/exercises/leap/src/lib.rs +3 -0
- data/tracks/rust/exercises/proverb/src/lib.rs +3 -0
- data/tracks/rust/exercises/raindrops/src/lib.rs +3 -0
- data/tracks/rust/exercises/sum-of-multiples/src/lib.rs +3 -0
- data/tracks/scala/exercises/space-age/example.scala +26 -20
- data/tracks/scala/exercises/space-age/src/main/scala/.keep +0 -0
- data/tracks/scala/exercises/space-age/src/test/scala/SpaceAgeTest.scala +19 -38
- data/tracks/scala/exercises/sublist/src/test/scala/SublistTest.scala +36 -44
- data/tracks/scala/testgen/src/main/scala/SpaceAgeTestGenerator.scala +39 -0
- data/tracks/scala/testgen/src/main/scala/SublistTestGenerator.scala +38 -0
- metadata +11 -3
- data/tracks/scala/exercises/space-age/src/main/scala/SpaceAge.scala +0 -10
@@ -25,9 +25,6 @@ Keep your hands off that collect/map/fmap/whatchamacallit functionality
|
|
25
25
|
provided by your standard library!
|
26
26
|
Solve this one yourself using other basic tools instead.
|
27
27
|
|
28
|
-
Lisp specific: it's perfectly fine to use `MAPCAR` or the equivalent,
|
29
|
-
as this is idiomatic Lisp, not a library function.
|
30
|
-
|
31
28
|
## Hints
|
32
29
|
|
33
30
|
We are dealing with two types of situations. One is a function pointer and
|
@@ -10,7 +10,7 @@ impl School {
|
|
10
10
|
}
|
11
11
|
|
12
12
|
pub fn add(&mut self, grade: u32, student: &str) {
|
13
|
-
let
|
13
|
+
let entry = self.grades.entry(grade).or_insert(Vec::new());
|
14
14
|
entry.push(student.to_string());
|
15
15
|
entry.sort();
|
16
16
|
}
|
@@ -1,24 +1,30 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
1
|
+
object SpaceAge {
|
2
|
+
private val daysToEarthAge = 365.25
|
3
|
+
private val daysToMercuryAge = 87.969
|
4
|
+
private val daysToVenusAge = 224.701
|
5
|
+
private val daysToMarsAge = 686.971
|
6
|
+
private val daysToJupiterAge = 4332.59
|
7
|
+
private val daysToSaturnAge = 10759.22
|
8
|
+
private val daysToUranusAge = 30799.095
|
9
|
+
private val daysToNeptuneAge = 60190.03
|
10
10
|
|
11
|
-
private
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
private val saturnYears = days / 10759.22
|
20
|
-
private val uranusYears = days / 30799.095
|
21
|
-
private val neptuneYears = days / 60190.03
|
11
|
+
private def toEarthDays(seconds: Double): Double = {
|
12
|
+
val minutes = seconds.toDouble / 60
|
13
|
+
val hours = minutes / 60
|
14
|
+
hours / 24
|
15
|
+
}
|
16
|
+
|
17
|
+
private def toPlanetAge(daysToPlanetAge: Double, seconds: Double): Double =
|
18
|
+
round(toEarthDays(seconds) / daysToPlanetAge)
|
22
19
|
|
23
20
|
private def round(value: Double): Double = (value * 100).round / 100.0
|
21
|
+
|
22
|
+
def onEarth(seconds: Double): Double = toPlanetAge(daysToEarthAge, seconds)
|
23
|
+
def onMercury(seconds: Double): Double = toPlanetAge(daysToMercuryAge, seconds)
|
24
|
+
def onVenus(seconds: Double): Double = toPlanetAge(daysToVenusAge, seconds)
|
25
|
+
def onMars(seconds: Double): Double = toPlanetAge(daysToMarsAge, seconds)
|
26
|
+
def onJupiter(seconds: Double): Double = toPlanetAge(daysToJupiterAge, seconds)
|
27
|
+
def onSaturn(seconds: Double): Double = toPlanetAge(daysToSaturnAge, seconds)
|
28
|
+
def onUranus(seconds: Double): Double = toPlanetAge(daysToUranusAge, seconds)
|
29
|
+
def onNeptune(seconds: Double): Double = toPlanetAge(daysToNeptuneAge, seconds)
|
24
30
|
}
|
File without changes
|
@@ -1,63 +1,44 @@
|
|
1
|
-
import org.scalatest.
|
1
|
+
import org.scalatest.{Matchers, FunSuite}
|
2
2
|
|
3
|
+
/** @version 1.0.0 */
|
3
4
|
class SpaceAgeTest extends FunSuite with Matchers {
|
4
|
-
test ("age in seconds") {
|
5
|
-
val age = SpaceAge(1000000)
|
6
|
-
age.seconds should be (1000000)
|
7
|
-
}
|
8
5
|
|
9
|
-
test
|
10
|
-
|
11
|
-
val age = SpaceAge(1000000000)
|
12
|
-
age.onEarth should be (31.69)
|
6
|
+
test("age on Earth") {
|
7
|
+
SpaceAge.onEarth(1000000000) should be (31.69)
|
13
8
|
}
|
14
9
|
|
15
|
-
test
|
10
|
+
test("age on Mercury") {
|
16
11
|
pending
|
17
|
-
|
18
|
-
age.onEarth should be (67.65)
|
19
|
-
age.onMercury should be (280.88)
|
12
|
+
SpaceAge.onMercury(2134835688) should be (280.88)
|
20
13
|
}
|
21
14
|
|
22
|
-
test
|
15
|
+
test("age on Venus") {
|
23
16
|
pending
|
24
|
-
|
25
|
-
age.onEarth should be (6.02)
|
26
|
-
age.onVenus should be (9.78)
|
17
|
+
SpaceAge.onVenus(189839836) should be (9.78)
|
27
18
|
}
|
28
19
|
|
29
|
-
test
|
20
|
+
test("age on Mars") {
|
30
21
|
pending
|
31
|
-
|
32
|
-
age.onEarth should be (73.83)
|
33
|
-
age.onMars should be (39.25)
|
22
|
+
SpaceAge.onMars(2.329871239E9) should be (39.25)
|
34
23
|
}
|
35
24
|
|
36
|
-
test
|
25
|
+
test("age on Jupiter") {
|
37
26
|
pending
|
38
|
-
|
39
|
-
age.onEarth should be (28.58)
|
40
|
-
age.onJupiter should be (2.41)
|
27
|
+
SpaceAge.onJupiter(901876382) should be (2.41)
|
41
28
|
}
|
42
29
|
|
43
|
-
test
|
30
|
+
test("age on Saturn") {
|
44
31
|
pending
|
45
|
-
|
46
|
-
age.onEarth should be (95.06)
|
47
|
-
age.onSaturn should be (3.23)
|
32
|
+
SpaceAge.onSaturn(3.0E9) should be (3.23)
|
48
33
|
}
|
49
34
|
|
50
|
-
test
|
35
|
+
test("age on Uranus") {
|
51
36
|
pending
|
52
|
-
|
53
|
-
age.onEarth should be (101.72)
|
54
|
-
age.onUranus should be (1.21)
|
37
|
+
SpaceAge.onUranus(3.210123456E9) should be (1.21)
|
55
38
|
}
|
56
39
|
|
57
|
-
test
|
40
|
+
test("age on Neptune") {
|
58
41
|
pending
|
59
|
-
|
60
|
-
age.onEarth should be (260.16)
|
61
|
-
age.onNeptune should be (1.58)
|
42
|
+
SpaceAge.onNeptune(8.210123456E9) should be (1.58)
|
62
43
|
}
|
63
|
-
}
|
44
|
+
}
|
@@ -1,97 +1,89 @@
|
|
1
|
-
import org.scalatest.{
|
1
|
+
import org.scalatest.{Matchers, FunSuite}
|
2
2
|
|
3
|
+
/** @version 1.0.0 */
|
3
4
|
class SublistTest extends FunSuite with Matchers {
|
5
|
+
|
4
6
|
test("empty lists") {
|
5
7
|
Sublist.sublist(List(), List()) should be (Sublist.Equal)
|
6
8
|
}
|
7
9
|
|
8
|
-
test("empty
|
10
|
+
test("empty list within non empty list") {
|
9
11
|
pending
|
10
|
-
Sublist.sublist(List(), List(
|
12
|
+
Sublist.sublist(List(), List(1, 2, 3)) should be (Sublist.Sublist)
|
11
13
|
}
|
12
14
|
|
13
|
-
test("
|
15
|
+
test("non empty list contains empty list") {
|
14
16
|
pending
|
15
|
-
Sublist.sublist(List(
|
17
|
+
Sublist.sublist(List(1, 2, 3), List()) should be (Sublist.Superlist)
|
16
18
|
}
|
17
19
|
|
18
|
-
test("
|
20
|
+
test("list equals itself") {
|
19
21
|
pending
|
20
|
-
Sublist.sublist(List(1), List(2)) should be (Sublist.
|
22
|
+
Sublist.sublist(List(1, 2, 3), List(1, 2, 3)) should be (Sublist.Equal)
|
21
23
|
}
|
22
24
|
|
23
|
-
test("
|
24
|
-
pending
|
25
|
-
val xs = List.fill(1000)("x")
|
26
|
-
Sublist.sublist(xs, xs) should be (Sublist.Equal)
|
27
|
-
}
|
28
|
-
|
29
|
-
test("sublist at start") {
|
25
|
+
test("different lists") {
|
30
26
|
pending
|
31
|
-
Sublist.sublist(List(1, 2, 3), List(
|
27
|
+
Sublist.sublist(List(1, 2, 3), List(2, 3, 4)) should be (Sublist.Unequal)
|
32
28
|
}
|
33
29
|
|
34
|
-
test("
|
30
|
+
test("false start") {
|
35
31
|
pending
|
36
|
-
Sublist.sublist(List(
|
32
|
+
Sublist.sublist(List(1, 2, 5), List(0, 1, 2, 3, 1, 2, 5, 6)) should be (Sublist.Sublist)
|
37
33
|
}
|
38
34
|
|
39
|
-
test("
|
35
|
+
test("consecutive") {
|
40
36
|
pending
|
41
|
-
Sublist.sublist(List(
|
37
|
+
Sublist.sublist(List(1, 1, 2), List(0, 1, 1, 1, 2, 1, 2)) should be (Sublist.Sublist)
|
42
38
|
}
|
43
39
|
|
44
|
-
test("
|
40
|
+
test("sublist at start") {
|
45
41
|
pending
|
46
|
-
Sublist.sublist(List(
|
42
|
+
Sublist.sublist(List(0, 1, 2), List(0, 1, 2, 3, 4, 5)) should be (Sublist.Sublist)
|
47
43
|
}
|
48
44
|
|
49
|
-
test("sublist
|
45
|
+
test("sublist in middle") {
|
50
46
|
pending
|
51
|
-
|
52
|
-
Sublist.sublist(List(3, 4, 5), xs) should be (Sublist.Sublist)
|
47
|
+
Sublist.sublist(List(2, 3, 4), List(0, 1, 2, 3, 4, 5)) should be (Sublist.Sublist)
|
53
48
|
}
|
54
49
|
|
55
|
-
test("
|
50
|
+
test("sublist at end") {
|
56
51
|
pending
|
57
|
-
|
58
|
-
val l2 = List.range(1, 1000000)
|
59
|
-
Sublist.sublist(l1, l2) should be (Sublist.Unequal)
|
52
|
+
Sublist.sublist(List(3, 4, 5), List(0, 1, 2, 3, 4, 5)) should be (Sublist.Sublist)
|
60
53
|
}
|
61
54
|
|
62
|
-
test("
|
55
|
+
test("at start of superlist") {
|
63
56
|
pending
|
64
|
-
Sublist.sublist(List(1, 2, 3, 4, 5), List(1, 2
|
57
|
+
Sublist.sublist(List(0, 1, 2, 3, 4, 5), List(0, 1, 2)) should be (Sublist.Superlist)
|
65
58
|
}
|
66
59
|
|
67
|
-
test("
|
60
|
+
test("in middle of superlist") {
|
68
61
|
pending
|
69
|
-
Sublist.sublist(List(
|
62
|
+
Sublist.sublist(List(0, 1, 2, 3, 4, 5), List(2, 3)) should be (Sublist.Superlist)
|
70
63
|
}
|
71
64
|
|
72
|
-
test("
|
65
|
+
test("at end of superlist") {
|
73
66
|
pending
|
74
|
-
Sublist.sublist(List(1, 2, 3, 4, 5), List(3, 4, 5)) should be (Sublist.Superlist)
|
67
|
+
Sublist.sublist(List(0, 1, 2, 3, 4, 5), List(3, 4, 5)) should be (Sublist.Superlist)
|
75
68
|
}
|
76
69
|
|
77
|
-
test("
|
70
|
+
test("first list missing element from second list") {
|
78
71
|
pending
|
79
|
-
Sublist.sublist(List(1,
|
72
|
+
Sublist.sublist(List(1, 3), List(1, 2, 3)) should be (Sublist.Unequal)
|
80
73
|
}
|
81
74
|
|
82
|
-
test("
|
75
|
+
test("second list missing element from first list") {
|
83
76
|
pending
|
84
|
-
|
85
|
-
Sublist.sublist(l1, List(3, 4, 5)) should be (Sublist.Superlist)
|
77
|
+
Sublist.sublist(List(1, 2, 3), List(1, 3)) should be (Sublist.Unequal)
|
86
78
|
}
|
87
79
|
|
88
|
-
test("
|
80
|
+
test("order matters to a list") {
|
89
81
|
pending
|
90
|
-
Sublist.sublist(List(1, 2,
|
82
|
+
Sublist.sublist(List(1, 2, 3), List(3, 2, 1)) should be (Sublist.Unequal)
|
91
83
|
}
|
92
84
|
|
93
|
-
test("
|
85
|
+
test("same digits but different numbers") {
|
94
86
|
pending
|
95
|
-
Sublist.sublist(List(1,
|
87
|
+
Sublist.sublist(List(1, 0, 1), List(10, 1)) should be (Sublist.Unequal)
|
96
88
|
}
|
97
|
-
}
|
89
|
+
}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
import java.io.File
|
2
|
+
|
3
|
+
import testgen.TestSuiteBuilder._
|
4
|
+
import testgen._
|
5
|
+
|
6
|
+
object SpaceAgeTestGenerator {
|
7
|
+
def main(args: Array[String]): Unit = {
|
8
|
+
val file = new File("src/main/resources/space-age.json")
|
9
|
+
|
10
|
+
def toString(expected: CanonicalDataParser.Expected): String = {
|
11
|
+
expected match {
|
12
|
+
case Left(_) => throw new IllegalStateException()
|
13
|
+
case Right(n) => s"$n"
|
14
|
+
}
|
15
|
+
}
|
16
|
+
|
17
|
+
def sutArgs(parseResult: CanonicalDataParser.ParseResult, argNames: String*): String =
|
18
|
+
argNames map (name => TestSuiteBuilder.toString(parseResult(name))) mkString ", "
|
19
|
+
|
20
|
+
def functionName(parseResult: CanonicalDataParser.ParseResult): String =
|
21
|
+
"on" + parseResult("planet").toString
|
22
|
+
|
23
|
+
def fromLabeledTest(argNames: String*): ToTestCaseData =
|
24
|
+
withLabeledTest { sut =>
|
25
|
+
labeledTest =>
|
26
|
+
val args = sutArgs(labeledTest.result, argNames: _*)
|
27
|
+
val property = labeledTest.property
|
28
|
+
val sutCall =
|
29
|
+
s"""$sut.${functionName(labeledTest.result)}($args)"""
|
30
|
+
val expected = toString(labeledTest.expected)
|
31
|
+
TestCaseData(labeledTest.description, sutCall, expected)
|
32
|
+
}
|
33
|
+
|
34
|
+
val code = TestSuiteBuilder.build(file, fromLabeledTest("seconds"))
|
35
|
+
println(s"-------------")
|
36
|
+
println(code)
|
37
|
+
println(s"-------------")
|
38
|
+
}
|
39
|
+
}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
import java.io.File
|
2
|
+
|
3
|
+
import testgen.TestSuiteBuilder._
|
4
|
+
import testgen._
|
5
|
+
|
6
|
+
object SublistTestGenerator {
|
7
|
+
def main(args: Array[String]): Unit = {
|
8
|
+
val file = new File("src/main/resources/sublist.json")
|
9
|
+
|
10
|
+
def toString(expected: CanonicalDataParser.Expected): String = {
|
11
|
+
expected match {
|
12
|
+
case Right("equal") => s"Sublist.Equal"
|
13
|
+
case Right("sublist") => s"Sublist.Sublist"
|
14
|
+
case Right("superlist") => s"Sublist.Superlist"
|
15
|
+
case Right("unequal") => s"Sublist.Unequal"
|
16
|
+
case _ => throw new IllegalStateException()
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
def fromLabeledTest(argNames: String*): ToTestCaseData =
|
21
|
+
withLabeledTest { sut =>
|
22
|
+
labeledTest =>
|
23
|
+
val args = sutArgs(labeledTest.result, argNames: _*)
|
24
|
+
val property = labeledTest.property
|
25
|
+
val sutCall =
|
26
|
+
s"$sut.$property($args)"
|
27
|
+
val expected = toString(labeledTest.expected)
|
28
|
+
TestCaseData(labeledTest.description, sutCall, expected)
|
29
|
+
}
|
30
|
+
|
31
|
+
val code =
|
32
|
+
TestSuiteBuilder.build(file, fromLabeledTest("listOne", "listTwo"))
|
33
|
+
|
34
|
+
println(s"-------------")
|
35
|
+
println(code)
|
36
|
+
println(s"-------------")
|
37
|
+
}
|
38
|
+
}
|
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.21
|
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
|
+
date: 2017-09-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyzip
|
@@ -1871,6 +1871,10 @@ files:
|
|
1871
1871
|
- tracks/csharp/exercises/collatz-conjecture/CollatzConjectureTest.cs
|
1872
1872
|
- tracks/csharp/exercises/collatz-conjecture/Example.cs
|
1873
1873
|
- tracks/csharp/exercises/collatz-conjecture/README.md
|
1874
|
+
- tracks/csharp/exercises/complex-numbers/ComplexNumbers.cs
|
1875
|
+
- tracks/csharp/exercises/complex-numbers/ComplexNumbers.csproj
|
1876
|
+
- tracks/csharp/exercises/complex-numbers/ComplexNumbersTest.cs
|
1877
|
+
- tracks/csharp/exercises/complex-numbers/Example.cs
|
1874
1878
|
- tracks/csharp/exercises/connect/Connect.cs
|
1875
1879
|
- tracks/csharp/exercises/connect/Connect.csproj
|
1876
1880
|
- tracks/csharp/exercises/connect/ConnectTest.cs
|
@@ -2359,10 +2363,12 @@ files:
|
|
2359
2363
|
- tracks/csharp/generators/Exercises/BookStore.cs
|
2360
2364
|
- tracks/csharp/generators/Exercises/BracketPush.cs
|
2361
2365
|
- tracks/csharp/generators/Exercises/CollatzConjecture.cs
|
2366
|
+
- tracks/csharp/generators/Exercises/ComplexNumbers.cs
|
2362
2367
|
- tracks/csharp/generators/Exercises/ConvertExtensions.cs
|
2363
2368
|
- tracks/csharp/generators/Exercises/CryptoSquare.cs
|
2364
2369
|
- tracks/csharp/generators/Exercises/FoodChain.cs
|
2365
2370
|
- tracks/csharp/generators/Exercises/Gigasecond.cs
|
2371
|
+
- tracks/csharp/generators/Exercises/Grains.cs
|
2366
2372
|
- tracks/csharp/generators/Exercises/Hamming.cs
|
2367
2373
|
- tracks/csharp/generators/Exercises/HelloWorld.cs
|
2368
2374
|
- tracks/csharp/generators/Exercises/House.cs
|
@@ -11126,7 +11132,7 @@ files:
|
|
11126
11132
|
- tracks/scala/exercises/space-age/README.md
|
11127
11133
|
- tracks/scala/exercises/space-age/build.sbt
|
11128
11134
|
- tracks/scala/exercises/space-age/example.scala
|
11129
|
-
- tracks/scala/exercises/space-age/src/main/scala
|
11135
|
+
- tracks/scala/exercises/space-age/src/main/scala/.keep
|
11130
11136
|
- tracks/scala/exercises/space-age/src/test/scala/SpaceAgeTest.scala
|
11131
11137
|
- tracks/scala/exercises/spiral-matrix/README.md
|
11132
11138
|
- tracks/scala/exercises/spiral-matrix/build.sbt
|
@@ -11236,7 +11242,9 @@ files:
|
|
11236
11242
|
- tracks/scala/testgen/src/main/scala/SecretHandshakeTestGenerator.scala
|
11237
11243
|
- tracks/scala/testgen/src/main/scala/SeriesTestGenerator.scala
|
11238
11244
|
- tracks/scala/testgen/src/main/scala/SieveTestGenerator.scala
|
11245
|
+
- tracks/scala/testgen/src/main/scala/SpaceAgeTestGenerator.scala
|
11239
11246
|
- tracks/scala/testgen/src/main/scala/SpiralMatrixTestGenerator.scala
|
11247
|
+
- tracks/scala/testgen/src/main/scala/SublistTestGenerator.scala
|
11240
11248
|
- tracks/scala/testgen/src/main/scala/SumOfMultiplesTestGenerator.scala
|
11241
11249
|
- tracks/scala/testgen/src/main/scala/TestBuilder.scala
|
11242
11250
|
- tracks/scala/testgen/src/main/scala/TriangleTestGenerator.scala
|