trackler 2.0.5.11 → 2.0.5.12

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.
Files changed (25) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/java/exercises/atbash-cipher/src/test/java/AtbashTest.java +7 -7
  4. data/tracks/java/exercises/binary/src/test/java/BinaryTest.java +8 -8
  5. data/tracks/java/exercises/octal/src/test/java/OctalTest.java +8 -8
  6. data/tracks/java/exercises/pig-latin/src/test/java/PigLatinTest.java +7 -7
  7. data/tracks/java/exercises/raindrops/src/test/java/RaindropsTest.java +7 -7
  8. data/tracks/java/exercises/roman-numerals/src/test/java/RomanNumeralsTest.java +8 -8
  9. data/tracks/java/exercises/scrabble-score/src/test/java/ScrabbleScoreTest.java +8 -8
  10. data/tracks/objective-c/config.json +9 -0
  11. data/tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.h +7 -0
  12. data/tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m +61 -0
  13. data/tracks/objective-c/exercises/atbash-cipher/AtbashCipherTest.m +49 -0
  14. data/tracks/objective-c/xcodeProject/ObjectiveC.xcodeproj/project.pbxproj +18 -0
  15. data/tracks/scala/config.json +13 -0
  16. data/tracks/scala/exercises/acronym/build.sbt +2 -2
  17. data/tracks/scala/exercises/acronym/src/main/scala/Acronym.scala +3 -0
  18. data/tracks/scala/exercises/lens-person/build.sbt +6 -5
  19. data/tracks/scala/exercises/parallel-letter-frequency/build.sbt +2 -2
  20. data/tracks/scala/exercises/parallel-letter-frequency/src/main/scala/Frequency.scala +3 -0
  21. data/tracks/scala/exercises/sgf-parsing/build.sbt +2 -3
  22. data/tracks/scala/exercises/zipper/build.sbt +2 -2
  23. metadata +7 -4
  24. data/tracks/scala/exercises/acronym/src/main/scala/.keep +0 -0
  25. data/tracks/scala/exercises/parallel-letter-frequency/src/main/scala/.keep +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 24c87cd227b60be2c6fe6068ba7d3a7e4e108409
4
- data.tar.gz: 44a9d217a705bf96e7e538232dcb5c5bc4046178
3
+ metadata.gz: a74ea7b78858cd111f71b62b3e7f1aadf7a294c4
4
+ data.tar.gz: d5468a4b337811562139e31591574804cb6823fb
5
5
  SHA512:
6
- metadata.gz: df6e78d8d5d686303a37dd2be025a224c2ab7e84f6a0680b3f909afeb4295e146b473ad449196abe6ea716d771fd8470bafba64b25f6e976e06d6b3cd54bca7a
7
- data.tar.gz: eb131c2de49d313197e12f0ceb6aefb6ac067a2115b22c1996cd7e5e2576039174225e030b3882dc7194e1921752f6de234fb5cc4d1f2045a56541bd798e5699
6
+ metadata.gz: c2b420709ed64865854ee540e23a723fba890d35055e79cb0bb27809106a2e9bc97ba3c423d54517df9bde477a4bd2260f5e1fbf351e7e855c8037c4cb881954
7
+ data.tar.gz: e6afa21c6df59af4374d17fc5e0e3ce75f0b7d04e77ab1a672d4239cedad26af92a8bb7f56334fe9144e3fbbbc2d20d59343ecbe0b51537e1567569f2c1da5d4
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.0.5.11"
2
+ VERSION = "2.0.5.12"
3
3
  end
@@ -15,10 +15,10 @@ public class AtbashTest {
15
15
 
16
16
  @RunWith(Parameterized.class)
17
17
  public static class EncodeTest {
18
- private String input;
19
- private String expectedOutput;
18
+ private String plaintext;
19
+ private String ciphertext;
20
20
 
21
- @Parameters
21
+ @Parameters(name = "{index}: expected plaintext \"{0}\" to encode to ciphertext \"{1}\".")
22
22
  public static Collection<Object[]> data() {
23
23
  return Arrays.asList(new Object[][] {
24
24
  { "no", "ml" },
@@ -31,15 +31,15 @@ public class AtbashTest {
31
31
  });
32
32
  }
33
33
 
34
- public EncodeTest(String input, String expectedOutput) {
35
- this.input = input;
36
- this.expectedOutput = expectedOutput;
34
+ public EncodeTest(String plaintext, String ciphertext) {
35
+ this.plaintext = plaintext;
36
+ this.ciphertext = ciphertext;
37
37
  }
38
38
 
39
39
 
40
40
  @Test
41
41
  public void test() {
42
- assertEquals(expectedOutput, Atbash.encode(input));
42
+ assertEquals(ciphertext, Atbash.encode(plaintext));
43
43
  }
44
44
  }
45
45
 
@@ -12,10 +12,10 @@ import static org.junit.Assert.assertEquals;
12
12
  @RunWith(Parameterized.class)
13
13
  public class BinaryTest {
14
14
 
15
- private String input;
16
- private int expectedOutput;
15
+ private String binaryNumberAsString;
16
+ private int decimalNumber;
17
17
 
18
- @Parameters
18
+ @Parameters(name = "{index}: expected {1} when converting \"{0}\" from binary to decimal.")
19
19
  public static Collection<Object[]> data() {
20
20
  return Arrays.asList(new Object[][]{
21
21
  {"1", 1},
@@ -34,16 +34,16 @@ public class BinaryTest {
34
34
  });
35
35
  }
36
36
 
37
- public BinaryTest(String input, int expectedOutput) {
38
- this.input = input;
39
- this.expectedOutput = expectedOutput;
37
+ public BinaryTest(String binaryNumberAsString, int decimalNumber) {
38
+ this.binaryNumberAsString = binaryNumberAsString;
39
+ this.decimalNumber = decimalNumber;
40
40
  }
41
41
 
42
42
 
43
43
  @Test
44
44
  public void test() {
45
- Binary binary = new Binary(input);
45
+ Binary binary = new Binary(binaryNumberAsString);
46
46
 
47
- assertEquals(expectedOutput, binary.getDecimal());
47
+ assertEquals(decimalNumber, binary.getDecimal());
48
48
  }
49
49
  }
@@ -11,10 +11,10 @@ import static org.junit.Assert.assertEquals;
11
11
  @RunWith(Parameterized.class)
12
12
  public class OctalTest {
13
13
 
14
- private String input;
15
- private int expectedOutput;
14
+ private String octalNumberAsString;
15
+ private int decimalNumber;
16
16
 
17
- @Parameterized.Parameters
17
+ @Parameterized.Parameters(name = "{index}: expected {1} when converting \"{0}\" from octal to decimal.")
18
18
  public static Collection<Object[]> data() {
19
19
  return Arrays.asList(new Object[][]{
20
20
  {"1", 1},
@@ -34,16 +34,16 @@ public class OctalTest {
34
34
  });
35
35
  }
36
36
 
37
- public OctalTest(String input, int expectedOutput) {
38
- this.input = input;
39
- this.expectedOutput = expectedOutput;
37
+ public OctalTest(String octalNumberAsString, int decimalNumber) {
38
+ this.octalNumberAsString = octalNumberAsString;
39
+ this.decimalNumber = decimalNumber;
40
40
  }
41
41
 
42
42
 
43
43
  @Test
44
44
  public void test() {
45
- Octal octal = new Octal(input);
45
+ Octal octal = new Octal(octalNumberAsString);
46
46
 
47
- assertEquals(expectedOutput, octal.getDecimal());
47
+ assertEquals(decimalNumber, octal.getDecimal());
48
48
  }
49
49
  }
@@ -11,10 +11,10 @@ import static org.junit.Assert.assertEquals;
11
11
  @RunWith(Parameterized.class)
12
12
  public class PigLatinTest {
13
13
 
14
- private String input;
15
- private String expectedOutput;
14
+ private String englishPhrase;
15
+ private String pigLatinTranslation;
16
16
 
17
- @Parameterized.Parameters
17
+ @Parameterized.Parameters(name = "{index}: expected \"{0}\" to translate to the pig latin phrase \"{1}\"")
18
18
  public static Collection<Object[]> data() {
19
19
  return Arrays.asList(new Object[][]{
20
20
  // Ay is added to words that start with vowels
@@ -59,14 +59,14 @@ public class PigLatinTest {
59
59
  });
60
60
  }
61
61
 
62
- public PigLatinTest(String input, String expectedOutput) {
63
- this.input = input;
64
- this.expectedOutput = expectedOutput;
62
+ public PigLatinTest(String englishPhrase, String pigLatinTranslation) {
63
+ this.englishPhrase = englishPhrase;
64
+ this.pigLatinTranslation = pigLatinTranslation;
65
65
  }
66
66
 
67
67
 
68
68
  @Test
69
69
  public void test() {
70
- assertEquals(expectedOutput, PigLatin.translate(input));
70
+ assertEquals(pigLatinTranslation, PigLatin.translate(englishPhrase));
71
71
  }
72
72
  }
@@ -12,10 +12,10 @@ import static org.junit.Assert.assertEquals;
12
12
  @RunWith(Parameterized.class)
13
13
  public class RaindropsTest {
14
14
 
15
- private int input;
16
- private String expectedOutput;
15
+ private int inputNumber;
16
+ private String outputFromRaindropConversion;
17
17
 
18
- @Parameters
18
+ @Parameters(name = "{index}: expected input number {0} to be converted to \"{1}\"")
19
19
  public static Collection<Object[]> data() {
20
20
  return Arrays.asList(new Object[][]{
21
21
  // Non-primes
@@ -46,14 +46,14 @@ public class RaindropsTest {
46
46
  });
47
47
  }
48
48
 
49
- public RaindropsTest(int input, String expectedOutput) {
50
- this.input = input;
51
- this.expectedOutput = expectedOutput;
49
+ public RaindropsTest(int inputNumber, String outputFromRaindropConversion) {
50
+ this.inputNumber = inputNumber;
51
+ this.outputFromRaindropConversion = outputFromRaindropConversion;
52
52
  }
53
53
 
54
54
 
55
55
  @Test
56
56
  public void test() {
57
- assertEquals(expectedOutput, Raindrops.convert(input));
57
+ assertEquals(outputFromRaindropConversion, Raindrops.convert(inputNumber));
58
58
  }
59
59
  }
@@ -12,10 +12,10 @@ import static org.junit.Assert.assertEquals;
12
12
  @RunWith(Parameterized.class)
13
13
  public class RomanNumeralsTest {
14
14
 
15
- private int input;
16
- private String expectedOutput;
15
+ private int arabicNumeral;
16
+ private String romanNumeral;
17
17
 
18
- @Parameters
18
+ @Parameters(name = "{index}: expected arabic numeral {0} to be converted to roman numeral \"{1}\".")
19
19
  public static Collection<Object[]> data() {
20
20
  return Arrays.asList(new Object[][]{
21
21
  {0, ""},
@@ -40,16 +40,16 @@ public class RomanNumeralsTest {
40
40
  });
41
41
  }
42
42
 
43
- public RomanNumeralsTest(int input, String expectedOutput) {
44
- this.input = input;
45
- this.expectedOutput = expectedOutput;
43
+ public RomanNumeralsTest(int arabicNumeral, String romanNumeral) {
44
+ this.arabicNumeral = arabicNumeral;
45
+ this.romanNumeral = romanNumeral;
46
46
  }
47
47
 
48
48
 
49
49
  @Test
50
50
  public void convertArabicNumberalToRomanNumeral() {
51
- RomanNumeral romanNumeral = new RomanNumeral(input);
51
+ RomanNumeral romanNumeral = new RomanNumeral(arabicNumeral);
52
52
 
53
- assertEquals(expectedOutput, romanNumeral.getRomanNumeral());
53
+ assertEquals(this.romanNumeral, romanNumeral.getRomanNumeral());
54
54
  }
55
55
  }
@@ -11,10 +11,10 @@ import static org.junit.Assert.assertEquals;
11
11
  @RunWith(Parameterized.class)
12
12
  public class ScrabbleScoreTest {
13
13
 
14
- private String input;
15
- private int expectedOutput;
14
+ private String scrabbleInput;
15
+ private int scrabbleScore;
16
16
 
17
- @Parameterized.Parameters
17
+ @Parameterized.Parameters(name = "{index}: expected scrabble score for \"{0}\" to be {1}")
18
18
  public static Collection<Object[]> data() {
19
19
  return Arrays.asList(new Object[][]{
20
20
  {"", 0},
@@ -29,16 +29,16 @@ public class ScrabbleScoreTest {
29
29
  });
30
30
  }
31
31
 
32
- public ScrabbleScoreTest(String input, int expectedOutput) {
33
- this.input = input;
34
- this.expectedOutput = expectedOutput;
32
+ public ScrabbleScoreTest(String scrabbleInput, int scrabbleScore) {
33
+ this.scrabbleInput = scrabbleInput;
34
+ this.scrabbleScore = scrabbleScore;
35
35
  }
36
36
 
37
37
 
38
38
  @Test
39
39
  public void test() {
40
- Scrabble scrabble = new Scrabble(input);
40
+ Scrabble scrabble = new Scrabble(scrabbleInput);
41
41
 
42
- assertEquals(expectedOutput, scrabble.getScore());
42
+ assertEquals(scrabbleScore, scrabble.getScore());
43
43
  }
44
44
  }
@@ -160,6 +160,15 @@
160
160
  "Lists"
161
161
  ]
162
162
  },
163
+ {
164
+ "difficulty": 3,
165
+ "slug": "atbash-cipher",
166
+ "topics": [
167
+ "Strings",
168
+ "Maps",
169
+ "Transforming"
170
+ ]
171
+ },
163
172
  {
164
173
  "difficulty": 4,
165
174
  "slug": "word-count",
@@ -0,0 +1,7 @@
1
+ #import <Foundation/Foundation.h>
2
+
3
+ @interface AtbashCipher : NSObject
4
+
5
+ + (NSString *)encode:(NSString *)input;
6
+
7
+ @end
@@ -0,0 +1,61 @@
1
+ #import "AtbashCipherExample.h"
2
+
3
+ static NSDictionary<NSString *, NSString *> *cipherDictionary;
4
+
5
+ @implementation AtbashCipher
6
+
7
+ + (void)initialize {
8
+ if (self == [AtbashCipher class]) {
9
+ cipherDictionary = [self createCipherDictionary];
10
+ }
11
+ }
12
+
13
+ + (NSDictionary<NSString *, NSString *> *)createCipherDictionary {
14
+ NSArray<NSString *> *alphabet = @[@"a", @"b", @"c", @"d", @"e", @"f", @"g", @"h", @"i", @"j", @"k", @"l", @"m", @"n", @"o", @"p", @"q", @"r", @"s", @"t", @"u", @"v", @"w", @"x", @"y", @"z"];
15
+ NSMutableDictionary<NSString *, NSString *> *cipherDict = [[NSMutableDictionary alloc] initWithCapacity:26];
16
+
17
+ NSUInteger count = alphabet.count;
18
+
19
+ for (int i = 0; i < count; i++) {
20
+ NSString *key = alphabet[i];
21
+ NSString *value = alphabet[count - i - 1];
22
+
23
+ cipherDict[key] = value;
24
+ }
25
+
26
+ return cipherDict;
27
+ }
28
+
29
+ + (NSString *)encode:(NSString *)input {
30
+ input = [input lowercaseString];
31
+
32
+ NSCharacterSet *characterSet = [NSCharacterSet alphanumericCharacterSet];
33
+ NSMutableString *result = [[NSMutableString alloc] init];
34
+ int count = 0;
35
+
36
+ for (int i = 0; i < input.length; i++) {
37
+ unichar character = [input characterAtIndex:i];
38
+ if (![characterSet characterIsMember:character]) {
39
+ continue;
40
+ }
41
+
42
+ if (count % 5 == 0 && count > 0) {
43
+ [result appendString:@" "];
44
+ }
45
+
46
+ NSString *string = [NSString stringWithFormat:@"%C", character];
47
+ NSString *resultLetter = cipherDictionary[string];
48
+
49
+ if (resultLetter) {
50
+ [result appendString:resultLetter];
51
+ } else {
52
+ [result appendString:string];
53
+ }
54
+
55
+ count++;
56
+ }
57
+
58
+ return result;
59
+ }
60
+
61
+ @end
@@ -0,0 +1,49 @@
1
+ #import <XCTest/XCTest.h>
2
+
3
+ #if __has_include("AtbashCipherExample.h")
4
+ # import "AtbashCipherExample.h"
5
+ # else
6
+ # import "AtbashCipher.h"
7
+ #endif
8
+
9
+ @interface AtbashCipherTest : XCTestCase
10
+
11
+ @end
12
+
13
+ @implementation AtbashCipherTest
14
+
15
+ - (void)testEncodeNo {
16
+ XCTAssertEqualObjects(@"ml", [AtbashCipher encode:@"no"]);
17
+ }
18
+
19
+ - (void)testEncodeYes {
20
+ XCTAssertEqualObjects(@"bvh", [AtbashCipher encode:@"yes"]);
21
+ }
22
+
23
+ - (void)testEncodeOMG {
24
+ XCTAssertEqualObjects(@"lnt", [AtbashCipher encode:@"OMG"]);
25
+ }
26
+
27
+ - (void)testEncodeOMGWithSpaces {
28
+ XCTAssertEqualObjects(@"lnt", [AtbashCipher encode:@"O M G"]);
29
+ }
30
+
31
+ - (void)testEncodeLongWord {
32
+ XCTAssertEqualObjects(@"nrmwy oldrm tob", [AtbashCipher encode:@"mindblowingly"]);
33
+ }
34
+
35
+ - (void)testEncodeNumbers {
36
+ XCTAssertEqualObjects(@"gvhgr mt123 gvhgr mt", [AtbashCipher encode:@"Testing, 1 2 3, testing."]);
37
+ }
38
+
39
+ - (void)testEncodeSentence {
40
+ XCTAssertEqualObjects(@"gifgs rhurx grlm", [AtbashCipher encode:@"Truth is fiction."]);
41
+ }
42
+
43
+ - (void)testEncodeAllTheThings {
44
+ NSString *plaintext = @"The quick brown fox jumps over the lazy dog.";
45
+ NSString *cipher = @"gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt";
46
+ XCTAssertEqualObjects(cipher, [AtbashCipher encode:plaintext]);
47
+ }
48
+
49
+ @end
@@ -59,6 +59,8 @@
59
59
  E9381D4E1D8F2982003F22A1 /* RaindropsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = E9381D4D1D8F2982003F22A1 /* RaindropsTest.m */; };
60
60
  E9381D521D8F2DCC003F22A1 /* ClockExample.m in Sources */ = {isa = PBXBuildFile; fileRef = E9381D511D8F2DCC003F22A1 /* ClockExample.m */; };
61
61
  E9381D541D8F2DE1003F22A1 /* ClockTest.m in Sources */ = {isa = PBXBuildFile; fileRef = E9381D531D8F2DE1003F22A1 /* ClockTest.m */; };
62
+ E9386EEE1E0B692D0009A414 /* AtbashCipherExample.m in Sources */ = {isa = PBXBuildFile; fileRef = E9386EED1E0B692D0009A414 /* AtbashCipherExample.m */; };
63
+ E9386EF01E0B694D0009A414 /* AtbashCipherTest.m in Sources */ = {isa = PBXBuildFile; fileRef = E9386EEF1E0B694D0009A414 /* AtbashCipherTest.m */; };
62
64
  E947A4DE1D81FE0F00633720 /* TriangleExample.m in Sources */ = {isa = PBXBuildFile; fileRef = E947A4DD1D81FE0F00633720 /* TriangleExample.m */; };
63
65
  E947A4E01D81FE3A00633720 /* TriangleTest.m in Sources */ = {isa = PBXBuildFile; fileRef = E947A4DF1D81FE3A00633720 /* TriangleTest.m */; };
64
66
  E94ACA131D41760300D56CC2 /* AllYourBaseExample.m in Sources */ = {isa = PBXBuildFile; fileRef = E94ACA121D41760300D56CC2 /* AllYourBaseExample.m */; };
@@ -145,6 +147,9 @@
145
147
  E9381D501D8F2DCC003F22A1 /* ClockExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClockExample.h; path = ../../exercises/clock/ClockExample.h; sourceTree = "<group>"; };
146
148
  E9381D511D8F2DCC003F22A1 /* ClockExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ClockExample.m; path = ../../exercises/clock/ClockExample.m; sourceTree = "<group>"; };
147
149
  E9381D531D8F2DE1003F22A1 /* ClockTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ClockTest.m; path = ../../exercises/clock/ClockTest.m; sourceTree = "<group>"; };
150
+ E9386EEC1E0B692D0009A414 /* AtbashCipherExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AtbashCipherExample.h; path = "../../exercises/atbash-cipher/AtbashCipherExample.h"; sourceTree = "<group>"; };
151
+ E9386EED1E0B692D0009A414 /* AtbashCipherExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AtbashCipherExample.m; path = "../../exercises/atbash-cipher/AtbashCipherExample.m"; sourceTree = "<group>"; };
152
+ E9386EEF1E0B694D0009A414 /* AtbashCipherTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AtbashCipherTest.m; path = "../../exercises/atbash-cipher/AtbashCipherTest.m"; sourceTree = "<group>"; };
148
153
  E947A4DC1D81FE0F00633720 /* TriangleExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TriangleExample.h; path = ../../exercises/triangle/TriangleExample.h; sourceTree = "<group>"; };
149
154
  E947A4DD1D81FE0F00633720 /* TriangleExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TriangleExample.m; path = ../../exercises/triangle/TriangleExample.m; sourceTree = "<group>"; };
150
155
  E947A4DF1D81FE3A00633720 /* TriangleTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TriangleTest.m; path = ../../exercises/triangle/TriangleTest.m; sourceTree = "<group>"; };
@@ -201,6 +206,7 @@
201
206
  E9E8B6E91D519DDB0012F12C /* Allergies */,
202
207
  E9E8B6EA1D519DE10012F12C /* AllYourBase */,
203
208
  E9E8B6EB1D519DE70012F12C /* Anagram */,
209
+ E9386EEB1E0B68F90009A414 /* AtbashCipher */,
204
210
  E9E8B6EC1D519DEF0012F12C /* Bob */,
205
211
  E9381D4F1D8F2DA4003F22A1 /* Clock */,
206
212
  E9381D431D8EDFB8003F22A1 /* DifferenceOfSquares */,
@@ -309,6 +315,16 @@
309
315
  name = Clock;
310
316
  sourceTree = "<group>";
311
317
  };
318
+ E9386EEB1E0B68F90009A414 /* AtbashCipher */ = {
319
+ isa = PBXGroup;
320
+ children = (
321
+ E9386EEC1E0B692D0009A414 /* AtbashCipherExample.h */,
322
+ E9386EED1E0B692D0009A414 /* AtbashCipherExample.m */,
323
+ E9386EEF1E0B694D0009A414 /* AtbashCipherTest.m */,
324
+ );
325
+ name = AtbashCipher;
326
+ sourceTree = "<group>";
327
+ };
312
328
  E947A4DB1D81FDDA00633720 /* Triangle */ = {
313
329
  isa = PBXGroup;
314
330
  children = (
@@ -699,10 +715,12 @@
699
715
  1EFACAB81CCCAF3D006F2E69 /* RobotNameTest.m in Sources */,
700
716
  E947A4DE1D81FE0F00633720 /* TriangleExample.m in Sources */,
701
717
  1EFACAAC1CCCAF3D006F2E69 /* HammingTest.m in Sources */,
718
+ E9386EEE1E0B692D0009A414 /* AtbashCipherExample.m in Sources */,
702
719
  1EFACAA61CCCAF3D006F2E69 /* BobTest.m in Sources */,
703
720
  E9B345FA1DB93839006EFBE2 /* PangramTest.m in Sources */,
704
721
  E9A7B2F91DA5AC55009056B6 /* LargestSeriesProductTest.m in Sources */,
705
722
  1EFACAAF1CCCAF3D006F2E69 /* LeapExample.m in Sources */,
723
+ E9386EF01E0B694D0009A414 /* AtbashCipherTest.m in Sources */,
706
724
  E9C1C0251D9D99620015E86E /* SecretHandshakeTest.m in Sources */,
707
725
  E969939A1DF60E5F009EA223 /* TransposeTest.m in Sources */,
708
726
  E99D1D831D5533D80006A303 /* SumOfMultiplesTest.m in Sources */,
@@ -412,24 +412,37 @@
412
412
  "slug": "parallel-letter-frequency",
413
413
  "difficulty": 1,
414
414
  "topics": [
415
+ "Maps",
416
+ "Sequences",
417
+ "Strings",
418
+ "Parallellism",
419
+ "Transforming",
420
+ "Dictionaries"
415
421
  ]
416
422
  },
417
423
  {
418
424
  "slug": "sgf-parsing",
419
425
  "difficulty": 1,
420
426
  "topics": [
427
+ "Parsing",
428
+ "Transforming"
421
429
  ]
422
430
  },
423
431
  {
424
432
  "slug": "acronym",
425
433
  "difficulty": 1,
426
434
  "topics": [
435
+ "Strings",
436
+ "Transforming"
427
437
  ]
428
438
  },
429
439
  {
430
440
  "slug": "zipper",
431
441
  "difficulty": 1,
432
442
  "topics": [
443
+ "Generics",
444
+ "Optional values",
445
+ "Trees"
433
446
  ]
434
447
  },
435
448
  {
@@ -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"
@@ -0,0 +1,3 @@
1
+ case class Acronym(phrase: String) {
2
+ def abbreviate: String = ???
3
+ }
@@ -1,11 +1,12 @@
1
- scalaVersion := "2.11.8"
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"
4
+
5
+ val monocleVersion = "1.4.0-M2"
4
6
 
5
7
  libraryDependencies ++= Seq(
6
- "com.github.julien-truffaut" % "monocle-core_2.11" % "1.2.2",
7
- "com.github.julien-truffaut" % "monocle-macro_2.11" % "1.2.2"
8
- )
8
+ "com.github.julien-truffaut" %% "monocle-core" % monocleVersion,
9
+ "com.github.julien-truffaut" %% "monocle-macro" % monocleVersion)
9
10
 
10
11
  libraryDependencies += "org.scalaz" %% "scalaz-core" % "7.2.6"
11
12
 
@@ -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"
@@ -0,0 +1,3 @@
1
+ object Frequency {
2
+ def frequency(numWorkers: Int, texts: Seq[String]): Map[Char, Int] = ???
3
+ }
@@ -1,7 +1,6 @@
1
- scalaVersion := "2.11.8"
2
-
3
- libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.5" % "test"
1
+ scalaVersion := "2.12.1"
4
2
 
3
+ libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
5
4
  libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.4"
6
5
 
7
6
 
@@ -1,3 +1,3 @@
1
- scalaVersion := "2.11.8"
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"
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.5.11
4
+ version: 2.0.5.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katrina Owen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-26 00:00:00.000000000 Z
11
+ date: 2016-12-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -4719,6 +4719,9 @@ files:
4719
4719
  - tracks/objective-c/exercises/anagram/AnagramExample.h
4720
4720
  - tracks/objective-c/exercises/anagram/AnagramExample.m
4721
4721
  - tracks/objective-c/exercises/anagram/AnagramTest.m
4722
+ - tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.h
4723
+ - tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m
4724
+ - tracks/objective-c/exercises/atbash-cipher/AtbashCipherTest.m
4722
4725
  - tracks/objective-c/exercises/bob/BobExample.h
4723
4726
  - tracks/objective-c/exercises/bob/BobExample.m
4724
4727
  - tracks/objective-c/exercises/bob/BobTest.m
@@ -6406,7 +6409,7 @@ files:
6406
6409
  - tracks/scala/exercises/accumulate/src/test/scala/AccumulateTest.scala
6407
6410
  - tracks/scala/exercises/acronym/build.sbt
6408
6411
  - tracks/scala/exercises/acronym/example.scala
6409
- - tracks/scala/exercises/acronym/src/main/scala/.keep
6412
+ - tracks/scala/exercises/acronym/src/main/scala/Acronym.scala
6410
6413
  - tracks/scala/exercises/acronym/src/test/scala/AcronymTest.scala
6411
6414
  - tracks/scala/exercises/all-your-base/build.sbt
6412
6415
  - tracks/scala/exercises/all-your-base/example.scala
@@ -6597,7 +6600,7 @@ files:
6597
6600
  - tracks/scala/exercises/parallel-letter-frequency/HINTS.md
6598
6601
  - tracks/scala/exercises/parallel-letter-frequency/build.sbt
6599
6602
  - tracks/scala/exercises/parallel-letter-frequency/example.scala
6600
- - tracks/scala/exercises/parallel-letter-frequency/src/main/scala/.keep
6603
+ - tracks/scala/exercises/parallel-letter-frequency/src/main/scala/Frequency.scala
6601
6604
  - tracks/scala/exercises/parallel-letter-frequency/src/test/scala/FrequencyTest.scala
6602
6605
  - tracks/scala/exercises/pascals-triangle/build.sbt
6603
6606
  - tracks/scala/exercises/pascals-triangle/example.scala
File without changes