trackler 2.2.1.170 → 2.2.1.171
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/simple-cipher/canonical-data.json +5 -4
- data/tracks/cfml/config.json +1 -0
- data/tracks/coffeescript/config.json +43 -87
- data/tracks/coffeescript/config/maintainers.json +8 -2
- data/tracks/common-lisp/config.json +1 -0
- data/tracks/coq/config.json +7 -15
- data/tracks/coq/config/maintainers.json +5 -5
- data/tracks/crystal/config.json +51 -99
- data/tracks/crystal/config/maintainers.json +8 -8
- data/tracks/d/config.json +58 -60
- data/tracks/d/config/maintainers.json +8 -8
- data/tracks/delphi/config.json +12 -0
- data/tracks/delphi/exercises/isbn-verifier/uTestISBNVerifier.pas +30 -3
- data/tracks/delphi/exercises/word-count/README.md +39 -0
- data/tracks/delphi/exercises/word-count/WordCount.dpr +60 -0
- data/tracks/delphi/exercises/word-count/uWordCountExample.pas +67 -0
- data/tracks/delphi/exercises/word-count/uWordCountTests.pas +247 -0
- data/tracks/elisp/config.json +1 -0
- data/tracks/erlang/config.json +1 -1
- data/tracks/fortran/config.json +16 -32
- data/tracks/fortran/config/maintainers.json +5 -5
- data/tracks/go/config.json +1 -0
- data/tracks/go/exercises/bank-account/bank_account_test.go +3 -3
- data/tracks/go/exercises/parallel-letter-frequency/parallel_letter_frequency_test.go +17 -1
- data/tracks/groovy/config.json +89 -89
- data/tracks/groovy/config/maintainers.json +6 -6
- data/tracks/haxe/config.json +17 -17
- data/tracks/haxe/config/maintainers.json +1 -1
- data/tracks/java/scripts/insert-ignores.sh +33 -11
- data/tracks/julia/config.json +1 -0
- data/tracks/lua/config.json +1 -0
- data/tracks/lua/docs/ABOUT.md +7 -3
- data/tracks/nim/config.json +14 -2
- data/tracks/nim/exercises/sum-of-multiples/README.md +15 -0
- data/tracks/nim/exercises/sum-of-multiples/example.nim +6 -0
- data/tracks/nim/exercises/sum-of-multiples/sum_of_multiples_test.nim +44 -0
- data/tracks/objective-c/config.json +1 -0
- data/tracks/ocaml/config.json +1 -0
- data/tracks/perl5/config.json +138 -258
- data/tracks/perl5/config/maintainers.json +8 -8
- data/tracks/pharo/.travis.yml +1 -1
- data/tracks/pharo/config.json +3 -4
- data/tracks/pharo/config/maintainers.json +1 -1
- data/tracks/pharo/exercises/.keep +0 -0
- data/tracks/php/config.json +191 -211
- data/tracks/php/config/maintainers.json +11 -11
- data/tracks/plsql/config.json +49 -49
- data/tracks/plsql/config/maintainers.json +5 -5
- data/tracks/pony/config.json +27 -26
- data/tracks/pony/config/maintainers.json +5 -5
- data/tracks/prolog/config.json +1 -0
- data/tracks/purescript/config.json +49 -51
- data/tracks/purescript/config/maintainers.json +11 -11
- data/tracks/racket/config.json +1 -0
- data/tracks/scala/config.json +1 -0
- data/tracks/scheme/config.json +1 -0
- data/tracks/swift/config.json +1 -0
- data/tracks/typescript/config.json +1 -0
- data/tracks/vbnet/config.json +16 -32
- data/tracks/vbnet/config/maintainers.json +5 -5
- data/tracks/vimscript/config.json +1 -0
- metadata +10 -2
@@ -1,25 +1,25 @@
|
|
1
1
|
{
|
2
|
+
"docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md",
|
2
3
|
"maintainers": [
|
3
4
|
{
|
4
5
|
"github_username": "bmulvihill",
|
5
|
-
"show_on_website": false,
|
6
6
|
"alumnus": false,
|
7
|
+
"show_on_website": false,
|
7
8
|
"name": null,
|
8
|
-
"bio": null,
|
9
9
|
"link_text": null,
|
10
10
|
"link_url": null,
|
11
|
-
"avatar_url": null
|
11
|
+
"avatar_url": null,
|
12
|
+
"bio": null
|
12
13
|
},
|
13
14
|
{
|
14
15
|
"github_username": "mhelmetag",
|
15
|
-
"show_on_website": false,
|
16
16
|
"alumnus": false,
|
17
|
+
"show_on_website": false,
|
17
18
|
"name": null,
|
18
|
-
"bio": null,
|
19
19
|
"link_text": null,
|
20
20
|
"link_url": null,
|
21
|
-
"avatar_url": null
|
21
|
+
"avatar_url": null,
|
22
|
+
"bio": null
|
22
23
|
}
|
23
|
-
]
|
24
|
-
"docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md"
|
24
|
+
]
|
25
25
|
}
|
data/tracks/d/config.json
CHANGED
@@ -1,218 +1,216 @@
|
|
1
1
|
{
|
2
2
|
"language": "D",
|
3
|
-
"checklist_issue": 6,
|
4
3
|
"active": true,
|
4
|
+
"blurb": "",
|
5
|
+
"checklist_issue": 6,
|
5
6
|
"test_pattern": "source.*[.]d",
|
6
7
|
"exercises": [
|
7
8
|
{
|
8
|
-
"uuid": "a91c2216-9331-4485-ae4b-190ee9e2a7f8",
|
9
9
|
"slug": "hello-world",
|
10
|
+
"uuid": "a91c2216-9331-4485-ae4b-190ee9e2a7f8",
|
10
11
|
"core": false,
|
11
12
|
"unlocked_by": null,
|
12
13
|
"difficulty": 1,
|
13
14
|
"topics": [
|
14
|
-
"
|
15
|
+
"language_basics"
|
15
16
|
]
|
16
17
|
},
|
17
18
|
{
|
18
|
-
"uuid": "9f52d6a7-1002-4614-afc3-cce03187c59b",
|
19
19
|
"slug": "leap",
|
20
|
+
"uuid": "9f52d6a7-1002-4614-afc3-cce03187c59b",
|
20
21
|
"core": false,
|
21
22
|
"unlocked_by": null,
|
22
23
|
"difficulty": 1,
|
23
24
|
"topics": [
|
24
|
-
"
|
25
|
+
"language_basics"
|
25
26
|
]
|
26
27
|
},
|
27
28
|
{
|
28
|
-
"uuid": "8c976f92-fcfa-45f0-9bd1-2353822e51e8",
|
29
29
|
"slug": "gigasecond",
|
30
|
+
"uuid": "8c976f92-fcfa-45f0-9bd1-2353822e51e8",
|
30
31
|
"core": false,
|
31
32
|
"unlocked_by": null,
|
32
33
|
"difficulty": 1,
|
33
34
|
"topics": [
|
34
|
-
"
|
35
|
+
"language_basics",
|
35
36
|
"time"
|
36
37
|
]
|
37
38
|
},
|
38
39
|
{
|
39
|
-
"uuid": "208f9a34-bdf2-4c2b-b102-f0ef1a5d04fe",
|
40
40
|
"slug": "rna-transcription",
|
41
|
+
"uuid": "208f9a34-bdf2-4c2b-b102-f0ef1a5d04fe",
|
41
42
|
"core": false,
|
42
43
|
"unlocked_by": null,
|
43
44
|
"difficulty": 2,
|
44
45
|
"topics": [
|
45
|
-
"
|
46
|
-
"
|
47
|
-
"
|
46
|
+
"control_flow_foreach",
|
47
|
+
"error_handling",
|
48
|
+
"string_manipulation"
|
48
49
|
]
|
49
50
|
},
|
50
51
|
{
|
51
|
-
"uuid": "f6d21f86-b4d3-4dec-b830-8e19e1018548",
|
52
52
|
"slug": "raindrops",
|
53
|
+
"uuid": "f6d21f86-b4d3-4dec-b830-8e19e1018548",
|
53
54
|
"core": false,
|
54
55
|
"unlocked_by": null,
|
55
56
|
"difficulty": 1,
|
56
57
|
"topics": [
|
57
|
-
"
|
58
|
-
"
|
58
|
+
"control_flow_if_statements",
|
59
|
+
"language_basics"
|
59
60
|
]
|
60
61
|
},
|
61
62
|
{
|
62
|
-
"uuid": "99ee69a6-2c0f-4c7c-86f9-bee1633b4f51",
|
63
63
|
"slug": "bob",
|
64
|
+
"uuid": "99ee69a6-2c0f-4c7c-86f9-bee1633b4f51",
|
64
65
|
"core": false,
|
65
66
|
"unlocked_by": null,
|
66
67
|
"difficulty": 2,
|
67
68
|
"topics": [
|
68
|
-
"
|
69
|
-
"
|
69
|
+
"control_flow_if_statements",
|
70
|
+
"string_manipulation"
|
70
71
|
]
|
71
72
|
},
|
72
73
|
{
|
73
|
-
"uuid": "dc631076-1eb8-4120-bd8f-dccf33df9a3f",
|
74
74
|
"slug": "etl",
|
75
|
+
"uuid": "dc631076-1eb8-4120-bd8f-dccf33df9a3f",
|
75
76
|
"core": false,
|
76
77
|
"unlocked_by": null,
|
77
78
|
"difficulty": 2,
|
78
79
|
"topics": [
|
79
|
-
"
|
80
|
-
"
|
81
|
-
"
|
80
|
+
"associative_arrays",
|
81
|
+
"control_flow_foreach",
|
82
|
+
"string_manipulation"
|
82
83
|
]
|
83
84
|
},
|
84
85
|
{
|
85
|
-
"uuid": "87c87444-2349-40ab-a9a3-c0f0d2e200d6",
|
86
86
|
"slug": "hamming",
|
87
|
+
"uuid": "87c87444-2349-40ab-a9a3-c0f0d2e200d6",
|
87
88
|
"core": false,
|
88
89
|
"unlocked_by": null,
|
89
90
|
"difficulty": 2,
|
90
91
|
"topics": [
|
91
|
-
"
|
92
|
-
"
|
92
|
+
"control_flow_foreach",
|
93
|
+
"error_handling"
|
93
94
|
]
|
94
95
|
},
|
95
96
|
{
|
96
|
-
"uuid": "23b23ac0-62ef-4a22-b634-d64206c8a226",
|
97
97
|
"slug": "nucleotide-count",
|
98
|
+
"uuid": "23b23ac0-62ef-4a22-b634-d64206c8a226",
|
98
99
|
"core": false,
|
99
100
|
"unlocked_by": null,
|
100
101
|
"difficulty": 3,
|
101
102
|
"topics": [
|
103
|
+
"associative_arrays",
|
102
104
|
"classes",
|
103
|
-
"parsing"
|
104
|
-
"associative arrays"
|
105
|
+
"parsing"
|
105
106
|
]
|
106
107
|
},
|
107
108
|
{
|
108
|
-
"uuid": "d7dd5df3-ff36-47ee-88db-e0f974a4cb19",
|
109
109
|
"slug": "robot-name",
|
110
|
+
"uuid": "d7dd5df3-ff36-47ee-88db-e0f974a4cb19",
|
110
111
|
"core": false,
|
111
112
|
"unlocked_by": null,
|
112
113
|
"difficulty": 3,
|
113
114
|
"topics": [
|
114
115
|
"classes",
|
115
|
-
"
|
116
|
+
"random_numbers"
|
116
117
|
]
|
117
118
|
},
|
118
119
|
{
|
119
|
-
"uuid": "d6c67e30-c950-40b6-b6db-0fa6df5652af",
|
120
120
|
"slug": "difference-of-squares",
|
121
|
+
"uuid": "d6c67e30-c950-40b6-b6db-0fa6df5652af",
|
121
122
|
"core": false,
|
122
123
|
"unlocked_by": null,
|
123
124
|
"difficulty": 2,
|
124
125
|
"topics": [
|
125
|
-
"
|
126
|
-
"
|
126
|
+
"algorithms",
|
127
|
+
"control_flow_foreach",
|
127
128
|
"functional",
|
128
|
-
"
|
129
|
+
"template_metaprogramming"
|
129
130
|
]
|
130
131
|
},
|
131
132
|
{
|
132
|
-
"uuid": "5647c00e-d4be-4546-bac3-6a3e1670c2a1",
|
133
133
|
"slug": "roman-numerals",
|
134
|
+
"uuid": "5647c00e-d4be-4546-bac3-6a3e1670c2a1",
|
134
135
|
"core": false,
|
135
136
|
"unlocked_by": null,
|
136
137
|
"difficulty": 3,
|
137
138
|
"topics": [
|
138
|
-
"string manipulation",
|
139
139
|
"conversions",
|
140
|
-
"functional"
|
140
|
+
"functional",
|
141
|
+
"string_manipulation"
|
141
142
|
]
|
142
143
|
},
|
143
144
|
{
|
144
|
-
"uuid": "14c3c478-9dc1-470b-8517-35c3ceac3f47",
|
145
145
|
"slug": "series",
|
146
|
+
"uuid": "14c3c478-9dc1-470b-8517-35c3ceac3f47",
|
146
147
|
"core": false,
|
147
148
|
"unlocked_by": null,
|
148
149
|
"difficulty": 3,
|
149
150
|
"topics": [
|
150
|
-
"
|
151
|
-
"
|
151
|
+
"arrays",
|
152
|
+
"string_manipulation"
|
152
153
|
]
|
153
154
|
},
|
154
155
|
{
|
155
|
-
"uuid": "c9acd967-fc2a-4c74-b584-2572ce690e71",
|
156
156
|
"slug": "triangle",
|
157
|
+
"uuid": "c9acd967-fc2a-4c74-b584-2572ce690e71",
|
157
158
|
"core": false,
|
158
159
|
"unlocked_by": null,
|
159
160
|
"difficulty": 2,
|
160
161
|
"topics": [
|
161
|
-
"
|
162
|
-
"
|
162
|
+
"control_flow_if_statements",
|
163
|
+
"language_basics"
|
163
164
|
]
|
164
165
|
},
|
165
166
|
{
|
166
|
-
"uuid": "45afc532-3f6c-4b9e-90f6-c53a79551af1",
|
167
167
|
"slug": "crypto-square",
|
168
|
+
"uuid": "45afc532-3f6c-4b9e-90f6-c53a79551af1",
|
168
169
|
"core": false,
|
169
170
|
"unlocked_by": null,
|
170
171
|
"difficulty": 3,
|
171
172
|
"topics": [
|
172
|
-
"
|
173
|
+
"algorithms",
|
173
174
|
"classes",
|
174
|
-
"
|
175
|
+
"string_manipulation"
|
175
176
|
]
|
176
177
|
},
|
177
178
|
{
|
178
|
-
"uuid": "2ba799a8-eab9-44a0-9b31-a10e72baa38b",
|
179
179
|
"slug": "circular-buffer",
|
180
|
+
"uuid": "2ba799a8-eab9-44a0-9b31-a10e72baa38b",
|
180
181
|
"core": false,
|
181
182
|
"unlocked_by": null,
|
182
183
|
"difficulty": 4,
|
183
184
|
"topics": [
|
184
|
-
"
|
185
|
-
"
|
185
|
+
"class_templates",
|
186
|
+
"data_structures"
|
186
187
|
]
|
187
188
|
},
|
188
189
|
{
|
189
|
-
"uuid": "a4cf4571-1f97-438c-9c02-3fe7c52ee25f",
|
190
190
|
"slug": "pangram",
|
191
|
+
"uuid": "a4cf4571-1f97-438c-9c02-3fe7c52ee25f",
|
191
192
|
"core": false,
|
192
193
|
"unlocked_by": null,
|
193
194
|
"difficulty": 1,
|
194
195
|
"topics": [
|
195
|
-
"
|
196
|
-
"
|
197
|
-
"
|
196
|
+
"control_flow",
|
197
|
+
"language_basics",
|
198
|
+
"string_manipulation"
|
198
199
|
]
|
199
200
|
},
|
200
201
|
{
|
201
|
-
"uuid": "31dd1e53-2b5e-4d40-ac4c-a68fe5e6635c",
|
202
202
|
"slug": "react",
|
203
|
+
"uuid": "31dd1e53-2b5e-4d40-ac4c-a68fe5e6635c",
|
203
204
|
"core": false,
|
204
205
|
"unlocked_by": null,
|
205
206
|
"difficulty": 10,
|
206
207
|
"topics": [
|
207
|
-
"
|
208
|
+
"delegates",
|
208
209
|
"generics",
|
209
|
-
"
|
210
|
-
"
|
211
|
-
"
|
210
|
+
"higher_order_functions",
|
211
|
+
"nested_classes",
|
212
|
+
"reactive_programming"
|
212
213
|
]
|
213
214
|
}
|
214
|
-
],
|
215
|
-
"foregone": [
|
216
|
-
|
217
215
|
]
|
218
216
|
}
|
@@ -1,25 +1,25 @@
|
|
1
1
|
{
|
2
|
+
"docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md",
|
2
3
|
"maintainers": [
|
3
4
|
{
|
4
5
|
"github_username": "celavek",
|
5
|
-
"show_on_website": false,
|
6
6
|
"alumnus": false,
|
7
|
+
"show_on_website": false,
|
7
8
|
"name": null,
|
8
|
-
"bio": null,
|
9
9
|
"link_text": null,
|
10
10
|
"link_url": null,
|
11
|
-
"avatar_url": null
|
11
|
+
"avatar_url": null,
|
12
|
+
"bio": null
|
12
13
|
},
|
13
14
|
{
|
14
15
|
"github_username": "tmccombs",
|
15
|
-
"show_on_website": false,
|
16
16
|
"alumnus": false,
|
17
|
+
"show_on_website": false,
|
17
18
|
"name": null,
|
18
|
-
"bio": null,
|
19
19
|
"link_text": null,
|
20
20
|
"link_url": null,
|
21
|
-
"avatar_url": null
|
21
|
+
"avatar_url": null,
|
22
|
+
"bio": null
|
22
23
|
}
|
23
|
-
]
|
24
|
-
"docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md"
|
24
|
+
]
|
25
25
|
}
|
data/tracks/delphi/config.json
CHANGED
@@ -301,6 +301,18 @@
|
|
301
301
|
"tuples"
|
302
302
|
]
|
303
303
|
},
|
304
|
+
{
|
305
|
+
"slug": "word-count",
|
306
|
+
"uuid": "70643878-7f92-4823-8ec8-1159e901286f",
|
307
|
+
"core": false,
|
308
|
+
"unlocked_by": "bob",
|
309
|
+
"difficulty": 4,
|
310
|
+
"topics": [
|
311
|
+
"dictionaries",
|
312
|
+
"strings",
|
313
|
+
"transforming"
|
314
|
+
]
|
315
|
+
},
|
304
316
|
{
|
305
317
|
"slug": "circular-buffer",
|
306
318
|
"uuid": "f949b958-d2e0-4f21-a6db-12ba89f8ab57",
|
@@ -5,7 +5,7 @@ uses
|
|
5
5
|
DUnitX.TestFramework;
|
6
6
|
|
7
7
|
const
|
8
|
-
CanonicalVersion = '2.
|
8
|
+
CanonicalVersion = '2.6.0';
|
9
9
|
|
10
10
|
type
|
11
11
|
[TestFixture]
|
@@ -51,6 +51,10 @@ type
|
|
51
51
|
[Ignore]
|
52
52
|
procedure too_long_isbn_and_no_dashes;
|
53
53
|
|
54
|
+
[Test]
|
55
|
+
[Ignore]
|
56
|
+
procedure too_short_isbn;
|
57
|
+
|
54
58
|
[Test]
|
55
59
|
[Ignore]
|
56
60
|
procedure isbn_without_check_digit;
|
@@ -66,6 +70,14 @@ type
|
|
66
70
|
[Test]
|
67
71
|
[Ignore]
|
68
72
|
procedure empty_ISBN;
|
73
|
+
|
74
|
+
[Test]
|
75
|
+
[Ignore]
|
76
|
+
procedure input_is_9_characters;
|
77
|
+
|
78
|
+
[Test]
|
79
|
+
[Ignore]
|
80
|
+
procedure invalid_characters_are_not_ignored;
|
69
81
|
end;
|
70
82
|
|
71
83
|
implementation
|
@@ -85,12 +97,22 @@ end;
|
|
85
97
|
|
86
98
|
procedure ISBNVerifierTest.empty_ISBN;
|
87
99
|
begin
|
88
|
-
Assert.IsFalse(TIsbn.isValid(''))
|
100
|
+
Assert.IsFalse(TIsbn.isValid(''));
|
101
|
+
end;
|
102
|
+
|
103
|
+
procedure ISBNVerifierTest.input_is_9_characters;
|
104
|
+
begin
|
105
|
+
Assert.IsFalse(TIsbn.isValid('134456729'));
|
106
|
+
end;
|
107
|
+
|
108
|
+
procedure ISBNVerifierTest.invalid_characters_are_not_ignored;
|
109
|
+
begin
|
110
|
+
Assert.IsFalse(TIsbn.isValid('3132P34035'));
|
89
111
|
end;
|
90
112
|
|
91
113
|
procedure ISBNVerifierTest.invalid_character_in_isbn;
|
92
114
|
begin
|
93
|
-
Assert.IsFalse(TIsbn.isValid('3-598-P1581-X'))
|
115
|
+
Assert.IsFalse(TIsbn.isValid('3-598-P1581-X'));
|
94
116
|
end;
|
95
117
|
|
96
118
|
procedure ISBNVerifierTest.invalid_isbn_check_digit;
|
@@ -123,6 +145,11 @@ begin
|
|
123
145
|
Assert.IsFalse(TIsbn.isValid('3598215078X'));
|
124
146
|
end;
|
125
147
|
|
148
|
+
procedure ISBNVerifierTest.too_short_isbn;
|
149
|
+
begin
|
150
|
+
Assert.IsFalse(TIsbn.isValid('00'));
|
151
|
+
end;
|
152
|
+
|
126
153
|
procedure ISBNVerifierTest.valid_isbn_number;
|
127
154
|
begin
|
128
155
|
Assert.IsTrue(TIsbn.isValid('3-598-21508-8'));
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# Word Count
|
2
|
+
|
3
|
+
Given a phrase, count the occurrences of each word in that phrase.
|
4
|
+
|
5
|
+
For example for the input `"olly olly in come free"`
|
6
|
+
|
7
|
+
```text
|
8
|
+
olly: 2
|
9
|
+
in: 1
|
10
|
+
come: 1
|
11
|
+
free: 1
|
12
|
+
```
|
13
|
+
|
14
|
+
## Testing
|
15
|
+
|
16
|
+
In order to run the tests for this track, you will need to install
|
17
|
+
DUnitX. Please see the [installation](http://www.exercism.io/languages/delphi/installation) instructions for more information.
|
18
|
+
|
19
|
+
### Loading Exercises into Delphi
|
20
|
+
|
21
|
+
If Delphi is properly installed, and `*.dpr` file types have been associated with Delphi, then double clicking the supplied `*.dpr` file will start Delphi and load the exercise/project. `control + F9` is the keyboard shortcut to compile the project or pressing `F9` will compile and run the project.
|
22
|
+
|
23
|
+
Alternatively you may opt to start Delphi and load your project via. the `File` drop down menu.
|
24
|
+
|
25
|
+
### When Questions Come Up
|
26
|
+
We monitor the [Pascal-Delphi](https://gitter.im/exercism/Pascal-Delphi) support room on [gitter.im](https://gitter.im) to help you with any questions that might arise.
|
27
|
+
|
28
|
+
### Submitting Exercises
|
29
|
+
|
30
|
+
Note that, when trying to submit an exercise, make sure the exercise file you're submitting is in the `exercism/delphi/<exerciseName>` directory.
|
31
|
+
|
32
|
+
For example, if you're submitting `ubob.pas` for the Bob exercise, the submit command would be something like `exercism submit <path_to_exercism_dir>/delphi/bob/ubob.pas`.
|
33
|
+
|
34
|
+
## Source
|
35
|
+
|
36
|
+
This is a classic toy problem, but we were reminded of it by seeing it in the Go Tour.
|
37
|
+
|
38
|
+
## Submitting Incomplete Solutions
|
39
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|