trackler 2.0.6.29 → 2.0.6.30
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/c/README.md +2 -2
- data/tracks/c/config.json +7 -0
- data/tracks/c/exercises/binary/makefile +16 -0
- data/tracks/c/exercises/binary/src/example.c +17 -0
- data/tracks/c/exercises/binary/src/example.h +7 -0
- data/tracks/c/exercises/binary/test/test_binary.c +99 -0
- data/tracks/c/exercises/binary/test/vendor/unity.c +1300 -0
- data/tracks/c/exercises/binary/test/vendor/unity.h +274 -0
- data/tracks/c/exercises/binary/test/vendor/unity_internals.h +701 -0
- data/tracks/csharp/exercises/scrabble-score/ScrabbleScoreTest.cs +7 -0
- data/tracks/delphi/config.json +8 -0
- data/tracks/delphi/docs/RESOURCES.md +20 -0
- data/tracks/delphi/exercises/beer-song/uBeerSongTests.pas +48 -15
- data/tracks/delphi/exercises/hello-world/uHelloWorldExample.pas +2 -12
- data/tracks/delphi/exercises/hello-world/uTestHelloWorld.pas +3 -3
- data/tracks/delphi/exercises/rna-transcription/TestRnaTranscription.dpr +60 -0
- data/tracks/delphi/exercises/rna-transcription/uRnaTranscriptionExample.pas +55 -0
- data/tracks/delphi/exercises/rna-transcription/uTestRnaTranscription.pas +88 -0
- data/tracks/go/config.json +4 -2
- data/tracks/julia/exercises/anagram/example.jl +29 -30
- data/tracks/julia/exercises/anagram/runtests.jl +16 -17
- data/tracks/julia/exercises/bob/example.jl +1 -1
- data/tracks/julia/exercises/hamming/example.jl +0 -1
- data/tracks/julia/exercises/leap/runtests.jl +4 -5
- data/tracks/julia/exercises/raindrops/example.jl +9 -9
- data/tracks/julia/exercises/raindrops/runtests.jl +54 -54
- data/tracks/julia/exercises/rna-transcription/example.jl +5 -6
- data/tracks/julia/exercises/rna-transcription/runtests.jl +22 -23
- data/tracks/julia/exercises/scrabble-score/example.jl +7 -7
- data/tracks/julia/exercises/scrabble-score/runtests.jl +12 -12
- data/tracks/julia/exercises/trinary/example.jl +2 -2
- data/tracks/julia/exercises/trinary/runtests.jl +11 -11
- data/tracks/julia/exercises/word-count/example.jl +7 -7
- data/tracks/julia/exercises/word-count/runtests.jl +11 -11
- data/tracks/scala/docs/INSTALLATION.md +18 -2
- metadata +12 -2
@@ -3,66 +3,65 @@ using Base.Test
|
|
3
3
|
include("anagram.jl")
|
4
4
|
|
5
5
|
@testset "no matches" begin
|
6
|
-
|
6
|
+
@test detect_anagrams("diasper", ["hello", "world", "zombies", "pants"]) == []
|
7
7
|
end
|
8
8
|
|
9
9
|
@testset "detects simple anagram" begin
|
10
|
-
|
10
|
+
@test detect_anagrams("ant", ["tan", "stand", "at"]) == ["tan"]
|
11
11
|
end
|
12
12
|
|
13
13
|
@testset "does not detect false positives" begin
|
14
|
-
|
14
|
+
@test detect_anagrams("galea", ["eagle"]) == []
|
15
15
|
end
|
16
16
|
|
17
17
|
@testset "detects multiple anagrams" begin
|
18
|
-
|
18
|
+
@test detect_anagrams("master", ["stream", "pigeon", "maters"]) == ["stream", "maters"]
|
19
19
|
end
|
20
20
|
|
21
21
|
@testset "does not detect anagram subsets" begin
|
22
|
-
|
22
|
+
@test detect_anagrams("good", ["dog", "goody"]) == []
|
23
23
|
end
|
24
24
|
|
25
25
|
@testset "detects anagram" begin
|
26
|
-
|
26
|
+
@test detect_anagrams("listen", ["enlists", "google", "inlets", "banana"]) == ["inlets"]
|
27
27
|
end
|
28
28
|
|
29
29
|
@testset "detects multiple anagrams" begin
|
30
|
-
|
30
|
+
@test detect_anagrams("allergy", ["gallery", "ballerina", "regally", "clergy", "largely", "leading"]) == ["gallery", "regally", "largely"]
|
31
31
|
end
|
32
32
|
|
33
33
|
@testset "does not detect identical words" begin
|
34
|
-
|
34
|
+
@test detect_anagrams("corn", ["corn", "dark", "Corn", "rank", "CORN", "cron", "park"]) == ["cron"]
|
35
35
|
end
|
36
36
|
|
37
37
|
@testset "does not detect non-anagrams with identical checksum" begin
|
38
|
-
|
38
|
+
@test detect_anagrams("mass", ["last"]) == []
|
39
39
|
end
|
40
40
|
|
41
41
|
@testset "detects anagrams case-insensitively" begin
|
42
|
-
|
42
|
+
@test detect_anagrams("Orchestra", ["cashregister", "Carthorse", "radishes"]) == ["Carthorse"]
|
43
43
|
end
|
44
44
|
|
45
45
|
@testset "detects anagrams using case-insensitive subject" begin
|
46
|
-
|
46
|
+
@test detect_anagrams("Orchestra", ["cashregister", "carthorse", "radishes"]) == ["carthorse"]
|
47
47
|
end
|
48
48
|
|
49
49
|
@testset "detects anagrams using case-insensitive possible matches" begin
|
50
|
-
|
50
|
+
@test detect_anagrams("orchestra", ["cashregister", "Carthorse", "radishes"]) == ["Carthorse"]
|
51
51
|
end
|
52
52
|
|
53
53
|
@testset "does not detect a word as its own anagram" begin
|
54
|
-
|
54
|
+
@test detect_anagrams("banana", ["Banana"]) == []
|
55
55
|
end
|
56
56
|
|
57
57
|
@testset "does not detect a anagram if the original word is repeated" begin
|
58
|
-
|
58
|
+
@test detect_anagrams("go", ["go Go GO"]) == []
|
59
59
|
end
|
60
60
|
|
61
61
|
@testset "anagrams must use all letters exactly once" begin
|
62
|
-
|
62
|
+
@test detect_anagrams("tapper", ["patter"]) == []
|
63
63
|
end
|
64
64
|
|
65
65
|
@testset "capital word is not own anagram" begin
|
66
|
-
|
66
|
+
@test detect_anagrams("BANANA", ["Banana"]) == []
|
67
67
|
end
|
68
|
-
|
@@ -3,18 +3,17 @@ using Base.Test
|
|
3
3
|
include("leap.jl")
|
4
4
|
|
5
5
|
@testset "Year not divisible by 4: common year" begin
|
6
|
-
|
6
|
+
@test !is_leap_year(2015)
|
7
7
|
end
|
8
8
|
|
9
9
|
@testset "Year divisible by 4, not divisible by 100: leap year" begin
|
10
|
-
|
10
|
+
@test is_leap_year(2016)
|
11
11
|
end
|
12
12
|
|
13
13
|
@testset "Year divisible by 100, not divisible by 400: common year" begin
|
14
|
-
|
14
|
+
@test !is_leap_year(2100)
|
15
15
|
end
|
16
16
|
|
17
17
|
@testset "Year divisible by 400: leap year" begin
|
18
|
-
|
18
|
+
@test is_leap_year(2000)
|
19
19
|
end
|
20
|
-
|
@@ -4,13 +4,13 @@
|
|
4
4
|
# If the number does not have 3, 5, or 7 as a factor, just pass the number's digits straight through.
|
5
5
|
|
6
6
|
function raindrops(number::Int)
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
7
|
+
drops = []
|
8
|
+
number % 3 == 0 && push!(drops, "Pling")
|
9
|
+
number % 5 == 0 && push!(drops, "Plang")
|
10
|
+
number % 7 == 0 && push!(drops, "Plong")
|
11
|
+
if size(drops, 1) == 0
|
12
|
+
repr(number)
|
13
|
+
else
|
14
|
+
join(drops)
|
15
|
+
end
|
16
16
|
end
|
@@ -3,70 +3,70 @@ using Base.Test
|
|
3
3
|
include("raindrops.jl")
|
4
4
|
|
5
5
|
@testset "detect numbers" begin
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
6
|
+
@testset "the sound for 1 is 1" begin
|
7
|
+
@test raindrops(1) == "1"
|
8
|
+
end
|
9
|
+
@testset "2 to the power 3 does not make a raindrop sound as 3 is the exponent not the base" begin
|
10
|
+
@test raindrops(8) == "8"
|
11
|
+
end
|
12
|
+
@testset "the sound for 52 is 52" begin
|
13
|
+
@test raindrops(52) == "52"
|
14
|
+
end
|
15
15
|
end
|
16
16
|
|
17
17
|
@testset "detect pling" begin
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
18
|
+
@testset "the sound for 3 is Pling" begin
|
19
|
+
@test raindrops(3) == "Pling"
|
20
|
+
end
|
21
|
+
@testset "the sound for 6 is Pling as it has a factor 3" begin
|
22
|
+
@test raindrops(6) == "Pling"
|
23
|
+
end
|
24
|
+
@testset "the sound for 9 is Pling as it has a factor 3" begin
|
25
|
+
@test raindrops(9) == "Pling"
|
26
|
+
end
|
27
|
+
@testset "the sound for 27 is Pling as it has a factor 3" begin
|
28
|
+
@test raindrops(27) == "Pling"
|
29
|
+
end
|
30
30
|
end
|
31
31
|
|
32
32
|
@testset "detect plang" begin
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
33
|
+
@testset "the sound for 5 is Plang" begin
|
34
|
+
@test raindrops(5) == "Plang"
|
35
|
+
end
|
36
|
+
@testset "the sound for 10 is Plang as it has a factor 5" begin
|
37
|
+
@test raindrops(10) == "Plang"
|
38
|
+
end
|
39
|
+
@testset "the sound for 25 is Plang as it has a factor 5" begin
|
40
|
+
@test raindrops(25) == "Plang"
|
41
|
+
end
|
42
|
+
@testset "the sound for 3125 is Plang as it has a factor 5" begin
|
43
|
+
@test raindrops(3125) == "Plang"
|
44
|
+
end
|
45
45
|
end
|
46
46
|
|
47
47
|
@testset "detect plong" begin
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
48
|
+
@testset "the sound for 7 is Plong" begin
|
49
|
+
@test raindrops(7) == "Plong"
|
50
|
+
end
|
51
|
+
@testset "the sound for 14 is Plong as it has a factor of 7" begin
|
52
|
+
@test raindrops(14) == "Plong"
|
53
|
+
end
|
54
|
+
@testset "the sound for 49 is Plong as it has a factor 7" begin
|
55
|
+
@test raindrops(49) == "Plong"
|
56
|
+
end
|
57
57
|
end
|
58
58
|
|
59
59
|
@testset "detect multiple sounds" begin
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
60
|
+
@testset "the sound for 15 is PlingPlang as it has factors 3 and 5" begin
|
61
|
+
@test raindrops(15) == "PlingPlang"
|
62
|
+
end
|
63
|
+
@testset "the sound for 21 is PlingPlong as it has factors 3 and 7" begin
|
64
|
+
@test raindrops(21) == "PlingPlong"
|
65
|
+
end
|
66
|
+
@testset "the sound for 35 is PlangPlong as it has factors 5 and 7" begin
|
67
|
+
@test raindrops(35) == "PlangPlong"
|
68
|
+
end
|
69
|
+
@testset "the sound for 105 is PlingPlangPlong as it has factors 3, 5 and 7" begin
|
70
|
+
@test raindrops(105) == "PlingPlangPlong"
|
71
|
+
end
|
72
72
|
end
|
@@ -1,10 +1,9 @@
|
|
1
1
|
# Given a DNA strand, its transcribed RNA strand is formed by replacing each nucleotide with its complement:
|
2
2
|
# G -> C, C -> G, T -> A, A -> U
|
3
3
|
function to_rna(dna::AbstractString)
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
typeof(match(r"^[GCTA]+$", dna)) == Void && error("Invalid RNA strand")
|
5
|
+
# Define character associations
|
6
|
+
a_nucleotides = Dict('G'=>'C', 'C'=>'G', 'T'=>'A', 'A'=>'U')
|
7
|
+
# Replace characters using dictionary
|
8
|
+
map((x)->a_nucleotides[x], dna)
|
9
9
|
end
|
10
|
-
|
@@ -3,38 +3,37 @@ using Base.Test
|
|
3
3
|
include("rna-transcription.jl")
|
4
4
|
|
5
5
|
@testset "basic transformations" begin
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
@testset "rna complement of cytosine is guanine" begin
|
7
|
+
@test to_rna("C") == "G"
|
8
|
+
end
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
@testset "rna complement of guanine is cytosine" begin
|
11
|
+
@test to_rna("G") == "C"
|
12
|
+
end
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
@testset "rna complement of thymine is adenine" begin
|
15
|
+
@test to_rna("T") == "A"
|
16
|
+
end
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
@testset "rna complement of adenine is uracil" begin
|
19
|
+
@test to_rna("A") == "U"
|
20
|
+
end
|
21
21
|
end
|
22
22
|
|
23
23
|
@testset "rna complement" begin
|
24
|
-
|
24
|
+
@test to_rna("ACGTGGTCTTAA") == "UGCACCAGAAUU"
|
25
25
|
end
|
26
26
|
|
27
27
|
@testset "error handling" begin
|
28
|
-
|
29
|
-
|
30
|
-
|
28
|
+
@testset "dna correctly handles invalid input" begin
|
29
|
+
@test_throws ErrorException to_rna("U")
|
30
|
+
end
|
31
31
|
|
32
|
-
|
33
|
-
|
34
|
-
|
32
|
+
@testset "dna correctly handles completely invalid input" begin
|
33
|
+
@test_throws ErrorException to_rna("XXX")
|
34
|
+
end
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
|
36
|
+
@testset "dna correctly handles partially invalid input" begin
|
37
|
+
@test_throws ErrorException to_rna("ACGTXXXCTTAA")
|
38
|
+
end
|
39
39
|
end
|
40
|
-
|
@@ -1,9 +1,9 @@
|
|
1
1
|
function score(str::AbstractString)
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
2
|
+
rank = Dict('a'=>1, 'e'=>1, 'i'=>1, 'o'=>1, 'u'=>1, 'l'=>1,
|
3
|
+
'n'=>1, 'r'=>1, 's'=>1, 't'=>1, 'd'=>2, 'g'=>2,
|
4
|
+
'b'=>3, 'c'=>3, 'm'=>3, 'p'=>3, 'f'=>4, 'h'=>4,
|
5
|
+
'v'=>4, 'w'=>4, 'y'=>4, 'k'=>5, 'j'=>8, 'x'=>8,
|
6
|
+
'q'=>10, 'z'=>10)
|
7
|
+
length(str) == 0 && return 0
|
8
|
+
mapreduce(x->get(rank, x, 0), +, lowercase(str))
|
9
9
|
end
|
@@ -3,49 +3,49 @@ using Base.Test
|
|
3
3
|
include("scrabble-score.jl")
|
4
4
|
|
5
5
|
@testset "lowercase letter" begin
|
6
|
-
|
6
|
+
@test score("a") == 1
|
7
7
|
end
|
8
8
|
|
9
9
|
@testset "uppercase letter" begin
|
10
|
-
|
10
|
+
@test score("A") == 1
|
11
11
|
end
|
12
12
|
|
13
13
|
@testset "valuable letter" begin
|
14
|
-
|
14
|
+
@test score("f") == 4
|
15
15
|
end
|
16
16
|
|
17
17
|
@testset "short word" begin
|
18
|
-
|
18
|
+
@test score("at") == 2
|
19
19
|
end
|
20
20
|
|
21
21
|
@testset "short, valuable word" begin
|
22
|
-
|
22
|
+
@test score("zoo") == 12
|
23
23
|
end
|
24
24
|
|
25
25
|
@testset "medium word" begin
|
26
|
-
|
26
|
+
@test score("street") == 6
|
27
27
|
end
|
28
28
|
|
29
29
|
@testset "medium, valuable word" begin
|
30
|
-
|
30
|
+
@test score("quirky") == 22
|
31
31
|
end
|
32
32
|
|
33
33
|
@testset "long, mixed-case word" begin
|
34
|
-
|
34
|
+
@test score("OxyphenButazone") == 41
|
35
35
|
end
|
36
36
|
|
37
37
|
@testset "english-like word" begin
|
38
|
-
|
38
|
+
@test score("pinata") == 8
|
39
39
|
end
|
40
40
|
|
41
41
|
@testset "non-english letter is not scored" begin
|
42
|
-
|
42
|
+
@test score("piñata") == 7
|
43
43
|
end
|
44
44
|
|
45
45
|
@testset "empty input" begin
|
46
|
-
|
46
|
+
@test score("") == 0
|
47
47
|
end
|
48
48
|
|
49
49
|
@testset "entire alphabet available" begin
|
50
|
-
|
50
|
+
@test score("abcdefghijklmnopqrstuvwxyz") == 87
|
51
51
|
end
|
@@ -1,4 +1,4 @@
|
|
1
1
|
function trinary_to_decimal(str::AbstractString)
|
2
|
-
|
3
|
-
|
2
|
+
typeof(match(r"^[0-2]+$", str)) == Void && return 0
|
3
|
+
mapreduce(i->(i[2]-'0')*3^i[1], +, zip(0:length(str), reverse(str)))
|
4
4
|
end
|
@@ -3,45 +3,45 @@ using Base.Test
|
|
3
3
|
include("trinary.jl")
|
4
4
|
|
5
5
|
@testset "trinary 1 is decimal 1" begin
|
6
|
-
|
6
|
+
@test trinary_to_decimal("1") == 1
|
7
7
|
end
|
8
8
|
|
9
9
|
@testset "trinary 2 is decimal 2" begin
|
10
|
-
|
10
|
+
@test trinary_to_decimal("2") == 2
|
11
11
|
end
|
12
12
|
|
13
13
|
@testset "trinary 10 is decimal 3" begin
|
14
|
-
|
14
|
+
@test trinary_to_decimal("10") == 3
|
15
15
|
end
|
16
16
|
|
17
17
|
@testset "trinary 11 is decimal 4" begin
|
18
|
-
|
18
|
+
@test trinary_to_decimal("11") == 4
|
19
19
|
end
|
20
20
|
|
21
21
|
@testset "trinary 100 is decimal 9" begin
|
22
|
-
|
22
|
+
@test trinary_to_decimal("100") == 9
|
23
23
|
end
|
24
24
|
|
25
25
|
@testset "trinary 112 is decimal 14" begin
|
26
|
-
|
26
|
+
@test trinary_to_decimal("112") == 14
|
27
27
|
end
|
28
28
|
|
29
29
|
@testset "trinary 222 is decimal 26" begin
|
30
|
-
|
30
|
+
@test trinary_to_decimal("222") == 26
|
31
31
|
end
|
32
32
|
|
33
33
|
@testset "trinary 1122000120 is decimal 32091" begin
|
34
|
-
|
34
|
+
@test trinary_to_decimal("1122000120") == 32091
|
35
35
|
end
|
36
36
|
|
37
37
|
@testset "invalid trinary digits returns 0" begin
|
38
|
-
|
38
|
+
@test trinary_to_decimal("1234") == 0
|
39
39
|
end
|
40
40
|
|
41
41
|
@testset "invalid word as input returns 0" begin
|
42
|
-
|
42
|
+
@test trinary_to_decimal("carrot") == 0
|
43
43
|
end
|
44
44
|
|
45
45
|
@testset "invalid numbers with letters as input returns 0" begin
|
46
|
-
|
46
|
+
@test trinary_to_decimal("0a1b2c") == 0
|
47
47
|
end
|