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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b4e158fdc06604fcbf8f1d27f05a396e4261aaf1
4
- data.tar.gz: 9f340d289a11e75954cff74b6443048991f45def
3
+ metadata.gz: cb456c079419313a6ce0e9bd9442ced587c8f3a9
4
+ data.tar.gz: b5cab80a086b12263490be5017b91406891ae13a
5
5
  SHA512:
6
- metadata.gz: 5f72f08277f2e36d640b7e99a9a527e11b48ff5160457a57590e7c48beed426b75b4191faf5286bf97880a39bf5fea9c49ad6716202c804617551b30c4d6190d
7
- data.tar.gz: 908336cbfd218c1e95f05f6a2c16c1f9e158a05b43bac7df5d1e1af15a196ec9341597fad8a61cbf0760f240082b350fedd0d04b06a90660fafe99ba1fd864a9
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": "with_quotations",
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
  }
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.0.6.2"
2
+ VERSION = "2.0.6.3"
3
3
  end
@@ -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
- "with_quotations",
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 [Installing Rust chapter in the Rust book](http://doc.rust-lang.org/stable/book/installing-rust.html).
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
 
@@ -113,6 +113,9 @@
113
113
  "slug": "gigasecond",
114
114
  "difficulty": 1,
115
115
  "topics": [
116
+ "Dates",
117
+ "Time",
118
+ "Function Overloading"
116
119
  ]
117
120
  },
118
121
  {
@@ -1,3 +1,2 @@
1
1
  ## Hints
2
- Note that `GregorianCalendar` is a mutable object.
3
- You should not change this mutable object to avoid any side effects!
2
+ Note that `addGigaseconds` accepts two different types of input.
@@ -1,3 +1,3 @@
1
- scalaVersion := "2.11.7"
1
+ scalaVersion := "2.12.1"
2
2
 
3
- libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.5" % "test"
3
+ libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
@@ -1,9 +1,17 @@
1
- import java.util.{Calendar, GregorianCalendar}
1
+ import java.time.LocalDate
2
+ import java.time.LocalDateTime
3
+ import java.time.LocalTime
2
4
 
3
- case class Gigasecond(initial: Calendar) {
4
- val date = {
5
- val copy = initial.clone.asInstanceOf[Calendar]
6
- copy.add(Calendar.SECOND, 1000000000)
7
- copy
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 org.scalatest._
2
- import java.util.{TimeZone, GregorianCalendar}
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
- test ("2") {
17
- pending
18
- val cal = new GregorianCalendar(1977, 5, 13)
19
- cal.setTimeZone(TimeZone.getTimeZone("GMT"))
20
- val gs = Gigasecond(cal)
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
- val expected = new GregorianCalendar(2009, 1, 19, 1, 46, 40)
23
- expected.setTimeZone(TimeZone.getTimeZone("GMT"))
24
- gs.date should be (expected)
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 ("3") {
23
+ test("after epoch time") {
28
24
  pending
29
- val cal = new GregorianCalendar(1959, 6, 19)
30
- cal.setTimeZone(TimeZone.getTimeZone("GMT"))
31
- val gs = Gigasecond(cal)
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
- val expected = new GregorianCalendar(1991, 2, 27, 1, 46, 40)
34
- expected.setTimeZone(TimeZone.getTimeZone("GMT"))
35
- gs.date should be (expected)
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 ("4") {
37
+ test("full time specified") {
39
38
  pending
40
- val cal = new GregorianCalendar(2015, 0, 24, 23, 59, 59)
41
- cal.setTimeZone(TimeZone.getTimeZone("GMT"))
42
- val gs = Gigasecond(cal)
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
- val expected = new GregorianCalendar(2046, 9, 3, 1, 46, 39)
45
- expected.setTimeZone(TimeZone.getTimeZone("GMT"))
46
- gs.date should be (expected)
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 ("yourself") {
51
+ test("your birthday") {
50
52
  pending
51
- // val yourBirthday = new GregorianCalendar(year, month-1, day)
52
- // val gs = Gigasecond(yourBirthday)
53
- // gs.date should be (new GregorianCalendar(2009, 0, 31, 0, 46, 40))
53
+ val yourBirthday = date(???)
54
+ val expected = dateTime(???)
55
+ Gigasecond.addGigaseconds(yourBirthday) should be (expected)
54
56
  }
55
57
  }
@@ -222,6 +222,16 @@
222
222
  "Lists"
223
223
  ]
224
224
  },
225
+ {
226
+ "difficulty": 3,
227
+ "slug": "flatten-array",
228
+ "topics": [
229
+ "Searching",
230
+ "Looping",
231
+ "Lists"
232
+ ]
233
+ },
234
+
225
235
  {
226
236
  "difficulty": 3,
227
237
  "slug": "sublist",
@@ -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
- A004DFC31DF8068A00800271 /* BeerSongExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = A004DFC11DF8068A00800271 /* BeerSongExample.swift */; };
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
- A004DFC11DF8068A00800271 /* BeerSongExample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BeerSongExample.swift; path = "beer-song/BeerSongExample.swift"; sourceTree = "<group>"; };
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.2
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-04 00:00:00.000000000 Z
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