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.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/tracks/java/exercises/atbash-cipher/src/test/java/AtbashTest.java +7 -7
- data/tracks/java/exercises/binary/src/test/java/BinaryTest.java +8 -8
- data/tracks/java/exercises/octal/src/test/java/OctalTest.java +8 -8
- data/tracks/java/exercises/pig-latin/src/test/java/PigLatinTest.java +7 -7
- data/tracks/java/exercises/raindrops/src/test/java/RaindropsTest.java +7 -7
- data/tracks/java/exercises/roman-numerals/src/test/java/RomanNumeralsTest.java +8 -8
- data/tracks/java/exercises/scrabble-score/src/test/java/ScrabbleScoreTest.java +8 -8
- data/tracks/objective-c/config.json +9 -0
- data/tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.h +7 -0
- data/tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m +61 -0
- data/tracks/objective-c/exercises/atbash-cipher/AtbashCipherTest.m +49 -0
- data/tracks/objective-c/xcodeProject/ObjectiveC.xcodeproj/project.pbxproj +18 -0
- data/tracks/scala/config.json +13 -0
- data/tracks/scala/exercises/acronym/build.sbt +2 -2
- data/tracks/scala/exercises/acronym/src/main/scala/Acronym.scala +3 -0
- data/tracks/scala/exercises/lens-person/build.sbt +6 -5
- data/tracks/scala/exercises/parallel-letter-frequency/build.sbt +2 -2
- data/tracks/scala/exercises/parallel-letter-frequency/src/main/scala/Frequency.scala +3 -0
- data/tracks/scala/exercises/sgf-parsing/build.sbt +2 -3
- data/tracks/scala/exercises/zipper/build.sbt +2 -2
- metadata +7 -4
- data/tracks/scala/exercises/acronym/src/main/scala/.keep +0 -0
- 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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a74ea7b78858cd111f71b62b3e7f1aadf7a294c4
|
4
|
+
data.tar.gz: d5468a4b337811562139e31591574804cb6823fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c2b420709ed64865854ee540e23a723fba890d35055e79cb0bb27809106a2e9bc97ba3c423d54517df9bde477a4bd2260f5e1fbf351e7e855c8037c4cb881954
|
7
|
+
data.tar.gz: e6afa21c6df59af4374d17fc5e0e3ce75f0b7d04e77ab1a672d4239cedad26af92a8bb7f56334fe9144e3fbbbc2d20d59343ecbe0b51537e1567569f2c1da5d4
|
data/lib/trackler/version.rb
CHANGED
@@ -15,10 +15,10 @@ public class AtbashTest {
|
|
15
15
|
|
16
16
|
@RunWith(Parameterized.class)
|
17
17
|
public static class EncodeTest {
|
18
|
-
private String
|
19
|
-
private String
|
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
|
35
|
-
this.
|
36
|
-
this.
|
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(
|
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
|
16
|
-
private int
|
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
|
38
|
-
this.
|
39
|
-
this.
|
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(
|
45
|
+
Binary binary = new Binary(binaryNumberAsString);
|
46
46
|
|
47
|
-
assertEquals(
|
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
|
15
|
-
private int
|
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
|
38
|
-
this.
|
39
|
-
this.
|
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(
|
45
|
+
Octal octal = new Octal(octalNumberAsString);
|
46
46
|
|
47
|
-
assertEquals(
|
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
|
15
|
-
private String
|
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
|
63
|
-
this.
|
64
|
-
this.
|
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(
|
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
|
16
|
-
private String
|
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
|
50
|
-
this.
|
51
|
-
this.
|
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(
|
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
|
16
|
-
private String
|
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
|
44
|
-
this.
|
45
|
-
this.
|
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(
|
51
|
+
RomanNumeral romanNumeral = new RomanNumeral(arabicNumeral);
|
52
52
|
|
53
|
-
assertEquals(
|
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
|
15
|
-
private int
|
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
|
33
|
-
this.
|
34
|
-
this.
|
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(
|
40
|
+
Scrabble scrabble = new Scrabble(scrabbleInput);
|
41
41
|
|
42
|
-
assertEquals(
|
42
|
+
assertEquals(scrabbleScore, scrabble.getScore());
|
43
43
|
}
|
44
44
|
}
|
@@ -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 */,
|
data/tracks/scala/config.json
CHANGED
@@ -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.
|
1
|
+
scalaVersion := "2.12.1"
|
2
2
|
|
3
|
-
libraryDependencies += "org.scalatest"
|
3
|
+
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
|
@@ -1,11 +1,12 @@
|
|
1
|
-
scalaVersion := "2.
|
1
|
+
scalaVersion := "2.12.1"
|
2
2
|
|
3
|
-
libraryDependencies += "org.scalatest"
|
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"
|
7
|
-
"com.github.julien-truffaut"
|
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.
|
1
|
+
scalaVersion := "2.12.1"
|
2
2
|
|
3
|
-
libraryDependencies += "org.scalatest"
|
3
|
+
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
|
@@ -1,7 +1,6 @@
|
|
1
|
-
scalaVersion := "2.
|
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.
|
1
|
+
scalaVersion := "2.12.1"
|
2
2
|
|
3
|
-
libraryDependencies += "org.scalatest"
|
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.
|
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-
|
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
|
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
|
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
|
File without changes
|