trackler 2.2.1.75 → 2.2.1.76
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/problem-specifications/exercises/alphametics/canonical-data.json +18 -1
- data/problem-specifications/exercises/anagram/canonical-data.json +72 -39
- data/problem-specifications/exercises/binary/canonical-data.json +47 -17
- data/tracks/clojure/exercises/beer-song/src/beer_song.clj +11 -0
- data/tracks/erlang/config.json +10 -0
- data/tracks/erlang/exercises/raindrops/README.md +67 -0
- data/tracks/erlang/exercises/raindrops/rebar.config +30 -0
- data/tracks/erlang/exercises/raindrops/src/example.erl +30 -0
- data/tracks/erlang/exercises/raindrops/src/raindrops.app.src +9 -0
- data/tracks/erlang/exercises/raindrops/src/raindrops.erl +8 -0
- data/tracks/erlang/exercises/raindrops/test/raindrops_tests.erl +50 -0
- data/tracks/fsharp/exercises/bob/BobTest.fs +2 -2
- data/tracks/fsharp/exercises/bob/Example.fs +10 -4
- data/tracks/fsharp/exercises/book-store/BookStoreTest.fs +5 -1
- data/tracks/fsharp/exercises/rna-transcription/RnaTranscriptionTest.fs +1 -13
- data/tracks/fsharp/generators/CanonicalData.fs +14 -7
- data/tracks/fsharp/generators/Exercise.fs +84 -18
- data/tracks/fsharp/generators/Generators.fs +65 -62
- data/tracks/fsharp/generators/Generators.fsproj +0 -4
- data/tracks/fsharp/generators/Options.fs +51 -17
- data/tracks/fsharp/generators/Program.fs +34 -7
- data/tracks/fsharp/generators/Rendering.fs +2 -1
- data/tracks/go/config.json +11 -0
- data/tracks/go/exercises/reverse-string/.meta/gen.go +52 -0
- data/tracks/go/exercises/reverse-string/README.md +31 -0
- data/tracks/go/exercises/reverse-string/cases_test.go +37 -0
- data/tracks/go/exercises/reverse-string/example.go +10 -0
- data/tracks/go/exercises/reverse-string/reverse_string_test.go +25 -0
- data/tracks/haskell/exercises/bob/README.md +2 -0
- data/tracks/haskell/exercises/bob/examples/success-standard/src/Bob.hs +7 -3
- data/tracks/haskell/exercises/bob/package.yaml +1 -1
- data/tracks/haskell/exercises/bob/test/Tests.hs +1 -1
- data/tracks/haskell/exercises/isbn-verifier/README.md +25 -20
- data/tracks/haskell/exercises/pov/README.md +0 -2
- data/tracks/haskell/exercises/secret-handshake/README.md +1 -1
- data/tracks/haskell/exercises/simple-cipher/README.md +4 -6
- data/tracks/java/config.json +12 -0
- data/tracks/java/exercises/beer-song/README.md +1 -1
- data/tracks/java/exercises/house/README.md +1 -1
- data/tracks/java/exercises/isbn-verifier/README.md +27 -21
- data/tracks/java/exercises/kindergarten-garden/README.md +3 -3
- data/tracks/java/exercises/meetup/README.md +16 -12
- data/tracks/java/exercises/nucleotide-count/README.md +2 -2
- data/tracks/java/exercises/palindrome-products/README.md +1 -1
- data/tracks/java/exercises/parallel-letter-frequency/.meta/HINTS.md +3 -0
- data/tracks/java/exercises/parallel-letter-frequency/.meta/src/reference/java/ParallelLetterFrequency.java +45 -0
- data/tracks/java/exercises/parallel-letter-frequency/README.md +30 -0
- data/tracks/java/exercises/parallel-letter-frequency/build.gradle +18 -0
- data/tracks/java/exercises/parallel-letter-frequency/src/main/java/.keep +0 -0
- data/tracks/java/exercises/parallel-letter-frequency/src/test/java/ParallelLetterFrequencyTest.java +235 -0
- data/tracks/java/exercises/pig-latin/README.md +1 -0
- data/tracks/java/exercises/protein-translation/README.md +4 -2
- data/tracks/java/exercises/rectangles/README.md +9 -9
- data/tracks/java/exercises/settings.gradle +1 -0
- data/tracks/java/exercises/simple-cipher/README.md +4 -6
- data/tracks/java/exercises/sum-of-multiples/README.md +3 -3
- data/tracks/objective-c/config.json +11 -0
- data/tracks/objective-c/exercises/two-fer/TwoFerExample.h +15 -0
- data/tracks/objective-c/exercises/two-fer/TwoFerExample.m +21 -0
- data/tracks/objective-c/exercises/two-fer/TwoFerTest.m +31 -0
- data/tracks/objective-c/xcodeProject/ObjectiveC.xcodeproj/project.pbxproj +18 -0
- data/tracks/rust/exercises/bob/Cargo.toml +1 -1
- data/tracks/rust/exercises/bob/README.md +2 -0
- data/tracks/rust/exercises/bob/example.rs +1 -0
- data/tracks/rust/exercises/bob/tests/bob.rs +1 -1
- data/tracks/rust/exercises/isbn-verifier/README.md +25 -20
- data/tracks/typescript/config.json +13 -0
- data/tracks/typescript/exercises/atbash-cipher/README.md +60 -0
- data/tracks/typescript/exercises/atbash-cipher/atbash-cipher.example.ts +32 -0
- data/tracks/typescript/exercises/atbash-cipher/atbash-cipher.test.ts +73 -0
- data/tracks/typescript/exercises/atbash-cipher/atbash-cipher.ts +0 -0
- data/tracks/typescript/exercises/atbash-cipher/package.json +36 -0
- data/tracks/typescript/exercises/atbash-cipher/tsconfig.json +22 -0
- data/tracks/typescript/exercises/atbash-cipher/tslint.json +127 -0
- data/tracks/typescript/exercises/atbash-cipher/yarn.lock +2624 -0
- metadata +31 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 79799be12a69e3d773b971560233cbce02723e65
|
4
|
+
data.tar.gz: 512eaf42a3697418bbf9b0b872cd7b66d6142918
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae84f0368ddd212bbc239e085a287c0eed76361561cbc05b755f1c26b86a4e8cd3b8970ee516d78648a0690b85d506cbea78537a181c5ed6101889b8f4386fc2
|
7
|
+
data.tar.gz: fc4764ba08a8a4b6abf351ef4200fae2ef9790334baad16274f77540c99396b736dc91626b225e27964d8c59bce6be6ba182d3134bedbc2597f486f7b5cb6985
|
data/lib/trackler/version.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"exercise": "alphametics",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.1.0",
|
4
4
|
"cases": [
|
5
5
|
{
|
6
6
|
"description": "Solve the alphametics puzzle",
|
@@ -96,6 +96,23 @@
|
|
96
96
|
"S": 6,
|
97
97
|
"T": 9
|
98
98
|
}
|
99
|
+
},
|
100
|
+
{
|
101
|
+
"description": "puzzle with ten letters and 41 addends",
|
102
|
+
"property": "solve",
|
103
|
+
"puzzle": "THIS + A + FIRE + THEREFORE + FOR + ALL + HISTORIES + I + TELL + A + TALE + THAT + FALSIFIES + ITS + TITLE + TIS + A + LIE + THE + TALE + OF + THE + LAST + FIRE + HORSES + LATE + AFTER + THE + FIRST + FATHERS + FORESEE + THE + HORRORS + THE + LAST + FREE + TROLL + TERRIFIES + THE + HORSES + OF + FIRE + THE + TROLL + RESTS + AT + THE + HOLE + OF + LOSSES + IT + IS + THERE + THAT + SHE + STORES + ROLES + OF + LEATHERS + AFTER + SHE + SATISFIES + HER + HATE + OFF + THOSE + FEARS + A + TASTE + RISES + AS + SHE + HEARS + THE + LEAST + FAR + HORSE + THOSE + FAST + HORSES + THAT + FIRST + HEAR + THE + TROLL + FLEE + OFF + TO + THE + FOREST + THE + HORSES + THAT + ALERTS + RAISE + THE + STARES + OF + THE + OTHERS + AS + THE + TROLL + ASSAILS + AT + THE + TOTAL + SHIFT + HER + TEETH + TEAR + HOOF + OFF + TORSO + AS + THE + LAST + HORSE + FORFEITS + ITS + LIFE + THE + FIRST + FATHERS + HEAR + OF + THE + HORRORS + THEIR + FEARS + THAT + THE + FIRES + FOR + THEIR + FEASTS + ARREST + AS + THE + FIRST + FATHERS + RESETTLE + THE + LAST + OF + THE + FIRE + HORSES + THE + LAST + TROLL + HARASSES + THE + FOREST + HEART + FREE + AT + LAST + OF + THE + LAST + TROLL + ALL + OFFER + THEIR + FIRE + HEAT + TO + THE + ASSISTERS + FAR + OFF + THE + TROLL + FASTS + ITS + LIFE + SHORTER + AS + STARS + RISE + THE + HORSES + REST + SAFE + AFTER + ALL + SHARE + HOT + FISH + AS + THEIR + AFFILIATES + TAILOR + A + ROOFS + FOR + THEIR + SAFE == FORTRESSES",
|
104
|
+
"expected": {
|
105
|
+
"A": 1,
|
106
|
+
"E": 0,
|
107
|
+
"F": 5,
|
108
|
+
"H": 8,
|
109
|
+
"I": 7,
|
110
|
+
"L": 2,
|
111
|
+
"O": 6,
|
112
|
+
"R": 3,
|
113
|
+
"S": 4,
|
114
|
+
"T": 9
|
115
|
+
}
|
99
116
|
}
|
100
117
|
]
|
101
118
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"exercise": "anagram",
|
3
|
-
"version": "1.0
|
3
|
+
"version": "1.1.0",
|
4
4
|
"comments": [
|
5
5
|
"The string argument cases possible matches are passed in as",
|
6
6
|
"individual arguments rather than arrays. Languages can include",
|
@@ -11,119 +11,152 @@
|
|
11
11
|
{
|
12
12
|
"description": "no matches",
|
13
13
|
"property": "anagrams",
|
14
|
-
"
|
15
|
-
|
14
|
+
"input": {
|
15
|
+
"subject": "diaper",
|
16
|
+
"candidates": ["hello", "world", "zombies", "pants"]
|
17
|
+
},
|
16
18
|
"expected": []
|
17
19
|
},
|
18
20
|
{
|
19
21
|
"description": "detects simple anagram",
|
20
22
|
"property": "anagrams",
|
21
|
-
"
|
22
|
-
|
23
|
+
"input": {
|
24
|
+
"subject": "ant",
|
25
|
+
"candidates": ["tan", "stand", "at"]
|
26
|
+
},
|
23
27
|
"expected": ["tan"]
|
24
28
|
},
|
25
29
|
{
|
26
30
|
"description": "does not detect false positives",
|
27
31
|
"property": "anagrams",
|
28
|
-
"
|
29
|
-
|
32
|
+
"input": {
|
33
|
+
"subject": "galea",
|
34
|
+
"candidates": ["eagle"]
|
35
|
+
},
|
30
36
|
"expected": []
|
31
37
|
},
|
32
38
|
{
|
33
39
|
"description": "detects two anagrams",
|
34
40
|
"property": "anagrams",
|
35
|
-
"
|
36
|
-
|
41
|
+
"input": {
|
42
|
+
"subject": "master",
|
43
|
+
"candidates": ["stream", "pigeon", "maters"]
|
44
|
+
},
|
37
45
|
"expected": ["stream", "maters"]
|
38
46
|
},
|
39
47
|
{
|
40
48
|
"description": "does not detect anagram subsets",
|
41
49
|
"property": "anagrams",
|
42
|
-
"
|
43
|
-
|
50
|
+
"input": {
|
51
|
+
"subject": "good",
|
52
|
+
"candidates": ["dog", "goody"]
|
53
|
+
},
|
44
54
|
"expected": []
|
45
55
|
},
|
46
56
|
{
|
47
57
|
"description": "detects anagram",
|
48
58
|
"property": "anagrams",
|
49
|
-
"
|
50
|
-
|
59
|
+
"input": {
|
60
|
+
"subject": "listen",
|
61
|
+
"candidates": ["enlists", "google", "inlets", "banana"]
|
62
|
+
},
|
51
63
|
"expected": ["inlets"]
|
52
64
|
},
|
53
65
|
{
|
54
66
|
"description": "detects three anagrams",
|
55
67
|
"property": "anagrams",
|
56
|
-
"
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
68
|
+
"input": {
|
69
|
+
"subject": "allergy",
|
70
|
+
"candidates": [
|
71
|
+
"gallery",
|
72
|
+
"ballerina",
|
73
|
+
"regally",
|
74
|
+
"clergy",
|
75
|
+
"largely",
|
76
|
+
"leading"
|
77
|
+
]
|
78
|
+
},
|
64
79
|
"expected": ["gallery", "regally", "largely"]
|
65
80
|
},
|
66
81
|
{
|
67
82
|
"description": "does not detect identical words",
|
68
83
|
"property": "anagrams",
|
69
|
-
"
|
70
|
-
|
84
|
+
"input": {
|
85
|
+
"subject": "corn",
|
86
|
+
"candidates": ["corn", "dark", "Corn", "rank", "CORN", "cron", "park"]
|
87
|
+
},
|
71
88
|
"expected": ["cron"]
|
72
89
|
},
|
73
90
|
{
|
74
91
|
"description": "does not detect non-anagrams with identical checksum",
|
75
92
|
"property": "anagrams",
|
76
|
-
"
|
77
|
-
|
93
|
+
"input": {
|
94
|
+
"subject": "mass",
|
95
|
+
"candidates": ["last"]
|
96
|
+
},
|
78
97
|
"expected": []
|
79
98
|
},
|
80
99
|
{
|
81
100
|
"description": "detects anagrams case-insensitively",
|
82
101
|
"property": "anagrams",
|
83
|
-
"
|
84
|
-
|
102
|
+
"input": {
|
103
|
+
"subject": "Orchestra",
|
104
|
+
"candidates": ["cashregister", "Carthorse", "radishes"]
|
105
|
+
},
|
85
106
|
"expected": ["Carthorse"]
|
86
107
|
},
|
87
108
|
{
|
88
109
|
"description": "detects anagrams using case-insensitive subject",
|
89
110
|
"property": "anagrams",
|
90
|
-
"
|
91
|
-
|
111
|
+
"input": {
|
112
|
+
"subject": "Orchestra",
|
113
|
+
"candidates": ["cashregister", "carthorse", "radishes"]
|
114
|
+
},
|
92
115
|
"expected": ["carthorse"]
|
93
116
|
},
|
94
117
|
{
|
95
118
|
"description": "detects anagrams using case-insensitive possible matches",
|
96
119
|
"property": "anagrams",
|
97
|
-
"
|
98
|
-
|
120
|
+
"input": {
|
121
|
+
"subject": "orchestra",
|
122
|
+
"candidates": ["cashregister", "Carthorse", "radishes"]
|
123
|
+
},
|
99
124
|
"expected": ["Carthorse"]
|
100
125
|
},
|
101
126
|
{
|
102
127
|
"description": "does not detect a word as its own anagram",
|
103
128
|
"property": "anagrams",
|
104
|
-
"
|
105
|
-
|
129
|
+
"input": {
|
130
|
+
"subject": "banana",
|
131
|
+
"candidates": ["Banana"]
|
132
|
+
},
|
106
133
|
"expected": []
|
107
134
|
},
|
108
135
|
{
|
109
136
|
"description": "does not detect a anagram if the original word is repeated",
|
110
137
|
"property": "anagrams",
|
111
|
-
"
|
112
|
-
|
138
|
+
"input": {
|
139
|
+
"subject": "go",
|
140
|
+
"candidates": ["go Go GO"]
|
141
|
+
},
|
113
142
|
"expected": []
|
114
143
|
},
|
115
144
|
{
|
116
145
|
"description": "anagrams must use all letters exactly once",
|
117
146
|
"property": "anagrams",
|
118
|
-
"
|
119
|
-
|
147
|
+
"input": {
|
148
|
+
"subject": "tapper",
|
149
|
+
"candidates": ["patter"]
|
150
|
+
},
|
120
151
|
"expected": []
|
121
152
|
},
|
122
153
|
{
|
123
154
|
"description": "capital word is not own anagram",
|
124
155
|
"property": "anagrams",
|
125
|
-
"
|
126
|
-
|
156
|
+
"input": {
|
157
|
+
"subject": "BANANA",
|
158
|
+
"candidates": ["Banana"]
|
159
|
+
},
|
127
160
|
"expected": []
|
128
161
|
}
|
129
162
|
]
|
@@ -1,95 +1,125 @@
|
|
1
1
|
{
|
2
2
|
"exercise": "binary",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.1.0",
|
4
4
|
"cases": [
|
5
5
|
{
|
6
6
|
"description": "binary 0 is decimal 0",
|
7
7
|
"property": "decimal",
|
8
|
-
"
|
8
|
+
"input": {
|
9
|
+
"binary": "0"
|
10
|
+
},
|
9
11
|
"expected": 0
|
10
12
|
},
|
11
13
|
{
|
12
14
|
"description": "binary 1 is decimal 1",
|
13
15
|
"property": "decimal",
|
14
|
-
"
|
16
|
+
"input": {
|
17
|
+
"binary": "1"
|
18
|
+
},
|
15
19
|
"expected": 1
|
16
20
|
},
|
17
21
|
{
|
18
22
|
"description": "binary 10 is decimal 2",
|
19
23
|
"property": "decimal",
|
20
|
-
"
|
24
|
+
"input": {
|
25
|
+
"binary": "10"
|
26
|
+
},
|
21
27
|
"expected": 2
|
22
28
|
},
|
23
29
|
{
|
24
30
|
"description": "binary 11 is decimal 3",
|
25
31
|
"property": "decimal",
|
26
|
-
"
|
32
|
+
"input": {
|
33
|
+
"binary": "11"
|
34
|
+
},
|
27
35
|
"expected": 3
|
28
36
|
},
|
29
37
|
{
|
30
38
|
"description": "binary 100 is decimal 4",
|
31
39
|
"property": "decimal",
|
32
|
-
"
|
40
|
+
"input": {
|
41
|
+
"binary": "100"
|
42
|
+
},
|
33
43
|
"expected": 4
|
34
44
|
},
|
35
45
|
{
|
36
46
|
"description": "binary 1001 is decimal 9",
|
37
47
|
"property": "decimal",
|
38
|
-
"
|
48
|
+
"input": {
|
49
|
+
"binary": "1001"
|
50
|
+
},
|
39
51
|
"expected": 9
|
40
52
|
},
|
41
53
|
{
|
42
54
|
"description": "binary 11010 is decimal 26",
|
43
55
|
"property": "decimal",
|
44
|
-
"
|
56
|
+
"input": {
|
57
|
+
"binary": "11010"
|
58
|
+
},
|
45
59
|
"expected": 26
|
46
60
|
},
|
47
61
|
{
|
48
62
|
"description": "binary 10001101000 is decimal 1128",
|
49
63
|
"property": "decimal",
|
50
|
-
"
|
64
|
+
"input": {
|
65
|
+
"binary": "10001101000"
|
66
|
+
},
|
51
67
|
"expected": 1128
|
52
68
|
},
|
53
69
|
{
|
54
70
|
"description": "binary ignores leading zeros",
|
55
71
|
"property": "decimal",
|
56
|
-
"
|
72
|
+
"input": {
|
73
|
+
"binary": "000011111"
|
74
|
+
},
|
57
75
|
"expected": 31
|
58
76
|
},
|
59
77
|
{
|
60
78
|
"description": "2 is not a valid binary digit",
|
61
79
|
"property": "decimal",
|
62
|
-
"
|
80
|
+
"input": {
|
81
|
+
"binary": "2"
|
82
|
+
},
|
63
83
|
"expected": null
|
64
84
|
},
|
65
85
|
{
|
66
86
|
"description": "a number containing a non-binary digit is invalid",
|
67
87
|
"property": "decimal",
|
68
|
-
"
|
88
|
+
"input": {
|
89
|
+
"binary": "01201"
|
90
|
+
},
|
69
91
|
"expected": null
|
70
92
|
},
|
71
93
|
{
|
72
94
|
"description": "a number with trailing non-binary characters is invalid",
|
73
95
|
"property": "decimal",
|
74
|
-
"
|
96
|
+
"input": {
|
97
|
+
"binary": "10nope"
|
98
|
+
},
|
75
99
|
"expected": null
|
76
100
|
},
|
77
101
|
{
|
78
102
|
"description": "a number with leading non-binary characters is invalid",
|
79
103
|
"property": "decimal",
|
80
|
-
"
|
104
|
+
"input": {
|
105
|
+
"binary": "nope10"
|
106
|
+
},
|
81
107
|
"expected": null
|
82
108
|
},
|
83
109
|
{
|
84
110
|
"description": "a number with internal non-binary characters is invalid",
|
85
111
|
"property": "decimal",
|
86
|
-
"
|
112
|
+
"input": {
|
113
|
+
"binary": "10nope10"
|
114
|
+
},
|
87
115
|
"expected": null
|
88
116
|
},
|
89
117
|
{
|
90
|
-
"description": "a number and a word whitespace
|
118
|
+
"description": "a number and a word whitespace separated is invalid",
|
91
119
|
"property": "decimal",
|
92
|
-
"
|
120
|
+
"input": {
|
121
|
+
"binary": "001 nope"
|
122
|
+
},
|
93
123
|
"expected": null
|
94
124
|
}
|
95
125
|
]
|
data/tracks/erlang/config.json
CHANGED
@@ -42,6 +42,16 @@
|
|
42
42
|
|
43
43
|
]
|
44
44
|
},
|
45
|
+
{
|
46
|
+
"uuid": "63259a44-cdec-4e25-ab0e-eddc6f9a9ca1",
|
47
|
+
"slug": "raindrops",
|
48
|
+
"core": false,
|
49
|
+
"unlocked_by": null,
|
50
|
+
"difficulty": 1,
|
51
|
+
"topics": [
|
52
|
+
|
53
|
+
]
|
54
|
+
},
|
45
55
|
{
|
46
56
|
"uuid": "8e9a98b1-bf4f-4c94-a258-a8618cc37f55",
|
47
57
|
"slug": "rna-transcription",
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# Raindrops
|
2
|
+
|
3
|
+
Convert a number to a string, the contents of which depend on the number's factors.
|
4
|
+
|
5
|
+
- If the number has 3 as a factor, output 'Pling'.
|
6
|
+
- If the number has 5 as a factor, output 'Plang'.
|
7
|
+
- If the number has 7 as a factor, output 'Plong'.
|
8
|
+
- If the number does not have 3, 5, or 7 as a factor,
|
9
|
+
just pass the number's digits straight through.
|
10
|
+
|
11
|
+
## Examples
|
12
|
+
|
13
|
+
- 28's factors are 1, 2, 4, **7**, 14, 28.
|
14
|
+
- In raindrop-speak, this would be a simple "Plong".
|
15
|
+
- 30's factors are 1, 2, **3**, **5**, 6, 10, 15, 30.
|
16
|
+
- In raindrop-speak, this would be a "PlingPlang".
|
17
|
+
- 34 has four factors: 1, 2, 17, and 34.
|
18
|
+
- In raindrop-speak, this would be "34".
|
19
|
+
|
20
|
+
## Running tests
|
21
|
+
|
22
|
+
In order to run the tests, issue the following command from the exercise
|
23
|
+
directory:
|
24
|
+
|
25
|
+
For running the tests provided, `rebar3` is used as it is the official build and
|
26
|
+
dependency management tool for erlang now. Please refer to [the tracks installation
|
27
|
+
instructions](http://exercism.io/languages/erlang/installation) on how to do that.
|
28
|
+
|
29
|
+
In order to run the tests, you can issue the following command from the exercise
|
30
|
+
directory.
|
31
|
+
|
32
|
+
```bash
|
33
|
+
$ rebar3 eunit
|
34
|
+
```
|
35
|
+
|
36
|
+
### Test versioning
|
37
|
+
|
38
|
+
Each problem defines a macro `TEST_VERSION` in the test file and
|
39
|
+
verifies that the solution defines and exports a function `test_version`
|
40
|
+
returning that same value.
|
41
|
+
|
42
|
+
To make tests pass, add the following to your solution:
|
43
|
+
|
44
|
+
```erlang
|
45
|
+
-export([test_version/0]).
|
46
|
+
|
47
|
+
test_version() ->
|
48
|
+
1.
|
49
|
+
```
|
50
|
+
|
51
|
+
The benefit of this is that reviewers can see against which test version
|
52
|
+
an iteration was written if, for example, a previously posted solution
|
53
|
+
does not solve the current problem or passes current tests.
|
54
|
+
|
55
|
+
## Questions?
|
56
|
+
|
57
|
+
For detailed information about the Erlang track, please refer to the
|
58
|
+
[help page](http://exercism.io/languages/erlang) on the Exercism site.
|
59
|
+
This covers the basic information on setting up the development
|
60
|
+
environment expected by the exercises.
|
61
|
+
|
62
|
+
## Source
|
63
|
+
|
64
|
+
A variation on a famous interview question intended to weed out potential candidates from [JumpstartLab](http://jumpstartlab.com).
|
65
|
+
|
66
|
+
## Submitting Incomplete Solutions
|
67
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|