trackler 2.0.6.20 → 2.0.6.21
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/common/TOPICS.txt +1 -0
- data/lib/trackler/version.rb +1 -1
- data/tracks/csharp/docs/INSTALLATION.md +85 -3
- data/tracks/go/config.json +11 -3
- data/tracks/julia/config.json +20 -1
- data/tracks/julia/exercises/anagram/anagram.jl +4 -0
- data/tracks/julia/exercises/anagram/example.jl +43 -0
- data/tracks/julia/exercises/anagram/runtests.jl +68 -0
- data/tracks/julia/exercises/leap/example.jl +5 -0
- data/tracks/julia/exercises/leap/leap.jl +4 -0
- data/tracks/julia/exercises/leap/runtests.jl +20 -0
- data/tracks/ocaml/exercises/atbash-cipher/example.ml +1 -1
- data/tracks/ocaml/exercises/dominoes/example.ml +1 -1
- data/tracks/ocaml/exercises/etl/example.ml +1 -1
- data/tracks/ocaml/exercises/hangman/example.ml +1 -1
- data/tracks/ocaml/exercises/nucleotide-count/example.ml +1 -1
- data/tracks/ocaml/tools/test-generator/src/controller.ml +8 -4
- data/tracks/ocaml/tools/test-generator/src/files.ml +24 -0
- data/tracks/ocaml/tools/test-generator/src/test_gen.ml +4 -1
- data/tracks/scala/config.json +15 -1
- data/tracks/scala/exercises/anagram/build.sbt +3 -2
- data/tracks/scala/exercises/anagram/src/test/scala/AnagramTest.scala +1 -1
- data/tracks/scala/exercises/bob/build.sbt +2 -2
- data/tracks/scala/exercises/bob/src/test/scala/BobTest.scala +1 -1
- data/tracks/scala/exercises/grade-school/build.sbt +3 -2
- data/tracks/scala/exercises/grade-school/src/test/scala/GradeSchoolTest.scala +1 -1
- data/tracks/scala/exercises/hamming/build.sbt +2 -2
- data/tracks/scala/exercises/hamming/src/test/scala/HammingTest.scala +1 -1
- data/tracks/scala/exercises/hello-world/build.sbt +2 -2
- data/tracks/scala/exercises/pangram/build.sbt +4 -2
- data/tracks/scala/exercises/phone-number/build.sbt +3 -2
- data/tracks/scala/exercises/phone-number/src/test/scala/PhoneNumberTest.scala +1 -1
- data/tracks/scala/exercises/word-count/build.sbt +2 -2
- data/tracks/scala/exercises/word-count/src/test/scala/WordCountTest.scala +1 -1
- data/tracks/swift/SETUP.md +6 -6
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6de615318283e74b1a4ba367fe22c32fd9327479
|
4
|
+
data.tar.gz: 51532eb3b0e3814f86ba58b6bd22fedfcaa2b274
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5f3edb30c5879a9f5a3c4c5e225911c50cce4c7456448b28d49215439eef1e8d4146cd1da18bfec00a413a6d55bff6d7d9109df70b1d4d7850c837acd015fb97
|
7
|
+
data.tar.gz: 23c1c02ee95b90b4bff31c628bbbd25066e23bcadc339bbaa9d25f4fda817e9e835230f6930a4296621d7ed31a0d9860cc15fc09e3951ca2a5497b16336047b4
|
data/common/TOPICS.txt
CHANGED
data/lib/trackler/version.rb
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
## Installing C#
|
2
2
|
|
3
|
-
|
3
|
+
* [Windows](#windows)
|
4
|
+
* [Mac](#mac)
|
5
|
+
* [Linux](#linux)
|
6
|
+
|
7
|
+
### [Windows](#windows)
|
4
8
|
There are a couple of different ways to get started using C#. The main way is to
|
5
9
|
install Visual Studio, the IDE for C# and related projects.
|
6
10
|
|
@@ -87,7 +91,7 @@ The compiler executable is usually located in the Microsoft.NET\Framework\Versio
|
|
87
91
|
|
88
92
|
Refer to this [MSDN article](http://msdn.microsoft.com/en-us/library/78f4aasd.aspx) for more information on the command line compiler.
|
89
93
|
|
90
|
-
### Mac
|
94
|
+
### [Mac](#mac)
|
91
95
|
|
92
96
|
Install [Xamarin Studio](http://xamarin.com/download).
|
93
97
|
|
@@ -98,6 +102,84 @@ Once installed and running, click on new solution and you'll find the C# library
|
|
98
102
|
|
99
103
|

|
100
104
|
|
101
|
-
### Linux
|
105
|
+
### [Linux](#linux)
|
106
|
+
|
107
|
+
.NET Core is available for Linux. Follow the [official installation guide](https://www.microsoft.com/net/core#linuxubuntu) to install the .NET Core development tools.
|
108
|
+
|
109
|
+
After installing .NET Core, fetch the first exercise of the csharp-track:
|
110
|
+
|
111
|
+
```
|
112
|
+
exercism fetch csharp
|
113
|
+
```
|
114
|
+
|
115
|
+
Move into the exercise directory:
|
116
|
+
|
117
|
+
```
|
118
|
+
cd ~/exercism/csharp/hello-world
|
119
|
+
```
|
120
|
+
|
121
|
+
Initialize a new dotnet project
|
122
|
+
|
123
|
+
```
|
124
|
+
dotnet new
|
125
|
+
```
|
126
|
+
|
127
|
+
Several new files are created, among them project.json. We have to add nunit as a dependency in order to run the tests provided in the exercise.
|
128
|
+
|
129
|
+
Add the following lines to the dependency block:
|
130
|
+
|
131
|
+
```
|
132
|
+
"dependencies": {
|
133
|
+
"nunit": "3.6.0",
|
134
|
+
"dotnet-test-nunit": "3.4.0-*"
|
135
|
+
}
|
136
|
+
```
|
137
|
+
|
138
|
+
We also have to specify the testrunner, add this line below the dependency block:
|
139
|
+
|
140
|
+
```
|
141
|
+
"testRunner":"nunit"
|
142
|
+
```
|
143
|
+
|
144
|
+
The complete **project.json** file should look something like this:
|
145
|
+
|
146
|
+
```
|
147
|
+
{
|
148
|
+
"version": "1.0.0-*",
|
149
|
+
"buildOptions": {
|
150
|
+
"debugType": "portable",
|
151
|
+
"emitEntryPoint": true
|
152
|
+
},
|
153
|
+
"dependencies": {
|
154
|
+
"nunit": "3.6.0",
|
155
|
+
"dotnet-test-nunit": "3.4.0-*"
|
156
|
+
},
|
157
|
+
"testRunner":"nunit",
|
158
|
+
"frameworks": {
|
159
|
+
"netcoreapp1.1": {
|
160
|
+
"dependencies": {
|
161
|
+
"Microsoft.NETCore.App": {
|
162
|
+
"type": "platform",
|
163
|
+
"version": "1.1.0"
|
164
|
+
}
|
165
|
+
},
|
166
|
+
"imports": "dnxcore50"
|
167
|
+
}
|
168
|
+
}
|
169
|
+
}
|
170
|
+
```
|
171
|
+
|
172
|
+
Then we can restore the packages using:
|
173
|
+
|
174
|
+
```
|
175
|
+
dotnet restore
|
176
|
+
```
|
177
|
+
|
178
|
+
Compile the project and run the tests with this:
|
179
|
+
|
180
|
+
```
|
181
|
+
dotnet test
|
182
|
+
```
|
183
|
+
|
102
184
|
|
103
185
|
[Mono Develop](http://www.mono-project.com/Mono_For_Linux_Developers) is available for Linux.
|
data/tracks/go/config.json
CHANGED
@@ -74,12 +74,20 @@
|
|
74
74
|
{
|
75
75
|
"difficulty": 1,
|
76
76
|
"slug": "raindrops",
|
77
|
-
"topics": [
|
77
|
+
"topics": [
|
78
|
+
"Control-flow (conditionals)",
|
79
|
+
"Strings",
|
80
|
+
"Filtering"
|
81
|
+
]
|
78
82
|
},
|
79
83
|
{
|
80
|
-
"difficulty":
|
84
|
+
"difficulty": 3,
|
81
85
|
"slug": "acronym",
|
82
|
-
"topics": [
|
86
|
+
"topics": [
|
87
|
+
"Strings",
|
88
|
+
"Transforming",
|
89
|
+
"Regular Expressions"
|
90
|
+
]
|
83
91
|
},
|
84
92
|
{
|
85
93
|
"difficulty": 1,
|
data/tracks/julia/config.json
CHANGED
@@ -5,7 +5,26 @@
|
|
5
5
|
"active": false,
|
6
6
|
"test_pattern": "TODO",
|
7
7
|
"exercises": [
|
8
|
-
|
8
|
+
{
|
9
|
+
"slug": "leap",
|
10
|
+
"difficulty": 1,
|
11
|
+
"topics": [
|
12
|
+
"control-flow (conditionals)",
|
13
|
+
"integers",
|
14
|
+
"mathematics"
|
15
|
+
]
|
16
|
+
},
|
17
|
+
{
|
18
|
+
"slug": "anagram",
|
19
|
+
"difficulty": 2,
|
20
|
+
"topics": [
|
21
|
+
"control-flow (loops)",
|
22
|
+
"arrays",
|
23
|
+
"strings",
|
24
|
+
"sorting",
|
25
|
+
"filtering"
|
26
|
+
]
|
27
|
+
}
|
9
28
|
],
|
10
29
|
"deprecated": [
|
11
30
|
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# Anagrams are two or more words that composed of the same characters but in a different order
|
2
|
+
|
3
|
+
function is_anagram(s1::AbstractString, s2::AbstractString)
|
4
|
+
# Disable case sensitivity
|
5
|
+
s1 = lowercase(s1)
|
6
|
+
s2 = lowercase(s2)
|
7
|
+
|
8
|
+
# Similar and different-length strings are not anagrams
|
9
|
+
if length(s1) != length(s2) || s1 == s2
|
10
|
+
return false
|
11
|
+
end
|
12
|
+
|
13
|
+
# Calculate count of every character in the first string
|
14
|
+
chr_count = Dict()
|
15
|
+
for c in s1
|
16
|
+
chr_count[c] = get(chr_count, c, 0) + 1
|
17
|
+
end
|
18
|
+
|
19
|
+
# Reduce the count by every character from the second string
|
20
|
+
for c in s2
|
21
|
+
t = get(chr_count, c, 0) - 1
|
22
|
+
if t < 0
|
23
|
+
# Got character that not exist in the first string
|
24
|
+
return false
|
25
|
+
else
|
26
|
+
chr_count[c] = t
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# Check all counts to be zeroes
|
31
|
+
return all(i->(i==0), values(chr_count))
|
32
|
+
end
|
33
|
+
|
34
|
+
function detect_anagrams(subject::AbstractString, candidates::AbstractArray)
|
35
|
+
result = []
|
36
|
+
for candidate = candidates
|
37
|
+
if is_anagram(subject, candidate)
|
38
|
+
push!(result, candidate)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
result
|
42
|
+
end
|
43
|
+
|
@@ -0,0 +1,68 @@
|
|
1
|
+
using Base.Test
|
2
|
+
|
3
|
+
include("anagram.jl")
|
4
|
+
|
5
|
+
@testset "no matches" begin
|
6
|
+
@test detect_anagrams("diasper", ["hello", "world", "zombies", "pants"]) == []
|
7
|
+
end
|
8
|
+
|
9
|
+
@testset "detects simple anagram" begin
|
10
|
+
@test detect_anagrams("ant", ["tan", "stand", "at"]) == ["tan"]
|
11
|
+
end
|
12
|
+
|
13
|
+
@testset "does not detect false positives" begin
|
14
|
+
@test detect_anagrams("galea", ["eagle"]) == []
|
15
|
+
end
|
16
|
+
|
17
|
+
@testset "detects multiple anagrams" begin
|
18
|
+
@test detect_anagrams("master", ["stream", "pigeon", "maters"]) == ["stream", "maters"]
|
19
|
+
end
|
20
|
+
|
21
|
+
@testset "does not detect anagram subsets" begin
|
22
|
+
@test detect_anagrams("good", ["dog", "goody"]) == []
|
23
|
+
end
|
24
|
+
|
25
|
+
@testset "detects anagram" begin
|
26
|
+
@test detect_anagrams("listen", ["enlists", "google", "inlets", "banana"]) == ["inlets"]
|
27
|
+
end
|
28
|
+
|
29
|
+
@testset "detects multiple anagrams" begin
|
30
|
+
@test detect_anagrams("allergy", ["gallery", "ballerina", "regally", "clergy", "largely", "leading"]) == ["gallery", "regally", "largely"]
|
31
|
+
end
|
32
|
+
|
33
|
+
@testset "does not detect identical words" begin
|
34
|
+
@test detect_anagrams("corn", ["corn", "dark", "Corn", "rank", "CORN", "cron", "park"]) == ["cron"]
|
35
|
+
end
|
36
|
+
|
37
|
+
@testset "does not detect non-anagrams with identical checksum" begin
|
38
|
+
@test detect_anagrams("mass", ["last"]) == []
|
39
|
+
end
|
40
|
+
|
41
|
+
@testset "detects anagrams case-insensitively" begin
|
42
|
+
@test detect_anagrams("Orchestra", ["cashregister", "Carthorse", "radishes"]) == ["Carthorse"]
|
43
|
+
end
|
44
|
+
|
45
|
+
@testset "detects anagrams using case-insensitive subject" begin
|
46
|
+
@test detect_anagrams("Orchestra", ["cashregister", "carthorse", "radishes"]) == ["carthorse"]
|
47
|
+
end
|
48
|
+
|
49
|
+
@testset "detects anagrams using case-insensitive possible matches" begin
|
50
|
+
@test detect_anagrams("orchestra", ["cashregister", "Carthorse", "radishes"]) == ["Carthorse"]
|
51
|
+
end
|
52
|
+
|
53
|
+
@testset "does not detect a word as its own anagram" begin
|
54
|
+
@test detect_anagrams("banana", ["Banana"]) == []
|
55
|
+
end
|
56
|
+
|
57
|
+
@testset "does not detect a anagram if the original word is repeated" begin
|
58
|
+
@test detect_anagrams("go", ["go Go GO"]) == []
|
59
|
+
end
|
60
|
+
|
61
|
+
@testset "anagrams must use all letters exactly once" begin
|
62
|
+
@test detect_anagrams("tapper", ["patter"]) == []
|
63
|
+
end
|
64
|
+
|
65
|
+
@testset "capital word is not own anagram" begin
|
66
|
+
@test detect_anagrams("BANANA", ["Banana"]) == []
|
67
|
+
end
|
68
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
using Base.Test
|
2
|
+
|
3
|
+
include("leap.jl")
|
4
|
+
|
5
|
+
@testset "Year not divisible by 4: common year" begin
|
6
|
+
@test !is_leap_year(2015)
|
7
|
+
end
|
8
|
+
|
9
|
+
@testset "Year divisible by 4, not divisible by 100: leap year" begin
|
10
|
+
@test is_leap_year(2016)
|
11
|
+
end
|
12
|
+
|
13
|
+
@testset "Year divisible by 100, not divisible by 400: common year" begin
|
14
|
+
@test !is_leap_year(2100)
|
15
|
+
end
|
16
|
+
|
17
|
+
@testset "Year divisible by 400: leap year" begin
|
18
|
+
@test is_leap_year(2000)
|
19
|
+
end
|
20
|
+
|
@@ -16,7 +16,7 @@ let zip_with (xs: 'a list) (ys: 'b list) ~(f: 'a -> 'b -> 'c) =
|
|
16
16
|
let tails (xs: 'a list): ('a list) list =
|
17
17
|
let rec go acc = function
|
18
18
|
| [] -> [] :: acc
|
19
|
-
| (
|
19
|
+
| (_::xs) as l -> go (l :: acc) xs
|
20
20
|
in
|
21
21
|
List.rev @@ go [] xs
|
22
22
|
|
@@ -4,4 +4,4 @@ let transform data =
|
|
4
4
|
let assign_value value character = ((Char.lowercase character), value) in
|
5
5
|
let assign (value, characters) = List.map ~f:(assign_value value) characters in
|
6
6
|
let compare (a, _) (b, _) = Char.compare a b in
|
7
|
-
List.sort compare (List.concat (List.map ~f:assign data))
|
7
|
+
List.sort ~cmp:compare (List.concat (List.map ~f:assign data))
|
@@ -7,5 +7,5 @@ let count s c =
|
|
7
7
|
String.fold ~init:0 ~f s
|
8
8
|
|
9
9
|
let nucleotide_counts s =
|
10
|
-
let f m c = CMap.change m c (function None -> Some 1 | Some n -> Some (n + 1)) in
|
10
|
+
let f m c = CMap.change m c ~f:(function None -> Some 1 | Some n -> Some (n + 1)) in
|
11
11
|
String.fold ~init:CMap.empty ~f s
|
@@ -5,6 +5,7 @@ open Utils
|
|
5
5
|
open Codegen
|
6
6
|
open Special_cases
|
7
7
|
open Template
|
8
|
+
open Files
|
8
9
|
|
9
10
|
type content = string
|
10
11
|
|
@@ -40,19 +41,22 @@ let generate_code ~(slug: string) ~(template_file: content) ~(canonical_data_fil
|
|
40
41
|
|> Result.return
|
41
42
|
)
|
42
43
|
|
43
|
-
let output_tests (files: (string * content * content) list) (output_folder: string): unit =
|
44
|
+
let output_tests (files: (string * content * content) list) (output_folder: string) ~(generated_folder: string): unit =
|
44
45
|
let output_filepath name = output_folder ^ "/" ^ name ^ "/test.ml" in
|
45
46
|
let output1 (slug,t,c) =
|
46
47
|
match generate_code slug t c with
|
47
|
-
| Ok code ->
|
48
|
+
| Ok code ->
|
49
|
+
if backup ~base_folder:generated_folder ~slug ~contents:code
|
50
|
+
then Out_channel.write_all (output_filepath slug) code
|
51
|
+
else print_endline @@ "not generating " ^ slug ^ " as unchanged from previous generated file."
|
48
52
|
| Error e -> print_endline ("Failed when generating " ^ slug ^ ", error: " ^ e) in
|
49
53
|
List.iter files ~f:output1
|
50
54
|
|
51
|
-
let run ~(templates_folder: string) ~(canonical_data_folder: string) ~(output_folder: string) =
|
55
|
+
let run ~(templates_folder: string) ~(canonical_data_folder: string) ~(output_folder: string) ~(generated_folder: string) =
|
52
56
|
let template_files = find_template_files templates_folder in
|
53
57
|
let canonical_data_files = find_canonical_data_files canonical_data_folder in
|
54
58
|
let combined = combine_files template_files canonical_data_files in
|
55
|
-
output_tests combined output_folder
|
59
|
+
output_tests combined output_folder generated_folder
|
56
60
|
|
57
61
|
let check_canonical_data canonical_data_folder =
|
58
62
|
let ok_count = ref 0 in
|
@@ -0,0 +1,24 @@
|
|
1
|
+
open Core.Std
|
2
|
+
|
3
|
+
let mkdir_if_not_present dir =
|
4
|
+
if Sys.file_exists dir = `No
|
5
|
+
then begin
|
6
|
+
Unix.mkdir dir;
|
7
|
+
print_endline @@ "Storing generated files in " ^ dir
|
8
|
+
end
|
9
|
+
else ()
|
10
|
+
|
11
|
+
let backup ~(base_folder: string) ~(slug: string) ~(contents: string): bool =
|
12
|
+
mkdir_if_not_present base_folder;
|
13
|
+
let path = Filename.concat base_folder slug in
|
14
|
+
let matches_contents =
|
15
|
+
Option.try_with (fun () -> In_channel.read_all path)
|
16
|
+
|> Option.map ~f:(String.equal contents)
|
17
|
+
|> Option.value ~default:false
|
18
|
+
in
|
19
|
+
if matches_contents
|
20
|
+
then false
|
21
|
+
else begin
|
22
|
+
Out_channel.write_all path contents;
|
23
|
+
true
|
24
|
+
end
|
@@ -10,6 +10,8 @@ let is_directory =
|
|
10
10
|
exit 1
|
11
11
|
)
|
12
12
|
|
13
|
+
let home_dir = Option.value_exn (Sys.getenv "HOME")
|
14
|
+
|
13
15
|
let command =
|
14
16
|
Command.basic
|
15
17
|
~summary:"Generates test code from canonical data."
|
@@ -18,8 +20,9 @@ let command =
|
|
18
20
|
+> flag "-t" (optional_with_default "./templates" is_directory) ~doc:"string Directory containing templates."
|
19
21
|
+> flag "-c" (optional_with_default "../../../x-common/exercises" is_directory) ~doc:"string Directory containing canonical data."
|
20
22
|
+> flag "-o" (optional_with_default "../../exercises" is_directory) ~doc:"string Directory to output generated tests."
|
23
|
+
+> flag "-g" (optional_with_default (home_dir ^ "/.xocaml-generated") is_directory) ~doc:"string Directory to backup generated tests."
|
21
24
|
)
|
22
|
-
(fun templates_folder canonical_data_folder output_folder () -> Controller.run templates_folder canonical_data_folder output_folder)
|
25
|
+
(fun templates_folder canonical_data_folder output_folder generated_folder () -> Controller.run templates_folder canonical_data_folder output_folder generated_folder)
|
23
26
|
|
24
27
|
let () =
|
25
28
|
Command.run ~version:"0.1" command
|
data/tracks/scala/config.json
CHANGED
@@ -50,18 +50,25 @@
|
|
50
50
|
"slug": "word-count",
|
51
51
|
"difficulty": 1,
|
52
52
|
"topics": [
|
53
|
-
|
53
|
+
"Maps",
|
54
|
+
"Strings",
|
55
|
+
"Transforming"
|
56
|
+
]
|
54
57
|
},
|
55
58
|
{
|
56
59
|
"slug": "pangram",
|
57
60
|
"difficulty": 1,
|
58
61
|
"topics": [
|
62
|
+
"Strings"
|
59
63
|
]
|
60
64
|
},
|
61
65
|
{
|
62
66
|
"slug": "anagram",
|
63
67
|
"difficulty": 1,
|
64
68
|
"topics": [
|
69
|
+
"Sequences",
|
70
|
+
"Strings",
|
71
|
+
"Filtering"
|
65
72
|
]
|
66
73
|
},
|
67
74
|
{
|
@@ -74,12 +81,19 @@
|
|
74
81
|
"slug": "phone-number",
|
75
82
|
"difficulty": 1,
|
76
83
|
"topics": [
|
84
|
+
"Optional values",
|
85
|
+
"Strings",
|
86
|
+
"Parsing",
|
87
|
+
"Transforming"
|
77
88
|
]
|
78
89
|
},
|
79
90
|
{
|
80
91
|
"slug": "grade-school",
|
81
92
|
"difficulty": 1,
|
82
93
|
"topics": [
|
94
|
+
"Maps",
|
95
|
+
"Sequences",
|
96
|
+
"Sorting"
|
83
97
|
]
|
84
98
|
},
|
85
99
|
{
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import org.scalatest._
|
2
2
|
|
3
|
-
class
|
3
|
+
class AnagramTest extends FlatSpec with Matchers {
|
4
4
|
it should "detect no matches" in {
|
5
5
|
val detector = new Anagram("diaper")
|
6
6
|
val anagrams = detector.matches(Seq("hello", "world", "zombies", "pants"))
|
@@ -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,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,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,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"
|
data/tracks/swift/SETUP.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
## Setup
|
2
|
-
|
3
|
-
Go through the project setup instructions for Xcode using Swift:
|
4
|
-
|
5
|
-
http://exercism.io/languages/swift
|
6
|
-
|
1
|
+
## Setup
|
2
|
+
|
3
|
+
Go through the project setup instructions for Xcode using Swift:
|
4
|
+
|
5
|
+
http://exercism.io/languages/swift
|
6
|
+
|
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.6.
|
4
|
+
version: 2.0.6.21
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Katrina Owen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01-
|
11
|
+
date: 2017-01-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyzip
|
@@ -4024,6 +4024,12 @@ files:
|
|
4024
4024
|
- tracks/julia/docs/RESOURCES.md
|
4025
4025
|
- tracks/julia/docs/TESTS.md
|
4026
4026
|
- tracks/julia/exercises/.keep
|
4027
|
+
- tracks/julia/exercises/anagram/anagram.jl
|
4028
|
+
- tracks/julia/exercises/anagram/example.jl
|
4029
|
+
- tracks/julia/exercises/anagram/runtests.jl
|
4030
|
+
- tracks/julia/exercises/leap/example.jl
|
4031
|
+
- tracks/julia/exercises/leap/leap.jl
|
4032
|
+
- tracks/julia/exercises/leap/runtests.jl
|
4027
4033
|
- tracks/julia/img/.keep
|
4028
4034
|
- tracks/julia/runtests.jl
|
4029
4035
|
- tracks/kotlin/.git
|
@@ -5135,6 +5141,7 @@ files:
|
|
5135
5141
|
- tracks/ocaml/tools/test-generator/src/canonical_data_checker.ml
|
5136
5142
|
- tracks/ocaml/tools/test-generator/src/codegen.ml
|
5137
5143
|
- tracks/ocaml/tools/test-generator/src/controller.ml
|
5144
|
+
- tracks/ocaml/tools/test-generator/src/files.ml
|
5138
5145
|
- tracks/ocaml/tools/test-generator/src/model.ml
|
5139
5146
|
- tracks/ocaml/tools/test-generator/src/parser.ml
|
5140
5147
|
- tracks/ocaml/tools/test-generator/src/special_cases.ml
|