trackler 2.0.6.2 → 2.0.6.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|