trackler 2.2.1.106 → 2.2.1.107
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/tracks/delphi/exercises/bowling/uBowlingExample.pas +31 -4
- data/tracks/delphi/exercises/bowling/uBowlingTests.pas +81 -5
- data/tracks/elm/config/exercise_readme.go.tmpl +29 -4
- data/tracks/elm/exercises/accumulate/README.md +0 -3
- data/tracks/elm/exercises/all-your-base/README.md +0 -1
- data/tracks/elm/exercises/allergies/README.md +0 -1
- data/tracks/elm/exercises/atbash-cipher/README.md +2 -1
- data/tracks/elm/exercises/etl/README.md +3 -1
- data/tracks/elm/exercises/grade-school/README.md +0 -1
- data/tracks/elm/exercises/grains/README.md +0 -1
- data/tracks/elm/exercises/leap/README.md +1 -1
- data/tracks/elm/exercises/list-ops/README.md +0 -1
- data/tracks/elm/exercises/nucleotide-count/README.md +8 -22
- data/tracks/elm/exercises/pangram/README.md +1 -1
- data/tracks/elm/exercises/pascals-triangle/README.md +1 -1
- data/tracks/elm/exercises/phone-number/README.md +4 -3
- data/tracks/elm/exercises/rna-transcription/README.md +2 -2
- data/tracks/elm/exercises/roman-numerals/README.md +1 -1
- data/tracks/elm/exercises/run-length-encoding/README.md +4 -4
- data/tracks/elm/exercises/scrabble-score/README.md +3 -1
- data/tracks/elm/exercises/space-age/README.md +1 -1
- data/tracks/elm/exercises/sublist/README.md +0 -1
- data/tracks/elm/exercises/sum-of-multiples/README.md +3 -6
- data/tracks/elm/exercises/triangle/README.md +9 -6
- data/tracks/elm/exercises/word-count/README.md +1 -2
- data/tracks/go/config.json +12 -0
- data/tracks/go/exercises/forth/.meta/gen.go +5 -3
- data/tracks/go/exercises/forth/cases_test.go +2 -2
- data/tracks/go/exercises/grains/.meta/gen.go +10 -8
- data/tracks/go/exercises/grains/cases_test.go +2 -2
- data/tracks/go/exercises/isogram/.meta/gen.go +5 -3
- data/tracks/go/exercises/isogram/cases_test.go +2 -2
- data/tracks/go/exercises/proverb/.meta/gen.go +51 -0
- data/tracks/go/exercises/proverb/README.md +41 -0
- data/tracks/go/exercises/proverb/cases_test.go +44 -0
- data/tracks/go/exercises/proverb/example.go +19 -0
- data/tracks/go/exercises/proverb/proverb.go +15 -0
- data/tracks/go/exercises/proverb/proverb_test.go +23 -0
- data/tracks/julia/exercises/isbn-verifier/example.jl +2 -0
- data/tracks/julia/exercises/isbn-verifier/runtests.jl +4 -4
- data/tracks/rust/exercises/two-bucket/README.md +1 -1
- data/tracks/scala/exercises/bracket-push/src/test/scala/BracketPushTest.scala +17 -15
- data/tracks/scala/exercises/change/src/test/scala/ChangeTest.scala +2 -2
- data/tracks/scala/exercises/collatz-conjecture/src/test/scala/CollatzConjectureTest.scala +2 -2
- data/tracks/scala/exercises/connect/src/test/scala/ConnectTest.scala +1 -1
- data/tracks/scala/exercises/crypto-square/src/test/scala/CryptoSquareTest.scala +20 -41
- data/tracks/scala/exercises/custom-set/src/test/scala/CustomSetTest.scala +58 -40
- data/tracks/scala/exercises/difference-of-squares/src/test/scala/DifferenceOfSquaresTest.scala +1 -1
- data/tracks/scala/testgen/src/main/scala/BracketPushTestGenerator.scala +1 -1
- data/tracks/scala/testgen/src/main/scala/ChangeTestGenerator.scala +3 -3
- data/tracks/scala/testgen/src/main/scala/CollatzConjectureTestGenerator.scala +3 -3
- data/tracks/scala/testgen/src/main/scala/ConnectTestGenerator.scala +6 -6
- data/tracks/scala/testgen/src/main/scala/CryptoSquareTestGenerator.scala +1 -1
- data/tracks/scala/testgen/src/main/scala/CustomSetTestGenerator.scala +32 -26
- data/tracks/scala/testgen/src/main/scala/DifferenceOfSquaresTestGenerator.scala +1 -1
- metadata +8 -3
- data/tracks/elm/docs/EXERCISE_README_INSERT.md +0 -28
@@ -6,14 +6,15 @@ The **North American Numbering Plan (NANP)** is a telephone numbering system use
|
|
6
6
|
|
7
7
|
NANP numbers are ten-digit numbers consisting of a three-digit Numbering Plan Area code, commonly known as *area code*, followed by a seven-digit local number. The first three digits of the local number represent the *exchange code*, followed by the unique four-digit number which is the *subscriber number*.
|
8
8
|
|
9
|
-
|
10
9
|
The format is usually represented as
|
11
|
-
|
10
|
+
|
11
|
+
```text
|
12
12
|
(NXX)-NXX-XXXX
|
13
13
|
```
|
14
|
+
|
14
15
|
where `N` is any digit from 2 through 9 and `X` is any digit from 0 through 9.
|
15
16
|
|
16
|
-
Your task is to clean up differently
|
17
|
+
Your task is to clean up differently formatted telephone numbers by removing punctuation and the country code (1) if present.
|
17
18
|
|
18
19
|
For example, the inputs
|
19
20
|
- `+1 (613)-995-0253`
|
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# RNA Transcription
|
2
2
|
|
3
3
|
Given a DNA strand, return its RNA complement (per RNA transcription).
|
4
4
|
|
@@ -49,7 +49,7 @@ calls from each test until you get them all passing!
|
|
49
49
|
|
50
50
|
## Source
|
51
51
|
|
52
|
-
|
52
|
+
Hyperphysics [http://hyperphysics.phy-astr.gsu.edu/hbase/Organic/transcription.html](http://hyperphysics.phy-astr.gsu.edu/hbase/Organic/transcription.html)
|
53
53
|
|
54
54
|
## Submitting Incomplete Solutions
|
55
55
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -7,20 +7,20 @@ Run-length encoding (RLE) is a simple form of data compression, where runs
|
|
7
7
|
|
8
8
|
For example we can represent the original 53 characters with only 13.
|
9
9
|
|
10
|
-
```
|
10
|
+
```text
|
11
11
|
"WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWB" -> "12WB12W3B24WB"
|
12
12
|
```
|
13
13
|
|
14
14
|
RLE allows the original data to be perfectly reconstructed from
|
15
15
|
the compressed data, which makes it a lossless data compression.
|
16
16
|
|
17
|
-
```
|
17
|
+
```text
|
18
18
|
"AABCCCDEEEE" -> "2AB3CD4E" -> "AABCCCDEEEE"
|
19
19
|
```
|
20
20
|
|
21
21
|
For simplicity, you can assume that the unencoded string will only contain
|
22
|
-
the letters A through Z (either lower or upper case) and whitespace. This way
|
23
|
-
data to be encoded will never contain any numbers and numbers inside data to
|
22
|
+
the letters A through Z (either lower or upper case) and whitespace. This way
|
23
|
+
data to be encoded will never contain any numbers and numbers inside data to
|
24
24
|
be decoded always represent the count for the following character.
|
25
25
|
|
26
26
|
## Elm Installation
|
@@ -6,7 +6,7 @@ Given a word, compute the scrabble score for that word.
|
|
6
6
|
|
7
7
|
You'll need these:
|
8
8
|
|
9
|
-
```
|
9
|
+
```text
|
10
10
|
Letter Value
|
11
11
|
A, E, I, O, U, L, N, R, S, T 1
|
12
12
|
D, G 2
|
@@ -18,6 +18,7 @@ Q, Z 10
|
|
18
18
|
```
|
19
19
|
|
20
20
|
## Examples
|
21
|
+
|
21
22
|
"cabbage" should be scored as worth 14 points:
|
22
23
|
|
23
24
|
- 3 points for C
|
@@ -34,6 +35,7 @@ And to total:
|
|
34
35
|
- = 14
|
35
36
|
|
36
37
|
## Extensions
|
38
|
+
|
37
39
|
- You can play a double or a triple letter.
|
38
40
|
- You can play a double or a triple word.
|
39
41
|
|
@@ -12,7 +12,7 @@ Given an age in seconds, calculate how old someone would be on:
|
|
12
12
|
- Neptune: orbital period 164.79132 Earth years
|
13
13
|
|
14
14
|
So if you were told someone were 1,000,000,000 seconds old, you should
|
15
|
-
be able to say that they're 31 Earth-years old.
|
15
|
+
be able to say that they're 31.69 Earth-years old.
|
16
16
|
|
17
17
|
If you're wondering why Pluto didn't make the cut, go watch [this
|
18
18
|
youtube video](http://www.youtube.com/watch?v=Z_2gbGXzFbs).
|
@@ -46,6 +46,5 @@ $ npm run watch
|
|
46
46
|
As you work your way through the test suite, be sure to remove the `skip <|`
|
47
47
|
calls from each test until you get them all passing!
|
48
48
|
|
49
|
-
|
50
49
|
## Submitting Incomplete Solutions
|
51
50
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -1,16 +1,13 @@
|
|
1
1
|
# Sum Of Multiples
|
2
2
|
|
3
|
-
Given a number, find the sum of all the multiples of particular numbers up to
|
3
|
+
Given a number, find the sum of all the unique multiples of particular numbers up to
|
4
4
|
but not including that number.
|
5
5
|
|
6
|
-
If we list all the natural numbers
|
7
|
-
|
6
|
+
If we list all the natural numbers below 20 that are multiples of 3 or 5,
|
7
|
+
we get 3, 5, 6, 9, 10, 12, 15, and 18.
|
8
8
|
|
9
9
|
The sum of these multiples is 78.
|
10
10
|
|
11
|
-
Given a number, find the sum of the multiples of a given set of numbers,
|
12
|
-
up to but not including that number.
|
13
|
-
|
14
11
|
## Elm Installation
|
15
12
|
|
16
13
|
Refer to the [Exercism help page](http://exercism.io/languages/elm) for Elm
|
@@ -2,23 +2,26 @@
|
|
2
2
|
|
3
3
|
Determine if a triangle is equilateral, isosceles, or scalene.
|
4
4
|
|
5
|
-
An _equilateral_ triangle has all three sides the same length
|
5
|
+
An _equilateral_ triangle has all three sides the same length.
|
6
|
+
|
6
7
|
An _isosceles_ triangle has at least two sides the same length. (It is sometimes
|
7
8
|
specified as having exactly two sides the same length, but for the purposes of
|
8
|
-
this exercise we'll say at least two.)
|
9
|
+
this exercise we'll say at least two.)
|
10
|
+
|
9
11
|
A _scalene_ triangle has all sides of different lengths.
|
10
12
|
|
11
13
|
## Note
|
12
14
|
|
13
|
-
For a shape to be a triangle at all, all sides have to be of length > 0, and
|
14
|
-
the sum of the lengths of any two sides must be greater than or equal to the
|
15
|
+
For a shape to be a triangle at all, all sides have to be of length > 0, and
|
16
|
+
the sum of the lengths of any two sides must be greater than or equal to the
|
15
17
|
length of the third side. See [Triangle Inequality](https://en.wikipedia.org/wiki/Triangle_inequality).
|
16
18
|
|
17
19
|
## Dig Deeper
|
18
20
|
|
19
|
-
The case where the sum of the lengths of two sides _equals_ that of the
|
20
|
-
third is known as a _degenerate_ triangle - it has zero area and looks like
|
21
|
+
The case where the sum of the lengths of two sides _equals_ that of the
|
22
|
+
third is known as a _degenerate_ triangle - it has zero area and looks like
|
21
23
|
a single line. Feel free to add your own code/tests to check for degenerate triangles.
|
24
|
+
|
22
25
|
## Elm Installation
|
23
26
|
|
24
27
|
Refer to the [Exercism help page](http://exercism.io/languages/elm) for Elm
|
@@ -4,14 +4,13 @@ Given a phrase, count the occurrences of each word in that phrase.
|
|
4
4
|
|
5
5
|
For example for the input `"olly olly in come free"`
|
6
6
|
|
7
|
-
```
|
7
|
+
```text
|
8
8
|
olly: 2
|
9
9
|
in: 1
|
10
10
|
come: 1
|
11
11
|
free: 1
|
12
12
|
```
|
13
13
|
|
14
|
-
|
15
14
|
## Elm Installation
|
16
15
|
|
17
16
|
Refer to the [Exercism help page](http://exercism.io/languages/elm) for Elm
|
data/tracks/go/config.json
CHANGED
@@ -1177,6 +1177,18 @@
|
|
1177
1177
|
"unlocked_by": "luhn",
|
1178
1178
|
"uuid": "37821140-c0d0-4da8-8f50-47356705a615"
|
1179
1179
|
},
|
1180
|
+
{
|
1181
|
+
"core": false,
|
1182
|
+
"difficulty": 4,
|
1183
|
+
"slug": "proverb",
|
1184
|
+
"topics": [
|
1185
|
+
"arrays",
|
1186
|
+
"loops",
|
1187
|
+
"strings"
|
1188
|
+
],
|
1189
|
+
"unlocked_by": "two-fer",
|
1190
|
+
"uuid": "b6d05e8f-542b-4789-9cbc-7ba132a5f03d"
|
1191
|
+
},
|
1180
1192
|
{
|
1181
1193
|
"difficulty": 2,
|
1182
1194
|
"slug": "isbn-verifier",
|
@@ -32,8 +32,10 @@ type Group struct {
|
|
32
32
|
// One test case.
|
33
33
|
type OneCase struct {
|
34
34
|
Description string
|
35
|
-
Input
|
36
|
-
|
35
|
+
Input struct {
|
36
|
+
Instructions []string
|
37
|
+
}
|
38
|
+
Expected []int
|
37
39
|
}
|
38
40
|
|
39
41
|
// template applied to above data structure generates the Go test cases
|
@@ -58,7 +60,7 @@ group: {{printf "%q" .Name}},
|
|
58
60
|
tests: []testCase{
|
59
61
|
{{range .Cases}}{
|
60
62
|
{{printf "%q" .Description}},
|
61
|
-
{{printf "%#v" .Input}},
|
63
|
+
{{printf "%#v" .Input.Instructions}},
|
62
64
|
{{printf "%#v" .Expected}},
|
63
65
|
},
|
64
66
|
{{end}}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
package forth
|
2
2
|
|
3
3
|
// Source: exercism/problem-specifications
|
4
|
-
// Commit:
|
5
|
-
// Problem Specifications Version: 1.
|
4
|
+
// Commit: 01257bd forth: Apply new "input" policy
|
5
|
+
// Problem Specifications Version: 1.5.0
|
6
6
|
|
7
7
|
type testGroup struct {
|
8
8
|
group string
|
@@ -28,29 +28,31 @@ type js struct {
|
|
28
28
|
type testGroup struct {
|
29
29
|
Description string
|
30
30
|
Cases []json.RawMessage `property:"RAW"`
|
31
|
-
SquareCases []
|
31
|
+
SquareCases []squareCase `property:"square"`
|
32
32
|
// Note: canonical-data.json has a element of "cases"
|
33
33
|
// which includes a test for property 'total', but it is ignored here,
|
34
34
|
// since "expected" is a single known value.
|
35
35
|
}
|
36
36
|
|
37
|
-
type
|
37
|
+
type squareCase struct {
|
38
38
|
Description string
|
39
|
-
Input
|
40
|
-
|
39
|
+
Input struct {
|
40
|
+
Square int
|
41
|
+
}
|
42
|
+
Expected interface{}
|
41
43
|
}
|
42
44
|
|
43
|
-
func (c
|
45
|
+
func (c squareCase) HasAnswer() bool {
|
44
46
|
hasAnswer, _ := determineExpected(c.Expected)
|
45
47
|
return hasAnswer
|
46
48
|
}
|
47
49
|
|
48
|
-
func (c
|
50
|
+
func (c squareCase) Answer() uint64 {
|
49
51
|
_, answer := determineExpected(c.Expected)
|
50
52
|
return answer
|
51
53
|
}
|
52
54
|
|
53
|
-
func (c
|
55
|
+
func (c squareCase) EditedDescription() string {
|
54
56
|
// Go doesn't raise exceptions, so replace the wording in .Description.
|
55
57
|
return strings.Replace(c.Description, "raises an exception", "returns an error", 1)
|
56
58
|
}
|
@@ -85,7 +87,7 @@ var tmpl = `package grains
|
|
85
87
|
{{- range .SquareCases}}
|
86
88
|
{
|
87
89
|
description: "{{.EditedDescription}}",
|
88
|
-
input: {{.Input}},
|
90
|
+
input: {{.Input.Square}},
|
89
91
|
{{- if .HasAnswer}}
|
90
92
|
expectedVal: {{.Answer}},
|
91
93
|
{{- else}}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
package grains
|
2
2
|
|
3
3
|
// Source: exercism/problem-specifications
|
4
|
-
// Commit:
|
5
|
-
// Problem Specifications Version: 1.
|
4
|
+
// Commit: f079c2d grains: Move input (square) to input object (#1191)
|
5
|
+
// Problem Specifications Version: 1.1.0
|
6
6
|
|
7
7
|
// returns the number of grains on the square
|
8
8
|
var squareTests = []struct {
|
@@ -32,8 +32,10 @@ type js struct {
|
|
32
32
|
type oneCase struct {
|
33
33
|
Description string
|
34
34
|
Property string
|
35
|
-
Input
|
36
|
-
|
35
|
+
Input struct {
|
36
|
+
Phrase string
|
37
|
+
}
|
38
|
+
Expected bool
|
37
39
|
}
|
38
40
|
|
39
41
|
// Template to generate test cases.
|
@@ -48,7 +50,7 @@ var testCases = []struct {
|
|
48
50
|
}{ {{range .J.Cases}} {{range .Cases}}
|
49
51
|
{
|
50
52
|
description: {{printf "%q" .Description}},
|
51
|
-
input: {{printf "%q" .Input}},
|
53
|
+
input: {{printf "%q" .Input.Phrase}},
|
52
54
|
expected: {{printf "%t" .Expected}},
|
53
55
|
},{{end}}{{end}}
|
54
56
|
}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
package isogram
|
2
2
|
|
3
3
|
// Source: exercism/problem-specifications
|
4
|
-
// Commit:
|
5
|
-
// Problem Specifications Version: 1.
|
4
|
+
// Commit: 79f1357 isogram: Apply new "input" policy (#1180)
|
5
|
+
// Problem Specifications Version: 1.3.0
|
6
6
|
|
7
7
|
var testCases = []struct {
|
8
8
|
description string
|
@@ -0,0 +1,51 @@
|
|
1
|
+
package main
|
2
|
+
|
3
|
+
import (
|
4
|
+
"log"
|
5
|
+
"text/template"
|
6
|
+
|
7
|
+
"../../../gen"
|
8
|
+
)
|
9
|
+
|
10
|
+
func main() {
|
11
|
+
t, err := template.New("").Parse(tmpl)
|
12
|
+
if err != nil {
|
13
|
+
log.Fatal(err)
|
14
|
+
}
|
15
|
+
var j js
|
16
|
+
if err := gen.Gen("proverb", &j, t); err != nil {
|
17
|
+
log.Fatal(err)
|
18
|
+
}
|
19
|
+
}
|
20
|
+
|
21
|
+
// The JSON structure we expect to be able to unmarshal into
|
22
|
+
type js struct {
|
23
|
+
Cases []struct {
|
24
|
+
Description string
|
25
|
+
Input struct {
|
26
|
+
Strings []string
|
27
|
+
}
|
28
|
+
Expected []string
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
// template applied to above data structure generates the Go test cases
|
33
|
+
var tmpl = `package proverb
|
34
|
+
|
35
|
+
{{.Header}}
|
36
|
+
|
37
|
+
type proverbTest struct {
|
38
|
+
description string
|
39
|
+
input []string
|
40
|
+
expected []string
|
41
|
+
}
|
42
|
+
|
43
|
+
var stringTestCases = []proverbTest {
|
44
|
+
{{range .J.Cases}} {
|
45
|
+
description: {{printf "%q" .Description }},
|
46
|
+
input: {{printf "%#v" .Input.Strings }},
|
47
|
+
expected: {{printf "%#v" .Expected }},
|
48
|
+
},
|
49
|
+
{{end}}
|
50
|
+
}
|
51
|
+
`
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# Proverb
|
2
|
+
|
3
|
+
For want of a horseshoe nail, a kingdom was lost, or so the saying goes.
|
4
|
+
|
5
|
+
Given a list of inputs, generate the relevant proverb. For example, given the list `["nail", "shoe", "horse", "rider", "message", "battle", "kingdom"]`, you will output the full text of this proverbial rhyme:
|
6
|
+
|
7
|
+
```text
|
8
|
+
For want of a nail the shoe was lost.
|
9
|
+
For want of a shoe the horse was lost.
|
10
|
+
For want of a horse the rider was lost.
|
11
|
+
For want of a rider the message was lost.
|
12
|
+
For want of a message the battle was lost.
|
13
|
+
For want of a battle the kingdom was lost.
|
14
|
+
And all for the want of a nail.
|
15
|
+
```
|
16
|
+
|
17
|
+
Note that the list of inputs may vary; your solution should be able to handle lists of arbitrary length and content. No line of the output text should be a static, unchanging string; all should vary according to the input given.
|
18
|
+
|
19
|
+
## Running the tests
|
20
|
+
|
21
|
+
To run the tests run the command `go test` from within the exercise directory.
|
22
|
+
|
23
|
+
If the test suite contains benchmarks, you can run these with the `-bench`
|
24
|
+
flag:
|
25
|
+
|
26
|
+
go test -bench .
|
27
|
+
|
28
|
+
Keep in mind that each reviewer will run benchmarks on a different machine, with
|
29
|
+
different specs, so the results from these benchmark tests may vary.
|
30
|
+
|
31
|
+
## Further information
|
32
|
+
|
33
|
+
For more detailed information about the Go track, including how to get help if
|
34
|
+
you're having trouble, please visit the exercism.io [Go language page](http://exercism.io/languages/go/about).
|
35
|
+
|
36
|
+
## Source
|
37
|
+
|
38
|
+
Wikipedia [http://en.wikipedia.org/wiki/For_Want_of_a_Nail](http://en.wikipedia.org/wiki/For_Want_of_a_Nail)
|
39
|
+
|
40
|
+
## Submitting Incomplete Solutions
|
41
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,44 @@
|
|
1
|
+
package proverb
|
2
|
+
|
3
|
+
// Source: exercism/problem-specifications
|
4
|
+
// Commit: e86e97a proverb: apply "input" policy
|
5
|
+
// Problem Specifications Version: 1.1.0
|
6
|
+
|
7
|
+
type proverbTest struct {
|
8
|
+
description string
|
9
|
+
input []string
|
10
|
+
expected []string
|
11
|
+
}
|
12
|
+
|
13
|
+
var stringTestCases = []proverbTest{
|
14
|
+
{
|
15
|
+
description: "zero pieces",
|
16
|
+
input: []string{},
|
17
|
+
expected: []string{},
|
18
|
+
},
|
19
|
+
{
|
20
|
+
description: "one piece",
|
21
|
+
input: []string{"nail"},
|
22
|
+
expected: []string{"And all for the want of a nail."},
|
23
|
+
},
|
24
|
+
{
|
25
|
+
description: "two pieces",
|
26
|
+
input: []string{"nail", "shoe"},
|
27
|
+
expected: []string{"For want of a nail the shoe was lost.", "And all for the want of a nail."},
|
28
|
+
},
|
29
|
+
{
|
30
|
+
description: "three pieces",
|
31
|
+
input: []string{"nail", "shoe", "horse"},
|
32
|
+
expected: []string{"For want of a nail the shoe was lost.", "For want of a shoe the horse was lost.", "And all for the want of a nail."},
|
33
|
+
},
|
34
|
+
{
|
35
|
+
description: "full proverb",
|
36
|
+
input: []string{"nail", "shoe", "horse", "rider", "message", "battle", "kingdom"},
|
37
|
+
expected: []string{"For want of a nail the shoe was lost.", "For want of a shoe the horse was lost.", "For want of a horse the rider was lost.", "For want of a rider the message was lost.", "For want of a message the battle was lost.", "For want of a battle the kingdom was lost.", "And all for the want of a nail."},
|
38
|
+
},
|
39
|
+
{
|
40
|
+
description: "four pieces modernized",
|
41
|
+
input: []string{"pin", "gun", "soldier", "battle"},
|
42
|
+
expected: []string{"For want of a pin the gun was lost.", "For want of a gun the soldier was lost.", "For want of a soldier the battle was lost.", "And all for the want of a pin."},
|
43
|
+
},
|
44
|
+
}
|