trackler 2.0.5.11 → 2.0.5.12

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