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.
- 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
|