trackler 2.2.1.20 → 2.2.1.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|