trackler 2.0.6.2 → 2.0.6.3
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/common/exercises/word-count/canonical-data.json +1 -1
- data/lib/trackler/version.rb +1 -1
- data/tracks/go/exercises/word-count/cases_test.go +1 -1
- data/tracks/java/exercises/all-your-base/src/test/java/BaseConverterTest.java +20 -0
- data/tracks/java/exercises/queen-attack/src/test/java/QueenAttackCalculatorTest.java +0 -1
- data/tracks/rust/exercises/hello-world/GETTING_STARTED.md +1 -1
- data/tracks/scala/config.json +3 -0
- data/tracks/scala/exercises/gigasecond/HINTS.md +1 -2
- data/tracks/scala/exercises/gigasecond/build.sbt +2 -2
- data/tracks/scala/exercises/gigasecond/example.scala +14 -6
- data/tracks/scala/exercises/gigasecond/src/test/scala/GigasecondTest.scala +40 -38
- data/tracks/swift/config.json +10 -0
- data/tracks/swift/exercises/flatten-array/FlattenArrayExample.swift +34 -0
- data/tracks/swift/exercises/flatten-array/FlattenArrayTest.swift +52 -0
- data/tracks/swift/xcodeProject/xSwift.xcodeproj/project.pbxproj +26 -2
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cb456c079419313a6ce0e9bd9442ced587c8f3a9
|
4
|
+
data.tar.gz: b5cab80a086b12263490be5017b91406891ae13a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c6b863818cbcc41b49d6f5c828c71d97d592a7eb41d7f12f0a19914ddb39a0b36b1cec01a859c03717ff512ea57d69f2141e329e05eca95cb023851f725a924f
|
7
|
+
data.tar.gz: aff5310dd0bf1b56b3a68d415b26d95215fe26cd63d4b7f5f0e0abf24140a9e6d241fbed08d6d1d87b1bb3fd41aec865c6412da7614cad0e83a456acd8f3845d
|
@@ -46,7 +46,7 @@
|
|
46
46
|
"expected": { "first": 1, "don't": 2, "laugh": 1, "then": 1, "cry": 1 }
|
47
47
|
},
|
48
48
|
{
|
49
|
-
"description": "
|
49
|
+
"description": "with quotations",
|
50
50
|
"input": "Joe can't tell between 'large' and large.",
|
51
51
|
"expected": { "joe": 1, "can't": 1, "tell": 1, "between": 1, "large": 2, "and": 1 }
|
52
52
|
}
|
data/lib/trackler/version.rb
CHANGED
@@ -53,7 +53,7 @@ var testCases = []struct {
|
|
53
53
|
Frequency{"cry": 1, "don't": 2, "first": 1, "laugh": 1, "then": 1},
|
54
54
|
},
|
55
55
|
{
|
56
|
-
"
|
56
|
+
"with quotations",
|
57
57
|
"Joe can't tell between 'large' and large.",
|
58
58
|
Frequency{"and": 1, "between": 1, "can't": 1, "joe": 1, "large": 2, "tell": 1},
|
59
59
|
},
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import org.junit.Ignore;
|
1
2
|
import org.junit.Rule;
|
2
3
|
import org.junit.Test;
|
3
4
|
import org.junit.rules.ExpectedException;
|
@@ -31,6 +32,7 @@ public final class BaseConverterTest {
|
|
31
32
|
actualDigits);
|
32
33
|
}
|
33
34
|
|
35
|
+
@Ignore
|
34
36
|
@Test
|
35
37
|
public void testBinaryToSingleDecimal() {
|
36
38
|
final BaseConverter baseConverter = new BaseConverter(2, new int[]{1, 0, 1});
|
@@ -47,6 +49,7 @@ public final class BaseConverterTest {
|
|
47
49
|
actualDigits);
|
48
50
|
}
|
49
51
|
|
52
|
+
@Ignore
|
50
53
|
@Test
|
51
54
|
public void testSingleDecimalToBinary() {
|
52
55
|
final BaseConverter baseConverter = new BaseConverter(10, new int[]{5});
|
@@ -63,6 +66,7 @@ public final class BaseConverterTest {
|
|
63
66
|
actualDigits);
|
64
67
|
}
|
65
68
|
|
69
|
+
@Ignore
|
66
70
|
@Test
|
67
71
|
public void testBinaryToMultipleDecimal() {
|
68
72
|
final BaseConverter baseConverter = new BaseConverter(2, new int[]{1, 0, 1, 0, 1, 0});
|
@@ -79,6 +83,7 @@ public final class BaseConverterTest {
|
|
79
83
|
actualDigits);
|
80
84
|
}
|
81
85
|
|
86
|
+
@Ignore
|
82
87
|
@Test
|
83
88
|
public void testDecimalToBinary() {
|
84
89
|
final BaseConverter baseConverter = new BaseConverter(10, new int[]{4, 2});
|
@@ -95,6 +100,7 @@ public final class BaseConverterTest {
|
|
95
100
|
actualDigits);
|
96
101
|
}
|
97
102
|
|
103
|
+
@Ignore
|
98
104
|
@Test
|
99
105
|
public void testTrinaryToHexadecimal() {
|
100
106
|
final BaseConverter baseConverter = new BaseConverter(3, new int[]{1, 1, 2, 0});
|
@@ -111,6 +117,7 @@ public final class BaseConverterTest {
|
|
111
117
|
actualDigits);
|
112
118
|
}
|
113
119
|
|
120
|
+
@Ignore
|
114
121
|
@Test
|
115
122
|
public void testHexadecimalToTrinary() {
|
116
123
|
final BaseConverter baseConverter = new BaseConverter(16, new int[]{2, 10});
|
@@ -127,6 +134,7 @@ public final class BaseConverterTest {
|
|
127
134
|
actualDigits);
|
128
135
|
}
|
129
136
|
|
137
|
+
@Ignore
|
130
138
|
@Test
|
131
139
|
public void test15BitInteger() {
|
132
140
|
final BaseConverter baseConverter = new BaseConverter(97, new int[]{3, 46, 60});
|
@@ -143,6 +151,7 @@ public final class BaseConverterTest {
|
|
143
151
|
actualDigits);
|
144
152
|
}
|
145
153
|
|
154
|
+
@Ignore
|
146
155
|
@Test
|
147
156
|
public void testEmptyDigits() {
|
148
157
|
expectedException.expect(IllegalArgumentException.class);
|
@@ -151,6 +160,7 @@ public final class BaseConverterTest {
|
|
151
160
|
new BaseConverter(2, new int[]{});
|
152
161
|
}
|
153
162
|
|
163
|
+
@Ignore
|
154
164
|
@Test
|
155
165
|
public void testSingleZero() {
|
156
166
|
final BaseConverter baseConverter = new BaseConverter(10, new int[]{0});
|
@@ -167,6 +177,7 @@ public final class BaseConverterTest {
|
|
167
177
|
actualDigits);
|
168
178
|
}
|
169
179
|
|
180
|
+
@Ignore
|
170
181
|
@Test
|
171
182
|
public void testMultipleZeros() {
|
172
183
|
expectedException.expect(IllegalArgumentException.class);
|
@@ -175,6 +186,7 @@ public final class BaseConverterTest {
|
|
175
186
|
new BaseConverter(10, new int[]{0, 0, 0});
|
176
187
|
}
|
177
188
|
|
189
|
+
@Ignore
|
178
190
|
@Test
|
179
191
|
public void testLeadingZeros() {
|
180
192
|
expectedException.expect(IllegalArgumentException.class);
|
@@ -183,6 +195,7 @@ public final class BaseConverterTest {
|
|
183
195
|
new BaseConverter(7, new int[]{0, 6, 0});
|
184
196
|
}
|
185
197
|
|
198
|
+
@Ignore
|
186
199
|
@Test
|
187
200
|
public void testNegativeDigit() {
|
188
201
|
expectedException.expect(IllegalArgumentException.class);
|
@@ -191,6 +204,7 @@ public final class BaseConverterTest {
|
|
191
204
|
new BaseConverter(2, new int[]{1, -1, 1, 0, 1, 0});
|
192
205
|
}
|
193
206
|
|
207
|
+
@Ignore
|
194
208
|
@Test
|
195
209
|
public void testInvalidPositiveDigit() {
|
196
210
|
expectedException.expect(IllegalArgumentException.class);
|
@@ -199,6 +213,7 @@ public final class BaseConverterTest {
|
|
199
213
|
new BaseConverter(2, new int[]{1, 2, 1, 0, 1, 0});
|
200
214
|
}
|
201
215
|
|
216
|
+
@Ignore
|
202
217
|
@Test
|
203
218
|
public void testFirstBaseIsOne() {
|
204
219
|
expectedException.expect(IllegalArgumentException.class);
|
@@ -207,6 +222,7 @@ public final class BaseConverterTest {
|
|
207
222
|
new BaseConverter(1, new int[]{});
|
208
223
|
}
|
209
224
|
|
225
|
+
@Ignore
|
210
226
|
@Test
|
211
227
|
public void testSecondBaseIsOne() {
|
212
228
|
final BaseConverter baseConverter = new BaseConverter(2, new int[]{1, 0, 1, 0, 1, 0});
|
@@ -217,6 +233,7 @@ public final class BaseConverterTest {
|
|
217
233
|
baseConverter.convertToBase(1);
|
218
234
|
}
|
219
235
|
|
236
|
+
@Ignore
|
220
237
|
@Test
|
221
238
|
public void testFirstBaseIsZero() {
|
222
239
|
expectedException.expect(IllegalArgumentException.class);
|
@@ -225,6 +242,7 @@ public final class BaseConverterTest {
|
|
225
242
|
new BaseConverter(0, new int[]{});
|
226
243
|
}
|
227
244
|
|
245
|
+
@Ignore
|
228
246
|
@Test
|
229
247
|
public void testSecondBaseIsZero() {
|
230
248
|
final BaseConverter baseConverter = new BaseConverter(2, new int[]{1, 0, 1, 0, 1, 0});
|
@@ -235,6 +253,7 @@ public final class BaseConverterTest {
|
|
235
253
|
baseConverter.convertToBase(0);
|
236
254
|
}
|
237
255
|
|
256
|
+
@Ignore
|
238
257
|
@Test
|
239
258
|
public void testFirstBaseIsNegative() {
|
240
259
|
expectedException.expect(IllegalArgumentException.class);
|
@@ -243,6 +262,7 @@ public final class BaseConverterTest {
|
|
243
262
|
new BaseConverter(-2, new int[]{});
|
244
263
|
}
|
245
264
|
|
265
|
+
@Ignore
|
246
266
|
@Test
|
247
267
|
public void testSecondBaseIsNegative() {
|
248
268
|
final BaseConverter baseConverter = new BaseConverter(2, new int[]{1});
|
@@ -15,7 +15,6 @@ public final class QueenAttackCalculatorTest {
|
|
15
15
|
@Rule
|
16
16
|
public ExpectedException expectedException = ExpectedException.none();
|
17
17
|
|
18
|
-
@Ignore
|
19
18
|
@Test
|
20
19
|
public void testCoordinateWithNegativeRankNotAllowed() {
|
21
20
|
expectedException.expect(IllegalArgumentException.class);
|
@@ -6,7 +6,7 @@ an exact match.
|
|
6
6
|
The following steps assume that you are in the same directory as the exercise.
|
7
7
|
|
8
8
|
You must have rust installed.
|
9
|
-
Follow the [
|
9
|
+
Follow the [Getting Started chapter in the Rust book](https://doc.rust-lang.org/stable/book/getting-started.html).
|
10
10
|
The [Rust language section](http://exercism.io/languages/rust)
|
11
11
|
section from exercism is also useful.
|
12
12
|
|
data/tracks/scala/config.json
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
scalaVersion := "2.
|
1
|
+
scalaVersion := "2.12.1"
|
2
2
|
|
3
|
-
libraryDependencies += "org.scalatest"
|
3
|
+
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
|
@@ -1,9 +1,17 @@
|
|
1
|
-
import java.
|
1
|
+
import java.time.LocalDate
|
2
|
+
import java.time.LocalDateTime
|
3
|
+
import java.time.LocalTime
|
2
4
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
object Gigasecond {
|
6
|
+
private type Seconds = Long
|
7
|
+
|
8
|
+
def addGigaseconds(startDate: LocalDate): LocalDateTime = {
|
9
|
+
val startDateTime = LocalDateTime.of(startDate, LocalTime.of(0, 0))
|
10
|
+
addGigaseconds(startDateTime)
|
8
11
|
}
|
12
|
+
|
13
|
+
def addGigaseconds(startDateTime: LocalDateTime): LocalDateTime =
|
14
|
+
startDateTime.plusSeconds(OneGigasecond)
|
15
|
+
|
16
|
+
private val OneGigasecond: Seconds = math.pow(10, 9) toLong
|
9
17
|
}
|
@@ -1,55 +1,57 @@
|
|
1
|
-
import
|
2
|
-
import java.
|
1
|
+
import java.time.LocalDate
|
2
|
+
import java.time.LocalDateTime
|
3
|
+
import java.time.format.DateTimeFormatter
|
4
|
+
|
5
|
+
import org.scalatest.FunSuite
|
6
|
+
import org.scalatest.Matchers
|
3
7
|
|
4
8
|
class GigasecondTests extends FunSuite with Matchers {
|
5
|
-
test ("1") {
|
6
|
-
// Note: Months are 0-indexed. 3 = April
|
7
|
-
val cal = new GregorianCalendar(2011, 3, 25)
|
8
|
-
cal.setTimeZone(TimeZone.getTimeZone("GMT"))
|
9
|
-
val gs = Gigasecond(cal)
|
10
|
-
|
11
|
-
val expected = new GregorianCalendar(2043, 0, 1, 1, 46, 40)
|
12
|
-
expected.setTimeZone(TimeZone.getTimeZone("GMT"))
|
13
|
-
gs.date should be (expected)
|
14
|
-
}
|
15
9
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
10
|
+
private def dateTime(str: String): LocalDateTime =
|
11
|
+
LocalDateTime.from(DateTimeFormatter.ISO_DATE_TIME.parse(str))
|
12
|
+
|
13
|
+
private def date(str: String): LocalDate =
|
14
|
+
LocalDate.from(DateTimeFormatter.ISO_DATE.parse(str))
|
15
|
+
|
21
16
|
|
22
|
-
|
23
|
-
|
24
|
-
|
17
|
+
test("modern time") {
|
18
|
+
val input = date("2011-04-25")
|
19
|
+
val expected = dateTime("2043-01-01T01:46:40")
|
20
|
+
Gigasecond.addGigaseconds(input) should be (expected)
|
25
21
|
}
|
26
22
|
|
27
|
-
test
|
23
|
+
test("after epoch time") {
|
28
24
|
pending
|
29
|
-
val
|
30
|
-
|
31
|
-
|
25
|
+
val input = date("1977-06-13")
|
26
|
+
val expected = dateTime("2009-02-19T01:46:40")
|
27
|
+
Gigasecond.addGigaseconds(input) should be (expected)
|
28
|
+
}
|
32
29
|
|
33
|
-
|
34
|
-
|
35
|
-
|
30
|
+
test("before epoch time") {
|
31
|
+
pending
|
32
|
+
val input = date("1959-07-19")
|
33
|
+
val expected = dateTime("1991-03-27T01:46:40")
|
34
|
+
Gigasecond.addGigaseconds(input) should be (expected)
|
36
35
|
}
|
37
36
|
|
38
|
-
test
|
37
|
+
test("full time specified") {
|
39
38
|
pending
|
40
|
-
val
|
41
|
-
|
42
|
-
|
39
|
+
val input = dateTime("2015-01-24T22:00:00")
|
40
|
+
val expected = dateTime("2046-10-02T23:46:40")
|
41
|
+
Gigasecond.addGigaseconds(input) should be (expected)
|
42
|
+
}
|
43
43
|
|
44
|
-
|
45
|
-
|
46
|
-
|
44
|
+
test("full time with day roll-over") {
|
45
|
+
pending
|
46
|
+
val input = dateTime("2015-01-24T23:59:59")
|
47
|
+
val expected = dateTime("2046-10-03T01:46:39")
|
48
|
+
Gigasecond.addGigaseconds(input) should be (expected)
|
47
49
|
}
|
48
50
|
|
49
|
-
test
|
51
|
+
test("your birthday") {
|
50
52
|
pending
|
51
|
-
|
52
|
-
|
53
|
-
|
53
|
+
val yourBirthday = date(???)
|
54
|
+
val expected = dateTime(???)
|
55
|
+
Gigasecond.addGigaseconds(yourBirthday) should be (expected)
|
54
56
|
}
|
55
57
|
}
|
data/tracks/swift/config.json
CHANGED
@@ -0,0 +1,34 @@
|
|
1
|
+
import Foundation
|
2
|
+
|
3
|
+
func flattenArray<T>(_ list: [Any?]) -> [T] {
|
4
|
+
|
5
|
+
var flattenedArray = [T]()
|
6
|
+
|
7
|
+
func extractArrayElements(array: [Any?]) {
|
8
|
+
|
9
|
+
for element in array.flatMap({$0}) {
|
10
|
+
|
11
|
+
let anyObjectArray = element as? [Any?]
|
12
|
+
|
13
|
+
if let unwrappedArray = anyObjectArray {
|
14
|
+
|
15
|
+
extractArrayElements(array: unwrappedArray)
|
16
|
+
|
17
|
+
}
|
18
|
+
|
19
|
+
let value = element as? T
|
20
|
+
|
21
|
+
if let i = value {
|
22
|
+
|
23
|
+
flattenedArray.append(i)
|
24
|
+
}
|
25
|
+
|
26
|
+
}
|
27
|
+
|
28
|
+
}
|
29
|
+
|
30
|
+
extractArrayElements(array: list)
|
31
|
+
|
32
|
+
return flattenedArray
|
33
|
+
|
34
|
+
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
import XCTest
|
2
|
+
|
3
|
+
class FlattenArrayTest: XCTestCase {
|
4
|
+
|
5
|
+
func testFlattenIntegerArray() {
|
6
|
+
|
7
|
+
let result: [Int] = flattenArray([1, [2, 3, 4, 5, 6, 7], 8])
|
8
|
+
XCTAssertEqual([1, 2, 3, 4, 5, 6, 7, 8], result)
|
9
|
+
}
|
10
|
+
|
11
|
+
func testFlattenForFiveLevelDeepNestedList() {
|
12
|
+
|
13
|
+
let result: [Int] = flattenArray([0, 2, [[2, 3], 8, 100, 4, [[[50]]]], -2])
|
14
|
+
XCTAssertEqual([0, 2, 2, 3, 8, 100, 4, 50, -2], result)
|
15
|
+
}
|
16
|
+
|
17
|
+
func testFlattenForSixLevelDeepNestedList() {
|
18
|
+
|
19
|
+
let result: [Int] = flattenArray([1, [2, [[3]], [4, [[5]]], 6, 7], 8])
|
20
|
+
XCTAssertEqual([1, 2, 3, 4, 5, 6, 7, 8], result)
|
21
|
+
}
|
22
|
+
|
23
|
+
func testFlattenForSixLevelDeepNestedListWithNullValues() {
|
24
|
+
|
25
|
+
let nilValue: Any? = nil
|
26
|
+
let result: [Int] = flattenArray([0, 2, [[2, 3], 8, [[100]], nilValue, [[nilValue]]], -2])
|
27
|
+
XCTAssertEqual([0, 2, 2, 3, 8, 100, -2], result)
|
28
|
+
}
|
29
|
+
|
30
|
+
func testFlattenForAllNullDeepNestedList() {
|
31
|
+
|
32
|
+
let nilValue: Any? = nil
|
33
|
+
let result: [Int] = flattenArray([nilValue, [[[nilValue]]], nilValue, nilValue, [[nilValue, nilValue], nilValue], nilValue])
|
34
|
+
XCTAssertEqual([], result)
|
35
|
+
}
|
36
|
+
|
37
|
+
func testFlattenForStringValuesInSixLevelDeepNestedList() {
|
38
|
+
|
39
|
+
let nilValue: Any? = nil
|
40
|
+
let result: [String] = flattenArray(["Zero", "two", [["Two", "three"], "Eight", [["ONE HUNDRED"]], nilValue, [[nilValue]]], "minus two"])
|
41
|
+
XCTAssertEqual(["Zero", "two", "Two", "three", "Eight", "ONE HUNDRED", "minus two"], result)
|
42
|
+
|
43
|
+
}
|
44
|
+
|
45
|
+
func testFlattenForDoubleValuesInFiveLevelDeepNestedList() {
|
46
|
+
|
47
|
+
let nilValue: Any? = nil
|
48
|
+
let result: [Double] = flattenArray([0.74896463547850123, 2.18, [[nilValue, 3.6], nilValue, 100.0, nilValue, [[[50.2]]]], -2.5])
|
49
|
+
XCTAssertEqual([0.74896463547850123, 2.1800000000000002, 3.6000000000000001, 100.0, 50.200000000000003, -2.5], result)
|
50
|
+
|
51
|
+
}
|
52
|
+
}
|
@@ -112,11 +112,14 @@
|
|
112
112
|
1E9A63EE1C506EFD00E28AE1 /* WordyExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E9A63861C506EFC00E28AE1 /* WordyExample.swift */; };
|
113
113
|
1E9A63EF1C506EFD00E28AE1 /* WordyTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E9A63871C506EFC00E28AE1 /* WordyTest.swift */; };
|
114
114
|
1EAF95E11C90C587009DDCB6 /* DominoesTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EAF95E01C90C587009DDCB6 /* DominoesTest.swift */; };
|
115
|
-
|
115
|
+
A0405CB61E07FFE500B6C662 /* FlattenArrayExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0405CB51E07FFE500B6C662 /* FlattenArrayExample.swift */; };
|
116
|
+
A0405CB81E07FFF500B6C662 /* FlattenArrayTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0405CB71E07FFF500B6C662 /* FlattenArrayTest.swift */; };
|
117
|
+
A004DFC31DF8068A00800271 /* BeerSongExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = A004DFC11DF8068A00800271 /* BeerSongExample.swift */; };
|
116
118
|
A004DFC41DF8068A00800271 /* BeerSongTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A004DFC21DF8068A00800271 /* BeerSongTest.swift */; };
|
117
119
|
A0DBCBF81E0000B800E0DFBF /* helloWorldTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0DBCBF71E0000B800E0DFBF /* helloWorldTest.swift */; };
|
118
120
|
A0DBCBFB1E00017E00E0DFBF /* SublistExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0DBCBF91E00017E00E0DFBF /* SublistExample.swift */; };
|
119
121
|
A0DBCBFC1E00017E00E0DFBF /* SubListTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0DBCBFA1E00017E00E0DFBF /* SubListTest.swift */; };
|
122
|
+
|
120
123
|
E908CD461C6AD05F005D081E /* FoodChainExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = E908CD451C6AD05F005D081E /* FoodChainExample.swift */; };
|
121
124
|
E908CD481C6AD076005D081E /* FoodChainTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E908CD471C6AD076005D081E /* FoodChainTest.swift */; };
|
122
125
|
E908CD541C6D7AD1005D081E /* PascalsTriangleExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = E908CD531C6D7AD1005D081E /* PascalsTriangleExample.swift */; };
|
@@ -265,11 +268,15 @@
|
|
265
268
|
1EAF95E01C90C587009DDCB6 /* DominoesTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = DominoesTest.swift; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
|
266
269
|
9D3155D21BA12FB1009A3991 /* xSwiftTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = xSwiftTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
267
270
|
9D3155D51BA12FB1009A3991 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
268
|
-
|
271
|
+
|
272
|
+
A0405CB51E07FFE500B6C662 /* FlattenArrayExample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = FlattenArrayExample.swift; path = "flatten-array/FlattenArrayExample.swift"; sourceTree = "<group>"; };
|
273
|
+
A0405CB71E07FFF500B6C662 /* FlattenArrayTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = FlattenArrayTest.swift; path = "flatten-array/FlattenArrayTest.swift"; sourceTree = "<group>"; };
|
274
|
+
A004DFC11DF8068A00800271 /* BeerSongExample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BeerSongExample.swift; path = "beer-song/BeerSongExample.swift"; sourceTree = "<group>"; };
|
269
275
|
A004DFC21DF8068A00800271 /* BeerSongTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BeerSongTest.swift; path = "beer-song/BeerSongTest.swift"; sourceTree = "<group>"; };
|
270
276
|
A0DBCBF71E0000B800E0DFBF /* helloWorldTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = helloWorldTest.swift; sourceTree = "<group>"; };
|
271
277
|
A0DBCBF91E00017E00E0DFBF /* SublistExample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SublistExample.swift; path = "sublist/SublistExample.swift"; sourceTree = "<group>"; };
|
272
278
|
A0DBCBFA1E00017E00E0DFBF /* SubListTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SubListTest.swift; path = "sublist/SubListTest.swift"; sourceTree = "<group>"; };
|
279
|
+
|
273
280
|
E908CD451C6AD05F005D081E /* FoodChainExample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = FoodChainExample.swift; path = "food-chain/FoodChainExample.swift"; sourceTree = "<group>"; };
|
274
281
|
E908CD471C6AD076005D081E /* FoodChainTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; name = FoodChainTest.swift; path = "food-chain/FoodChainTest.swift"; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
|
275
282
|
E908CD531C6D7AD1005D081E /* PascalsTriangleExample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PascalsTriangleExample.swift; path = "pascals-triangle/PascalsTriangleExample.swift"; sourceTree = "<group>"; };
|
@@ -352,6 +359,7 @@
|
|
352
359
|
1E9A63071C506EFC00E28AE1 /* difference-of-squares */,
|
353
360
|
1EAF95DF1C90C587009DDCB6 /* dominoes */,
|
354
361
|
1E9A630A1C506EFC00E28AE1 /* etl */,
|
362
|
+
A0405CB41E07FF0C00B6C662 /* flatten-array */,
|
355
363
|
E908CD431C6AD03C005D081E /* food-chain */,
|
356
364
|
1E9A630D1C506EFC00E28AE1 /* gigasecond */,
|
357
365
|
1E9A63101C506EFC00E28AE1 /* grade-school */,
|
@@ -914,6 +922,17 @@
|
|
914
922
|
name = "Supporting Files";
|
915
923
|
sourceTree = "<group>";
|
916
924
|
};
|
925
|
+
|
926
|
+
A0405CB41E07FF0C00B6C662 /* flatten-array */ = {
|
927
|
+
isa = PBXGroup;
|
928
|
+
children = (
|
929
|
+
A0405CB51E07FFE500B6C662 /* FlattenArrayExample.swift */,
|
930
|
+
A0405CB71E07FFF500B6C662 /* FlattenArrayTest.swift */,
|
931
|
+
);
|
932
|
+
name = "flatten-array";
|
933
|
+
sourceTree = "<group>";
|
934
|
+
|
935
|
+
};
|
917
936
|
A016F7A31DF0418D005640FF /* beer-song */ = {
|
918
937
|
isa = PBXGroup;
|
919
938
|
children = (
|
@@ -930,6 +949,7 @@
|
|
930
949
|
A0DBCBFA1E00017E00E0DFBF /* SubListTest.swift */,
|
931
950
|
);
|
932
951
|
name = "sublist";
|
952
|
+
|
933
953
|
sourceTree = "<group>";
|
934
954
|
};
|
935
955
|
E908CD431C6AD03C005D081E /* food-chain */ = {
|
@@ -1257,6 +1277,7 @@
|
|
1257
1277
|
1E9A63A91C506EFD00E28AE1 /* helloWorldExample.swift in Sources */,
|
1258
1278
|
E9AFA1871C624FD5006AD72D /* MinesweeperTest.swift in Sources */,
|
1259
1279
|
1E9A63A51C506EFD00E28AE1 /* GrainsTest.swift in Sources */,
|
1280
|
+
A0405CB81E07FFF500B6C662 /* FlattenArrayTest.swift in Sources */,
|
1260
1281
|
1E167A121C8AA5D7001EAD90 /* PokerTest.swift in Sources */,
|
1261
1282
|
1E9A63E11C506EFD00E28AE1 /* StrainTest.swift in Sources */,
|
1262
1283
|
1E9A63B71C506EFD00E28AE1 /* NthPrimeTest.swift in Sources */,
|
@@ -1270,7 +1291,10 @@
|
|
1270
1291
|
E9AFA1531C5945C9006AD72D /* HexadecimalTest.swift in Sources */,
|
1271
1292
|
1E9A63AF1C506EFD00E28AE1 /* LeapTest.swift in Sources */,
|
1272
1293
|
1E9A63901C506EFD00E28AE1 /* AtbashExample.swift in Sources */,
|
1294
|
+
|
1295
|
+
A0405CB61E07FFE500B6C662 /* FlattenArrayExample.swift in Sources */,
|
1273
1296
|
A0DBCBFB1E00017E00E0DFBF /* SublistExample.swift in Sources */,
|
1297
|
+
|
1274
1298
|
1E9A63C61C506EFD00E28AE1 /* QueenAttackExample.swift in Sources */,
|
1275
1299
|
E90DE39E1D3E818000F3B881 /* AllYourBaseTest.swift in Sources */,
|
1276
1300
|
E908CD481C6AD076005D081E /* FoodChainTest.swift in Sources */,
|
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.0.6.
|
4
|
+
version: 2.0.6.3
|
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-01-
|
11
|
+
date: 2017-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyzip
|
@@ -6987,6 +6987,8 @@ files:
|
|
6987
6987
|
- tracks/swift/exercises/dominoes/DominoesTest.swift
|
6988
6988
|
- tracks/swift/exercises/etl/EtlExample.swift
|
6989
6989
|
- tracks/swift/exercises/etl/EtlTest.swift
|
6990
|
+
- tracks/swift/exercises/flatten-array/FlattenArrayExample.swift
|
6991
|
+
- tracks/swift/exercises/flatten-array/FlattenArrayTest.swift
|
6990
6992
|
- tracks/swift/exercises/food-chain/FoodChainExample.swift
|
6991
6993
|
- tracks/swift/exercises/food-chain/FoodChainTest.swift
|
6992
6994
|
- tracks/swift/exercises/gigasecond/GigasecondExample.swift
|