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
         
     |