trackler 2.2.1.91 → 2.2.1.92
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/diamond/metadata.yml +1 -1
- data/problem-specifications/exercises/food-chain/canonical-data.json +42 -22
- data/problem-specifications/exercises/hello-world/canonical-data.json +2 -1
- data/problem-specifications/exercises/isbn-verifier/metadata.yml +2 -1
- data/problem-specifications/exercises/largest-series-product/canonical-data.json +62 -33
- data/problem-specifications/exercises/leap/canonical-data.json +14 -6
- data/problem-specifications/exercises/list-ops/canonical-data.json +6 -6
- data/problem-specifications/exercises/markdown/canonical-data.json +29 -11
- data/problem-specifications/exercises/minesweeper/canonical-data.json +80 -56
- data/problem-specifications/exercises/minesweeper/metadata.yml +1 -1
- data/problem-specifications/exercises/nth-prime/canonical-data.json +20 -8
- data/problem-specifications/exercises/nucleotide-count/canonical-data.json +17 -7
- data/problem-specifications/exercises/pascals-triangle/canonical-data.json +28 -10
- data/problem-specifications/exercises/perfect-numbers/canonical-data.json +41 -15
- data/problem-specifications/exercises/phone-number/canonical-data.json +44 -16
- data/problem-specifications/exercises/pig-latin/canonical-data.json +68 -24
- data/problem-specifications/exercises/reverse-string/metadata.yml +1 -1
- data/problem-specifications/exercises/rna-transcription/canonical-data.json +17 -7
- data/problem-specifications/exercises/roman-numerals/canonical-data.json +56 -20
- data/problem-specifications/exercises/rotational-cipher/canonical-data.json +42 -22
- data/problem-specifications/exercises/saddle-points/canonical-data.json +34 -24
- data/problem-specifications/exercises/scrabble-score/canonical-data.json +35 -13
- data/problem-specifications/exercises/secret-handshake/canonical-data.json +34 -12
- data/problem-specifications/exercises/sieve/canonical-data.json +16 -6
- data/problem-specifications/exercises/space-age/canonical-data.json +34 -18
- data/problem-specifications/exercises/spiral-matrix/canonical-data.json +19 -7
- data/problem-specifications/exercises/sublist/canonical-data.json +69 -35
- data/problem-specifications/exercises/twelve-days/canonical-data.json +61 -31
- data/problem-specifications/exercises/variable-length-quantity/canonical-data.json +79 -27
- data/problem-specifications/exercises/zebra-puzzle/canonical-data.json +3 -1
- data/tracks/csharp/exercises/accumulate/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/allergies/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/alphametics/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/bank-account/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/beer-song/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/clock/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/custom-set/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/diamond/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/difference-of-squares/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/diffie-hellman/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/dot-dsl/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/food-chain/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/forth/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/hangman/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/house/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/list-ops/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/markdown/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/nth-prime/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/nucleotide-count/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/palindrome-products/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/proverb/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/react/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/roman-numerals/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/saddle-points/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/sgf-parsing/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/simple-linked-list/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/sublist/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/sum-of-multiples/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/twelve-days/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/variable-length-quantity/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/word-search/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/wordy/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/zebra-puzzle/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/csharp/exercises/zipper/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/delphi/exercises/secret-handshake/uTestSecretHandshake.pas +1 -1
- data/tracks/elixir/config/exercise_readme.go.tmpl +34 -4
- data/tracks/elixir/exercises/accumulate/README.md +1 -6
- data/tracks/elixir/exercises/acronym/README.md +1 -4
- data/tracks/elixir/exercises/all-your-base/README.md +2 -5
- data/tracks/elixir/exercises/allergies/README.md +1 -4
- data/tracks/elixir/exercises/anagram/README.md +1 -3
- data/tracks/elixir/exercises/atbash-cipher/README.md +3 -4
- data/tracks/elixir/exercises/bank-account/README.md +1 -4
- data/tracks/elixir/exercises/beer-song/README.md +3 -5
- data/tracks/elixir/exercises/binary-search-tree/README.md +43 -0
- data/tracks/elixir/exercises/binary-search/README.md +1 -3
- data/tracks/elixir/exercises/binary/README.md +3 -3
- data/tracks/elixir/exercises/bob/README.md +2 -2
- data/tracks/elixir/exercises/bowling/README.md +21 -9
- data/tracks/elixir/exercises/bracket-push/README.md +1 -3
- data/tracks/elixir/exercises/change/README.md +2 -4
- data/tracks/elixir/exercises/clock/README.md +1 -3
- data/tracks/elixir/exercises/collatz-conjecture/README.md +2 -4
- data/tracks/elixir/exercises/connect/README.md +2 -5
- data/tracks/elixir/exercises/crypto-square/README.md +11 -11
- data/tracks/elixir/exercises/custom-set/README.md +1 -4
- data/tracks/elixir/exercises/diamond/README.md +7 -9
- data/tracks/elixir/exercises/difference-of-squares/README.md +1 -3
- data/tracks/elixir/exercises/diffie-hellman/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/elixir/exercises/diffie-hellman/README.md +1 -3
- data/tracks/elixir/exercises/dominoes/README.md +4 -7
- data/tracks/elixir/exercises/dot-dsl/README.md +2 -5
- data/tracks/elixir/exercises/etl/README.md +4 -4
- data/tracks/elixir/exercises/flatten-array/README.md +2 -5
- data/tracks/elixir/exercises/forth/README.md +1 -4
- data/tracks/elixir/exercises/gigasecond/README.md +1 -3
- data/tracks/elixir/exercises/grade-school/README.md +1 -4
- data/tracks/elixir/exercises/grains/README.md +1 -4
- data/tracks/elixir/exercises/grep/README.md +13 -15
- data/tracks/elixir/exercises/hamming/README.md +1 -3
- data/tracks/elixir/exercises/hello-world/README.md +23 -0
- data/tracks/elixir/exercises/hexadecimal/README.md +1 -3
- data/tracks/elixir/exercises/isbn-verifier/README.md +26 -24
- data/tracks/elixir/exercises/isogram/README.md +3 -4
- data/tracks/elixir/exercises/kindergarten-garden/README.md +14 -16
- data/tracks/elixir/exercises/largest-series-product/README.md +1 -3
- data/tracks/elixir/exercises/leap/README.md +2 -4
- data/tracks/elixir/exercises/list-ops/README.md +1 -4
- data/tracks/elixir/exercises/luhn/README.md +8 -10
- data/tracks/elixir/exercises/markdown/README.md +1 -4
- data/tracks/elixir/exercises/matrix/README.md +7 -7
- data/tracks/elixir/exercises/meetup/README.md +17 -16
- data/tracks/elixir/exercises/minesweeper/README.md +1 -4
- data/tracks/elixir/exercises/nth-prime/README.md +1 -3
- data/tracks/elixir/exercises/nucleotide-count/README.md +9 -25
- data/tracks/elixir/exercises/ocr-numbers/README.md +7 -9
- data/tracks/elixir/exercises/palindrome-products/README.md +16 -19
- data/tracks/elixir/exercises/pangram/README.md +2 -4
- data/tracks/elixir/exercises/parallel-letter-frequency/README.md +1 -4
- data/tracks/elixir/exercises/pascals-triangle/README.md +3 -5
- data/tracks/elixir/exercises/perfect-numbers/README.md +3 -5
- data/tracks/elixir/exercises/phone-number/README.md +5 -6
- data/tracks/elixir/exercises/pig-latin/README.md +1 -3
- data/tracks/elixir/exercises/poker/README.md +1 -3
- data/tracks/elixir/exercises/prime-factors/README.md +1 -3
- data/tracks/elixir/exercises/protein-translation/README.md +3 -6
- data/tracks/elixir/exercises/pythagorean-triplet/README.md +4 -6
- data/tracks/elixir/exercises/queen-attack/README.md +2 -4
- data/tracks/elixir/exercises/rail-fence-cipher/README.md +13 -10
- data/tracks/elixir/exercises/raindrops/README.md +1 -3
- data/tracks/elixir/exercises/rna-transcription/README.md +2 -4
- data/tracks/elixir/exercises/robot-simulator/README.md +1 -3
- data/tracks/elixir/exercises/roman-numerals/README.md +2 -4
- data/tracks/elixir/exercises/rotational-cipher/README.md +3 -4
- data/tracks/elixir/exercises/run-length-encoding/README.md +5 -7
- data/tracks/elixir/exercises/saddle-points/README.md +3 -5
- data/tracks/elixir/exercises/say/README.md +1 -3
- data/tracks/elixir/exercises/scale-generator/README.md +1 -5
- data/tracks/elixir/exercises/scrabble-score/README.md +4 -4
- data/tracks/elixir/exercises/secret-handshake/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/elixir/exercises/secret-handshake/README.md +4 -4
- data/tracks/elixir/exercises/series/README.md +1 -3
- data/tracks/elixir/exercises/sieve/README.md +1 -3
- data/tracks/elixir/exercises/simple-cipher/README.md +6 -10
- data/tracks/elixir/exercises/simple-linked-list/README.md +1 -3
- data/tracks/elixir/exercises/space-age/README.md +2 -4
- data/tracks/elixir/exercises/spiral-matrix/README.md +5 -5
- data/tracks/elixir/exercises/strain/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/elixir/exercises/strain/README.md +1 -3
- data/tracks/elixir/exercises/sublist/README.md +1 -4
- data/tracks/elixir/exercises/sum-of-multiples/README.md +4 -9
- data/tracks/elixir/exercises/tournament/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/elixir/exercises/tournament/README.md +6 -9
- data/tracks/elixir/exercises/transpose/README.md +6 -7
- data/tracks/elixir/exercises/triangle/README.md +10 -9
- data/tracks/elixir/exercises/twelve-days/README.md +2 -4
- data/tracks/elixir/exercises/word-count/README.md +2 -5
- data/tracks/elixir/exercises/wordy/README.md +1 -8
- data/tracks/elixir/exercises/zipper/README.md +2 -5
- data/tracks/fortran/README.md +1 -1
- data/tracks/fsharp/config/exercise_readme.go.tmpl +0 -3
- data/tracks/fsharp/exercises/accumulate/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/fsharp/exercises/alphametics/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/fsharp/exercises/beer-song/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/fsharp/exercises/diamond/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/fsharp/exercises/difference-of-squares/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/fsharp/exercises/diffie-hellman/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/fsharp/exercises/food-chain/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/fsharp/exercises/gigasecond/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/fsharp/exercises/grade-school/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/fsharp/exercises/grains/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/fsharp/exercises/house/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/fsharp/exercises/lens-person/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/fsharp/exercises/linked-list/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/fsharp/exercises/nth-prime/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/fsharp/exercises/palindrome-products/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/fsharp/exercises/parallel-letter-frequency/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/fsharp/exercises/poker/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/fsharp/exercises/proverb/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/fsharp/exercises/raindrops/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/fsharp/exercises/rna-transcription/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/fsharp/exercises/space-age/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/fsharp/exercises/twelve-days/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/fsharp/exercises/wordy/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/java/exercises/acronym/.meta/version +1 -1
- data/tracks/java/exercises/acronym/src/test/java/AcronymTest.java +6 -6
- data/tracks/java/exercises/raindrops/.meta/version +1 -0
- data/tracks/java/exercises/raindrops/src/test/java/RaindropConverterTest.java +3 -1
- data/tracks/java/exercises/transpose/src/test/java/TransposeTest.java +5 -5
- data/tracks/java/exercises/word-count/.meta/src/reference/java/WordCount.java +1 -1
- data/tracks/java/exercises/word-count/.meta/version +1 -0
- data/tracks/java/exercises/word-count/src/test/java/WordCountTest.java +73 -3
- data/tracks/mips/config/exercise_readme.go.tmpl +0 -3
- data/tracks/perl5/config/exercise_readme.go.tmpl +0 -3
- data/tracks/php/exercises/bob/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/php/exercises/roman-numerals/roman-numerals_test.php +1 -1
- data/tracks/pony/config/exercise_readme.go.tmpl +0 -3
- data/tracks/python/config.json +14 -0
- data/tracks/python/exercises/isbn-verifier/README.md +43 -0
- data/tracks/python/exercises/isbn-verifier/example.py +8 -0
- data/tracks/python/exercises/isbn-verifier/isbn_verifier.py +2 -0
- data/tracks/python/exercises/isbn-verifier/isbn_verifier_test.py +54 -0
- data/tracks/rust/exercises/atbash-cipher/example.rs +0 -2
- data/tracks/rust/exercises/bracket-push/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/rust/exercises/crypto-square/example.rs +0 -2
- data/tracks/rust/exercises/etl/example.rs +0 -1
- data/tracks/rust/exercises/forth/example.rs +0 -1
- data/tracks/rust/exercises/largest-series-product/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/rust/exercises/pangram/example.rs +0 -1
- data/tracks/rust/exercises/parallel-letter-frequency/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/rust/exercises/scrabble-score/tests/scrabble-score.rs +9 -2
- data/tracks/rust/exercises/space-age/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/rust/exercises/triangle/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/scala/exercises/bank-account/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/scala/exercises/connect/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/scala/exercises/gigasecond/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/scala/exercises/hamming/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/scala/exercises/hello-world/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/scala/exercises/leap/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/scala/exercises/nucleotide-count/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/scala/exercises/parallel-letter-frequency/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/scala/exercises/phone-number/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/scala/exercises/robot-name/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/scala/exercises/roman-numerals/{HINTS.md → .meta/hints.md} +0 -0
- data/tracks/scala/exercises/variable-length-quantity/{HINTS.md → .meta/hints.md} +0 -0
- metadata +87 -86
- data/tracks/elixir/docs/EXERCISE_README_INSERT.md +0 -35
- data/tracks/fsharp/docs/EXERCISE_README_INSERT.md +0 -0
- data/tracks/mips/docs/EXERCISE_README_INSERT.md +0 -0
- data/tracks/perl5/docs/EXERCISE_README_INSERT.md +0 -0
- data/tracks/pony/docs/EXERCISE_README_INSERT.md +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f788d6aab478aaf66e348921d374b3e1585973f6
|
|
4
|
+
data.tar.gz: 8eb41f39bd9349a8c2d778f7a658efd3d677a918
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 20f227fc28dc75a4d90368dde1a75f73cbf1e277bf79e7164fab5d8eb01307ea519f81aa1a388dbd07b78fdb6d2c86794bf33f3c7e12cb83fd9aff21bd84f402
|
|
7
|
+
data.tar.gz: 44ee0515e374fbdf13a258f4e0be701c3df720299604c73277f88e8aefe966466f97ea24654ebfcc7f3e694341d5f83b4421e227ad12bec02c6735cb38b84c2d
|
data/lib/trackler/version.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"exercise": "food-chain",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"comments": [
|
|
5
5
|
"JSON doesn't allow for multi-line strings, so all verses are presented ",
|
|
6
6
|
"here as arrays of strings. It's up to the test generator to join the ",
|
|
@@ -18,8 +18,10 @@
|
|
|
18
18
|
{
|
|
19
19
|
"description": "fly",
|
|
20
20
|
"property": "recite",
|
|
21
|
-
"
|
|
22
|
-
|
|
21
|
+
"input": {
|
|
22
|
+
"startVerse": 1,
|
|
23
|
+
"endVerse": 1
|
|
24
|
+
},
|
|
23
25
|
"expected": [
|
|
24
26
|
"I know an old lady who swallowed a fly.",
|
|
25
27
|
"I don't know why she swallowed the fly. Perhaps she'll die."
|
|
@@ -28,8 +30,10 @@
|
|
|
28
30
|
{
|
|
29
31
|
"description": "spider",
|
|
30
32
|
"property": "recite",
|
|
31
|
-
"
|
|
32
|
-
|
|
33
|
+
"input": {
|
|
34
|
+
"startVerse": 2,
|
|
35
|
+
"endVerse": 2
|
|
36
|
+
},
|
|
33
37
|
"expected": [
|
|
34
38
|
"I know an old lady who swallowed a spider.",
|
|
35
39
|
"It wriggled and jiggled and tickled inside her.",
|
|
@@ -40,8 +44,10 @@
|
|
|
40
44
|
{
|
|
41
45
|
"description": "bird",
|
|
42
46
|
"property": "recite",
|
|
43
|
-
"
|
|
44
|
-
|
|
47
|
+
"input": {
|
|
48
|
+
"startVerse": 3,
|
|
49
|
+
"endVerse": 3
|
|
50
|
+
},
|
|
45
51
|
"expected": [
|
|
46
52
|
"I know an old lady who swallowed a bird.",
|
|
47
53
|
"How absurd to swallow a bird!",
|
|
@@ -53,8 +59,10 @@
|
|
|
53
59
|
{
|
|
54
60
|
"description": "cat",
|
|
55
61
|
"property": "recite",
|
|
56
|
-
"
|
|
57
|
-
|
|
62
|
+
"input": {
|
|
63
|
+
"startVerse": 4,
|
|
64
|
+
"endVerse": 4
|
|
65
|
+
},
|
|
58
66
|
"expected": [
|
|
59
67
|
"I know an old lady who swallowed a cat.",
|
|
60
68
|
"Imagine that, to swallow a cat!",
|
|
@@ -67,8 +75,10 @@
|
|
|
67
75
|
{
|
|
68
76
|
"description": "dog",
|
|
69
77
|
"property": "recite",
|
|
70
|
-
"
|
|
71
|
-
|
|
78
|
+
"input": {
|
|
79
|
+
"startVerse": 5,
|
|
80
|
+
"endVerse": 5
|
|
81
|
+
},
|
|
72
82
|
"expected": [
|
|
73
83
|
"I know an old lady who swallowed a dog.",
|
|
74
84
|
"What a hog, to swallow a dog!",
|
|
@@ -82,8 +92,10 @@
|
|
|
82
92
|
{
|
|
83
93
|
"description": "goat",
|
|
84
94
|
"property": "recite",
|
|
85
|
-
"
|
|
86
|
-
|
|
95
|
+
"input": {
|
|
96
|
+
"startVerse": 6,
|
|
97
|
+
"endVerse": 6
|
|
98
|
+
},
|
|
87
99
|
"expected": [
|
|
88
100
|
"I know an old lady who swallowed a goat.",
|
|
89
101
|
"Just opened her throat and swallowed a goat!",
|
|
@@ -98,8 +110,10 @@
|
|
|
98
110
|
{
|
|
99
111
|
"description": "cow",
|
|
100
112
|
"property": "recite",
|
|
101
|
-
"
|
|
102
|
-
|
|
113
|
+
"input": {
|
|
114
|
+
"startVerse": 7,
|
|
115
|
+
"endVerse": 7
|
|
116
|
+
},
|
|
103
117
|
"expected": [
|
|
104
118
|
"I know an old lady who swallowed a cow.",
|
|
105
119
|
"I don't know how she swallowed a cow!",
|
|
@@ -115,8 +129,10 @@
|
|
|
115
129
|
{
|
|
116
130
|
"description": "horse",
|
|
117
131
|
"property": "recite",
|
|
118
|
-
"
|
|
119
|
-
|
|
132
|
+
"input": {
|
|
133
|
+
"startVerse": 8,
|
|
134
|
+
"endVerse": 8
|
|
135
|
+
},
|
|
120
136
|
"expected": [
|
|
121
137
|
"I know an old lady who swallowed a horse.",
|
|
122
138
|
"She's dead, of course!"
|
|
@@ -125,8 +141,10 @@
|
|
|
125
141
|
{
|
|
126
142
|
"description": "multiple verses",
|
|
127
143
|
"property": "recite",
|
|
128
|
-
"
|
|
129
|
-
|
|
144
|
+
"input": {
|
|
145
|
+
"startVerse": 1,
|
|
146
|
+
"endVerse": 3
|
|
147
|
+
},
|
|
130
148
|
"expected": [
|
|
131
149
|
"I know an old lady who swallowed a fly.",
|
|
132
150
|
"I don't know why she swallowed the fly. Perhaps she'll die.",
|
|
@@ -146,8 +164,10 @@
|
|
|
146
164
|
{
|
|
147
165
|
"description": "full song",
|
|
148
166
|
"property": "recite",
|
|
149
|
-
"
|
|
150
|
-
|
|
167
|
+
"input": {
|
|
168
|
+
"startVerse": 1,
|
|
169
|
+
"endVerse": 8
|
|
170
|
+
},
|
|
151
171
|
"expected": [
|
|
152
172
|
"I know an old lady who swallowed a fly.",
|
|
153
173
|
"I don't know why she swallowed the fly. Perhaps she'll die.",
|
|
@@ -204,4 +224,4 @@
|
|
|
204
224
|
]
|
|
205
225
|
}
|
|
206
226
|
]
|
|
207
|
-
}
|
|
227
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
+
title: "ISBN Verifier"
|
|
2
3
|
blurb: "Check if a given string is a valid ISBN-10 number."
|
|
3
4
|
source: "Converting a string into a number and some basic processing utilizing a relatable real world example."
|
|
4
|
-
source_url: "https://en.wikipedia.org/wiki/International_Standard_Book_Number#ISBN-10_check_digit_calculation"
|
|
5
|
+
source_url: "https://en.wikipedia.org/wiki/International_Standard_Book_Number#ISBN-10_check_digit_calculation"
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"exercise": "largest-series-product",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"comments": [
|
|
5
5
|
"A negative expected value means the input is invalid.",
|
|
6
6
|
"Different languages may handle this differently.",
|
|
7
7
|
"e.g. raise exceptions, return (int, error), return Option<int>, etc.",
|
|
8
|
-
|
|
9
8
|
"Some languages specifically test the string->digits conversion",
|
|
10
9
|
"and the 'slices of size N' operation.",
|
|
11
10
|
"These cases *deliberately* do not cover those two operations.",
|
|
@@ -18,71 +17,91 @@
|
|
|
18
17
|
{
|
|
19
18
|
"description": "finds the largest product if span equals length",
|
|
20
19
|
"property": "largestProduct",
|
|
21
|
-
"
|
|
22
|
-
|
|
20
|
+
"input": {
|
|
21
|
+
"digits": "29",
|
|
22
|
+
"span": 2
|
|
23
|
+
},
|
|
23
24
|
"expected": 18
|
|
24
25
|
},
|
|
25
26
|
{
|
|
26
27
|
"description": "can find the largest product of 2 with numbers in order",
|
|
27
28
|
"property": "largestProduct",
|
|
28
|
-
"
|
|
29
|
-
|
|
29
|
+
"input": {
|
|
30
|
+
"digits": "0123456789",
|
|
31
|
+
"span": 2
|
|
32
|
+
},
|
|
30
33
|
"expected": 72
|
|
31
34
|
},
|
|
32
35
|
{
|
|
33
36
|
"description": "can find the largest product of 2",
|
|
34
37
|
"property": "largestProduct",
|
|
35
|
-
"
|
|
36
|
-
|
|
38
|
+
"input": {
|
|
39
|
+
"digits": "576802143",
|
|
40
|
+
"span": 2
|
|
41
|
+
},
|
|
37
42
|
"expected": 48
|
|
38
43
|
},
|
|
39
44
|
{
|
|
40
45
|
"description": "can find the largest product of 3 with numbers in order",
|
|
41
46
|
"property": "largestProduct",
|
|
42
|
-
"
|
|
43
|
-
|
|
47
|
+
"input": {
|
|
48
|
+
"digits": "0123456789",
|
|
49
|
+
"span": 3
|
|
50
|
+
},
|
|
44
51
|
"expected": 504
|
|
45
52
|
},
|
|
46
53
|
{
|
|
47
54
|
"description": "can find the largest product of 3",
|
|
48
55
|
"property": "largestProduct",
|
|
49
|
-
"
|
|
50
|
-
|
|
56
|
+
"input": {
|
|
57
|
+
"digits": "1027839564",
|
|
58
|
+
"span": 3
|
|
59
|
+
},
|
|
51
60
|
"expected": 270
|
|
52
61
|
},
|
|
53
62
|
{
|
|
54
63
|
"description": "can find the largest product of 5 with numbers in order",
|
|
55
64
|
"property": "largestProduct",
|
|
56
|
-
"
|
|
57
|
-
|
|
65
|
+
"input": {
|
|
66
|
+
"digits": "0123456789",
|
|
67
|
+
"span": 5
|
|
68
|
+
},
|
|
58
69
|
"expected": 15120
|
|
59
70
|
},
|
|
60
71
|
{
|
|
61
72
|
"description": "can get the largest product of a big number",
|
|
62
73
|
"property": "largestProduct",
|
|
63
|
-
"
|
|
64
|
-
|
|
74
|
+
"input": {
|
|
75
|
+
"digits": "73167176531330624919225119674426574742355349194934",
|
|
76
|
+
"span": 6
|
|
77
|
+
},
|
|
65
78
|
"expected": 23520
|
|
66
79
|
},
|
|
67
80
|
{
|
|
68
81
|
"description": "reports zero if the only digits are zero",
|
|
69
82
|
"property": "largestProduct",
|
|
70
|
-
"
|
|
71
|
-
|
|
83
|
+
"input": {
|
|
84
|
+
"digits": "0000",
|
|
85
|
+
"span": 2
|
|
86
|
+
},
|
|
72
87
|
"expected": 0
|
|
73
88
|
},
|
|
74
89
|
{
|
|
75
90
|
"description": "reports zero if all spans include zero",
|
|
76
91
|
"property": "largestProduct",
|
|
77
|
-
"
|
|
78
|
-
|
|
92
|
+
"input": {
|
|
93
|
+
"digits": "99099",
|
|
94
|
+
"span": 3
|
|
95
|
+
},
|
|
79
96
|
"expected": 0
|
|
80
97
|
},
|
|
81
98
|
{
|
|
82
99
|
"description": "rejects span longer than string length",
|
|
83
100
|
"property": "largestProduct",
|
|
84
|
-
"
|
|
85
|
-
|
|
101
|
+
"input": {
|
|
102
|
+
"digits": "123",
|
|
103
|
+
"span": 4
|
|
104
|
+
},
|
|
86
105
|
"expected": -1
|
|
87
106
|
},
|
|
88
107
|
{
|
|
@@ -102,8 +121,10 @@
|
|
|
102
121
|
],
|
|
103
122
|
"description": "reports 1 for empty string and empty product (0 span)",
|
|
104
123
|
"property": "largestProduct",
|
|
105
|
-
"
|
|
106
|
-
|
|
124
|
+
"input": {
|
|
125
|
+
"digits": "",
|
|
126
|
+
"span": 0
|
|
127
|
+
},
|
|
107
128
|
"expected": 1
|
|
108
129
|
},
|
|
109
130
|
{
|
|
@@ -113,30 +134,38 @@
|
|
|
113
134
|
],
|
|
114
135
|
"description": "reports 1 for nonempty string and empty product (0 span)",
|
|
115
136
|
"property": "largestProduct",
|
|
116
|
-
"
|
|
117
|
-
|
|
137
|
+
"input": {
|
|
138
|
+
"digits": "123",
|
|
139
|
+
"span": 0
|
|
140
|
+
},
|
|
118
141
|
"expected": 1
|
|
119
142
|
},
|
|
120
143
|
{
|
|
121
144
|
"description": "rejects empty string and nonzero span",
|
|
122
145
|
"property": "largestProduct",
|
|
123
|
-
"
|
|
124
|
-
|
|
146
|
+
"input": {
|
|
147
|
+
"digits": "",
|
|
148
|
+
"span": 1
|
|
149
|
+
},
|
|
125
150
|
"expected": -1
|
|
126
151
|
},
|
|
127
152
|
{
|
|
128
153
|
"description": "rejects invalid character in digits",
|
|
129
154
|
"property": "largestProduct",
|
|
130
|
-
"
|
|
131
|
-
|
|
155
|
+
"input": {
|
|
156
|
+
"digits": "1234a5",
|
|
157
|
+
"span": 2
|
|
158
|
+
},
|
|
132
159
|
"expected": -1
|
|
133
160
|
},
|
|
134
161
|
{
|
|
135
162
|
"description": "rejects negative span",
|
|
136
163
|
"property": "largestProduct",
|
|
137
|
-
"
|
|
138
|
-
|
|
164
|
+
"input": {
|
|
165
|
+
"digits": "12345",
|
|
166
|
+
"span": -1
|
|
167
|
+
},
|
|
139
168
|
"expected": -1
|
|
140
169
|
}
|
|
141
170
|
]
|
|
142
|
-
}
|
|
171
|
+
}
|
|
@@ -1,30 +1,38 @@
|
|
|
1
1
|
{
|
|
2
2
|
"exercise": "leap",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"cases": [
|
|
5
5
|
{
|
|
6
6
|
"description": "year not divisible by 4: common year",
|
|
7
7
|
"property": "leapYear",
|
|
8
|
-
"input":
|
|
8
|
+
"input": {
|
|
9
|
+
"year": 2015
|
|
10
|
+
},
|
|
9
11
|
"expected": false
|
|
10
12
|
},
|
|
11
13
|
{
|
|
12
14
|
"description": "year divisible by 4, not divisible by 100: leap year",
|
|
13
15
|
"property": "leapYear",
|
|
14
|
-
"input":
|
|
16
|
+
"input": {
|
|
17
|
+
"year": 1996
|
|
18
|
+
},
|
|
15
19
|
"expected": true
|
|
16
20
|
},
|
|
17
21
|
{
|
|
18
22
|
"description": "year divisible by 100, not divisible by 400: common year",
|
|
19
23
|
"property": "leapYear",
|
|
20
|
-
"input":
|
|
24
|
+
"input": {
|
|
25
|
+
"year": 2100
|
|
26
|
+
},
|
|
21
27
|
"expected": false
|
|
22
28
|
},
|
|
23
29
|
{
|
|
24
30
|
"description": "year divisible by 400: leap year",
|
|
25
31
|
"property": "leapYear",
|
|
26
|
-
"input":
|
|
32
|
+
"input": {
|
|
33
|
+
"year": 2000
|
|
34
|
+
},
|
|
27
35
|
"expected": true
|
|
28
36
|
}
|
|
29
37
|
]
|
|
30
|
-
}
|
|
38
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"exercise": "list-ops",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"comments": [
|
|
5
5
|
"Though there are no specifications here for dealing with large lists,",
|
|
6
6
|
"implementers may add tests for handling large lists to ensure that the",
|
|
@@ -57,14 +57,14 @@
|
|
|
57
57
|
"description": "empty list",
|
|
58
58
|
"property": "filter",
|
|
59
59
|
"list": [],
|
|
60
|
-
"function": "
|
|
60
|
+
"function": "(x) -> x modulo 2 == 1",
|
|
61
61
|
"expected": []
|
|
62
62
|
},
|
|
63
63
|
{
|
|
64
64
|
"description": "non-empty list",
|
|
65
65
|
"property": "filter",
|
|
66
66
|
"list": [1, 2, 3, 5],
|
|
67
|
-
"function": "
|
|
67
|
+
"function": "(x) -> x modulo 2 == 1",
|
|
68
68
|
"expected": [1, 3, 5]
|
|
69
69
|
}
|
|
70
70
|
]
|
|
@@ -87,20 +87,20 @@
|
|
|
87
87
|
]
|
|
88
88
|
},
|
|
89
89
|
{
|
|
90
|
-
"description": "return a list of elements
|
|
90
|
+
"description": "return a list of elements whose values equal the list value transformed by the mapping function",
|
|
91
91
|
"cases": [
|
|
92
92
|
{
|
|
93
93
|
"description": "empty list",
|
|
94
94
|
"property": "map",
|
|
95
95
|
"list": [],
|
|
96
|
-
"function": "
|
|
96
|
+
"function": "(x) -> x + 1",
|
|
97
97
|
"expected": []
|
|
98
98
|
},
|
|
99
99
|
{
|
|
100
100
|
"description": "non-empty list",
|
|
101
101
|
"property": "map",
|
|
102
102
|
"list": [1, 3, 5, 7],
|
|
103
|
-
"function": "
|
|
103
|
+
"function": "(x) -> x + 1",
|
|
104
104
|
"expected": [2, 4, 6, 8]
|
|
105
105
|
}
|
|
106
106
|
]
|