trackler 2.2.1.75 → 2.2.1.76
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/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.
|