trackler 2.2.1.62 → 2.2.1.63
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/all-your-base/canonical-data.json +20 -29
- data/problem-specifications/exercises/forth/canonical-data.json +52 -5
- data/problem-specifications/exercises/isbn-verifier/canonical-data.json +15 -15
- data/problem-specifications/exercises/protein-translation/canonical-data.json +153 -0
- data/problem-specifications/exercises/reverse-string/canonical-data.json +39 -0
- data/problem-specifications/exercises/reverse-string/description.md +5 -0
- data/problem-specifications/exercises/reverse-string/metadata.yml +5 -0
- data/tracks/c/config.json +42 -41
- data/tracks/csharp/config.json +13 -0
- data/tracks/csharp/exercises/Exercises.sln +6 -0
- data/tracks/csharp/exercises/isbn-verifier/Example.cs +27 -0
- data/tracks/csharp/exercises/isbn-verifier/IsbnVerifier.cs +9 -0
- data/tracks/csharp/exercises/isbn-verifier/IsbnVerifier.csproj +19 -0
- data/tracks/csharp/exercises/isbn-verifier/IsbnVerifierTest.cs +84 -0
- data/tracks/csharp/exercises/isbn-verifier/README.md +40 -0
- data/tracks/csharp/generators/Exercises/IsbnVerifier.cs +15 -0
- data/tracks/delphi/config.json +28 -28
- data/tracks/erlang/config.json +10 -0
- data/tracks/erlang/exercises/accumulate/rebar.config +1 -1
- data/tracks/erlang/exercises/accumulate/test/accumulate_tests.erl +9 -7
- data/tracks/erlang/exercises/all-your-base/rebar.config +1 -1
- data/tracks/erlang/exercises/all-your-base/test/all_your_base_tests.erl +26 -24
- data/tracks/erlang/exercises/allergies/rebar.config +1 -1
- data/tracks/erlang/exercises/allergies/test/allergies_tests.erl +19 -17
- data/tracks/erlang/exercises/anagram/rebar.config +1 -3
- data/tracks/erlang/exercises/anagram/test/anagram_tests.erl +14 -12
- data/tracks/erlang/exercises/atbash-cipher/rebar.config +1 -1
- data/tracks/erlang/exercises/atbash-cipher/test/atbash_cipher_tests.erl +7 -5
- data/tracks/erlang/exercises/bank-account/rebar.config +1 -1
- data/tracks/erlang/exercises/bank-account/test/bank_account_tests.erl +52 -51
- data/tracks/erlang/exercises/beer-song/rebar.config +30 -0
- data/tracks/erlang/exercises/beer-song/test/beer_song_tests.erl +11 -10
- data/tracks/erlang/exercises/bob/rebar.config +1 -1
- data/tracks/erlang/exercises/bob/test/bob_tests.erl +33 -35
- data/tracks/erlang/exercises/circular-buffer/rebar.config +1 -1
- data/tracks/erlang/exercises/circular-buffer/test/circular_buffer_tests.erl +33 -32
- data/tracks/erlang/exercises/clock/rebar.config +1 -1
- data/tracks/erlang/exercises/clock/test/clock_tests.erl +57 -50
- data/tracks/erlang/exercises/collatz-conjecture/rebar.config +1 -1
- data/tracks/erlang/exercises/collatz-conjecture/test/collatz_conjecture_tests.erl +11 -9
- data/tracks/erlang/exercises/complex-numbers/rebar.config +1 -1
- data/tracks/erlang/exercises/complex-numbers/test/complex_numbers_tests.erl +102 -76
- data/tracks/erlang/exercises/custom-set/rebar.config +1 -1
- data/tracks/erlang/exercises/custom-set/test/custom_set_tests.erl +100 -109
- data/tracks/erlang/exercises/difference-of-squares/rebar.config +1 -1
- data/tracks/erlang/exercises/difference-of-squares/test/difference_of_squares_tests.erl +8 -7
- data/tracks/erlang/exercises/etl/rebar.config +1 -1
- data/tracks/erlang/exercises/etl/test/etl_tests.erl +6 -5
- data/tracks/erlang/exercises/gigasecond/rebar.config +1 -1
- data/tracks/erlang/exercises/gigasecond/test/gigasecond_tests.erl +9 -8
- data/tracks/erlang/exercises/grade-school/rebar.config +1 -1
- data/tracks/erlang/exercises/grade-school/test/grade_school_tests.erl +27 -23
- data/tracks/erlang/exercises/grains/rebar.config +1 -1
- data/tracks/erlang/exercises/grains/test/grains_tests.erl +7 -6
- data/tracks/erlang/exercises/hamming/rebar.config +1 -1
- data/tracks/erlang/exercises/hamming/test/hamming_tests.erl +20 -23
- data/tracks/erlang/exercises/hello-world/rebar.config +1 -1
- data/tracks/erlang/exercises/hello-world/test/hello_world_tests.erl +6 -4
- data/tracks/erlang/exercises/isogram/rebar.config +1 -1
- data/tracks/erlang/exercises/isogram/test/isogram_tests.erl +14 -12
- data/tracks/erlang/exercises/largest-series-product/rebar.config +1 -1
- data/tracks/erlang/exercises/largest-series-product/test/largest_series_product_tests.erl +22 -21
- data/tracks/erlang/exercises/leap/rebar.config +1 -1
- data/tracks/erlang/exercises/leap/test/leap_tests.erl +8 -7
- data/tracks/erlang/exercises/luhn/rebar.config +1 -1
- data/tracks/erlang/exercises/luhn/test/luhn_tests.erl +18 -16
- data/tracks/erlang/exercises/meetup/rebar.config +1 -1
- data/tracks/erlang/exercises/meetup/test/meetup_tests.erl +96 -95
- data/tracks/erlang/exercises/nucleotide-count/rebar.config +1 -1
- data/tracks/erlang/exercises/nucleotide-count/test/nucleotide_count_tests.erl +12 -11
- data/tracks/erlang/exercises/pangram/README.md +60 -0
- data/tracks/erlang/exercises/{accumulate → pangram}/include/exercism.hrl +0 -0
- data/tracks/erlang/exercises/{beer-song/rebar.conf → pangram/rebar.config} +0 -0
- data/tracks/erlang/exercises/pangram/src/example.erl +11 -0
- data/tracks/erlang/exercises/pangram/src/pangram.app.src +9 -0
- data/tracks/erlang/exercises/pangram/src/pangram.erl +8 -0
- data/tracks/erlang/exercises/pangram/test/pangram_tests.erl +38 -0
- data/tracks/erlang/exercises/parallel-letter-frequency/rebar.config +1 -1
- data/tracks/erlang/exercises/parallel-letter-frequency/test/parallel_letter_frequency_tests.erl +7 -6
- data/tracks/erlang/exercises/phone-number/rebar.config +1 -1
- data/tracks/erlang/exercises/phone-number/test/phone_number_tests.erl +13 -12
- data/tracks/erlang/exercises/rna-transcription/rebar.config +1 -1
- data/tracks/erlang/exercises/rna-transcription/test/rna_transcription_tests.erl +13 -11
- data/tracks/erlang/exercises/robot-simulator/rebar.config +1 -1
- data/tracks/erlang/exercises/robot-simulator/test/robot_simulator_tests.erl +70 -69
- data/tracks/erlang/exercises/roman-numerals/rebar.config +1 -1
- data/tracks/erlang/exercises/roman-numerals/test/roman_numerals_tests.erl +6 -5
- data/tracks/erlang/exercises/rotational-cipher/rebar.config +1 -8
- data/tracks/erlang/exercises/rotational-cipher/test/rotational_cipher_tests.erl +29 -27
- data/tracks/erlang/exercises/scrabble-score/rebar.config +1 -1
- data/tracks/erlang/exercises/scrabble-score/test/scrabble_score_tests.erl +6 -5
- data/tracks/erlang/exercises/series/rebar.config +1 -1
- data/tracks/erlang/exercises/series/test/series_tests.erl +6 -5
- data/tracks/erlang/exercises/sieve/rebar.config +1 -1
- data/tracks/erlang/exercises/sieve/test/sieve_tests.erl +10 -8
- data/tracks/erlang/exercises/space-age/rebar.config +1 -1
- data/tracks/erlang/exercises/space-age/test/space_age_tests.erl +20 -19
- data/tracks/erlang/exercises/spiral-matrix/rebar.config +1 -1
- data/tracks/erlang/exercises/spiral-matrix/test/spiral_matrix_tests.erl +12 -10
- data/tracks/erlang/exercises/strain/rebar.config +1 -1
- data/tracks/erlang/exercises/strain/test/strain_tests.erl +17 -16
- data/tracks/erlang/exercises/sum-of-multiples/rebar.config +1 -1
- data/tracks/erlang/exercises/sum-of-multiples/test/sum_of_multiples_tests.erl +16 -15
- data/tracks/erlang/exercises/triangle/rebar.config +1 -1
- data/tracks/erlang/exercises/triangle/test/triangle_tests.erl +20 -19
- data/tracks/erlang/exercises/two-fer/rebar.config +1 -1
- data/tracks/erlang/exercises/two-fer/test/two_fer_tests.erl +8 -7
- data/tracks/erlang/exercises/word-count/rebar.config +1 -1
- data/tracks/erlang/exercises/word-count/test/word_count_tests.erl +6 -5
- data/tracks/erlang/exercises/zipper/rebar.config +1 -1
- data/tracks/erlang/exercises/zipper/test/zipper_tests.erl +47 -46
- data/tracks/erlang/testgen/src/tgen.erl +8 -6
- data/tracks/erlang/testgen/src/tgen_bob.erl +1 -1
- data/tracks/erlang/testgen/src/tgen_collatz-conjecture.erl +2 -2
- data/tracks/erlang/testgen/src/tgen_complex-numbers.erl +11 -11
- data/tracks/erlang/testgen/src/tgen_custom-set.erl +14 -14
- data/tracks/erlang/testgen/src/tgen_hamming.erl +2 -2
- data/tracks/erlang/testgen/src/tgen_hello-world.erl +1 -1
- data/tracks/erlang/testgen/src/tgen_leap.erl +1 -1
- data/tracks/erlang/testgen/src/tgen_rna-transcription.erl +2 -2
- data/tracks/erlang/testgen/src/tgs.erl +6 -0
- data/tracks/fsharp/exercises/beer-song/BeerSong.fs +1 -5
- data/tracks/fsharp/exercises/beer-song/BeerSongTest.fs +342 -20
- data/tracks/fsharp/exercises/beer-song/Example.fs +16 -10
- data/tracks/fsharp/exercises/food-chain/Example.fs +1 -1
- data/tracks/fsharp/exercises/food-chain/FoodChain.fs +1 -3
- data/tracks/fsharp/exercises/food-chain/FoodChainTest.fs +11 -11
- data/tracks/fsharp/exercises/house/Example.fs +1 -1
- data/tracks/fsharp/exercises/house/House.fs +1 -3
- data/tracks/fsharp/exercises/house/HouseTest.fs +202 -202
- data/tracks/fsharp/exercises/proverb/Example.fs +9 -9
- data/tracks/fsharp/exercises/proverb/Proverb.fs +1 -3
- data/tracks/fsharp/exercises/proverb/ProverbTest.fs +50 -21
- data/tracks/fsharp/exercises/twelve-days/Example.fs +4 -4
- data/tracks/fsharp/exercises/twelve-days/TwelveDays.fs +2 -6
- data/tracks/fsharp/exercises/twelve-days/TwelveDaysTest.fs +81 -57
- data/tracks/fsharp/generators/Generators.fs +39 -15
- data/tracks/go/bin/run-generators +5 -1
- data/tracks/go/config.json +14 -2
- data/tracks/go/exercises/accumulate/example.go +2 -1
- data/tracks/go/exercises/zebra-puzzle/.meta/hints.md +24 -0
- data/tracks/go/exercises/zebra-puzzle/README.md +76 -0
- data/tracks/go/exercises/zebra-puzzle/example.go +256 -0
- data/tracks/go/exercises/zebra-puzzle/zebra_puzzle_test.go +18 -0
- data/tracks/haskell/exercises/forth/package.yaml +1 -1
- data/tracks/haskell/exercises/forth/test/Tests.hs +1 -4
- data/tracks/haskell/exercises/pascals-triangle/package.yaml +1 -1
- data/tracks/haskell/exercises/pascals-triangle/test/Tests.hs +22 -1
- data/tracks/java/POLICIES.md +3 -3
- data/tracks/java/config.json +21 -2
- data/tracks/java/exercises/atbash-cipher/.meta/src/reference/java/Atbash.java +12 -12
- data/tracks/java/exercises/protein-translation/.meta/src/reference/java/ProteinTranslator.java +47 -0
- data/tracks/java/exercises/protein-translation/.meta/version +1 -0
- data/tracks/java/exercises/protein-translation/README.md +58 -0
- data/tracks/java/exercises/protein-translation/build.gradle +18 -0
- data/tracks/java/exercises/protein-translation/src/main/java/ProteinTranslator.java +8 -0
- data/tracks/java/exercises/protein-translation/src/test/java/ProteinTranslatorTest.java +179 -0
- data/tracks/java/exercises/settings.gradle +1 -0
- data/tracks/javascript/.eslintignore +2 -2
- data/tracks/javascript/exercises/accumulate/example.js +1 -2
- data/tracks/javascript/exercises/grains/example.js +6 -3
- data/tracks/kotlin/exercises/beer-song/.meta/src/reference/kotlin/BeerSong.kt +3 -3
- data/tracks/kotlin/exercises/beer-song/.meta/version +1 -1
- data/tracks/kotlin/exercises/beer-song/README.md +1 -1
- data/tracks/kotlin/exercises/beer-song/src/test/kotlin/BeerSongTest.kt +6 -6
- data/tracks/kotlin/exercises/forth/.meta/version +1 -1
- data/tracks/kotlin/exercises/forth/src/test/kotlin/ForthEvaluatorTest.kt +0 -7
- data/tracks/kotlin/exercises/meetup/README.md +16 -12
- data/tracks/kotlin/exercises/nth-prime/.meta/src/reference/kotlin/Prime.kt +7 -2
- data/tracks/kotlin/exercises/nth-prime/.meta/version +1 -1
- data/tracks/kotlin/exercises/nth-prime/src/test/kotlin/PrimeTest.kt +10 -1
- data/tracks/kotlin/exercises/nucleotide-count/README.md +2 -2
- data/tracks/kotlin/exercises/pascals-triangle/.meta/src/reference/kotlin/PascalsTriangle.kt +1 -1
- data/tracks/kotlin/exercises/pascals-triangle/.meta/version +1 -1
- data/tracks/kotlin/exercises/pascals-triangle/src/test/kotlin/PascalsTriangleTest.kt +58 -1
- data/tracks/kotlin/exercises/sum-of-multiples/README.md +3 -3
- data/tracks/ocaml/exercises/forth/test.ml +1 -3
- data/tracks/ocaml/exercises/rectangles/example.ml +11 -11
- data/tracks/php/exercises/bob/example.php +2 -2
- data/tracks/purescript/config.json +3 -3
- data/tracks/python/config.json +34 -22
- data/tracks/python/exercises/alphametics/example.py +90 -34
- data/tracks/python/exercises/ocr-numbers/example.py +18 -21
- data/tracks/python/exercises/ocr-numbers/ocr_numbers.py +1 -5
- data/tracks/python/exercises/ocr-numbers/ocr_numbers_test.py +124 -106
- data/tracks/python/exercises/simple-linked-list/README.md +49 -0
- data/tracks/python/exercises/simple-linked-list/example.py +67 -0
- data/tracks/python/exercises/simple-linked-list/hints.md +10 -0
- data/tracks/python/exercises/simple-linked-list/simple_linked_list.py +33 -0
- data/tracks/python/exercises/simple-linked-list/simple_linked_list_test.py +112 -0
- data/tracks/rust/README.md +2 -0
- data/tracks/rust/bin/init_exercise.py +586 -0
- data/tracks/rust/config.json +20 -10
- data/tracks/rust/exercises/book-store/.gitignore +3 -0
- data/tracks/rust/exercises/book-store/Cargo-example.toml +7 -0
- data/tracks/rust/exercises/book-store/Cargo.toml +6 -0
- data/tracks/rust/exercises/book-store/README.md +107 -0
- data/tracks/rust/exercises/book-store/example.rs +187 -0
- data/tracks/rust/exercises/book-store/src/lib.rs +3 -0
- data/tracks/rust/exercises/book-store/tests/book-store.rs +130 -0
- data/tracks/sml/config.json +8 -8
- data/tracks/typescript/config.json +6 -6
- metadata +43 -46
- data/tracks/erlang/exercises/all-your-base/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/allergies/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/anagram/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/atbash-cipher/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/bank-account/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/beer-song/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/bob/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/circular-buffer/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/clock/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/collatz-conjecture/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/complex-numbers/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/custom-set/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/difference-of-squares/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/etl/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/gigasecond/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/grade-school/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/grains/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/hamming/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/hello-world/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/isogram/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/largest-series-product/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/leap/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/luhn/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/meetup/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/nucleotide-count/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/parallel-letter-frequency/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/phone-number/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/rna-transcription/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/robot-simulator/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/roman-numerals/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/rotational-cipher/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/scrabble-score/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/series/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/sieve/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/space-age/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/spiral-matrix/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/strain/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/sum-of-multiples/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/triangle/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/two-fer/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/word-count/include/exercism.hrl +0 -11
- data/tracks/erlang/exercises/zipper/include/exercism.hrl +0 -11
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 985e2ec336306b1046f8da6feb634a14e068b7fd
|
|
4
|
+
data.tar.gz: f45ef713d40338b0e38ad34a68c6dddc71c19a1f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 68bbdd588b0c868aa758eabdf9f8b75979fe3d51381c0366ceff7deb718e4287238ad8840981175501f62c5b7068a8b4a8708100c5c8a9eb48f93e2435bb92c0
|
|
7
|
+
data.tar.gz: e236fc32bcdb8620dfac8ae19c8f97e80dd45298cdcbec8c5d1ee34c0503036b5cfdf697aafe40629c3040a7f2ec5bacfdc1ed177bc1ce735ffe1022c0453492
|
data/lib/trackler/version.rb
CHANGED
|
@@ -1,23 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"exercise": "all-your-base",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"comments": [
|
|
5
|
-
"
|
|
5
|
+
"This canonical data makes the following choices:",
|
|
6
|
+
"1. Zero is always represented in outputs as [0] instead of [].",
|
|
7
|
+
"2. In no other instances are leading zeroes present in any outputs.",
|
|
8
|
+
"3. Leading zeroes are accepted in inputs.",
|
|
9
|
+
"4. An empty sequence of input digits is considered zero, rather than an error.",
|
|
6
10
|
"",
|
|
7
|
-
"
|
|
8
|
-
" - []?",
|
|
9
|
-
" - [0]?",
|
|
10
|
-
"",
|
|
11
|
-
"2. What representations of zero are allowed?",
|
|
12
|
-
" - []?",
|
|
13
|
-
" - [0]?",
|
|
14
|
-
" - [0,0]?",
|
|
15
|
-
"",
|
|
16
|
-
"3. Are leading zeroes allowed?",
|
|
17
|
-
"",
|
|
18
|
-
"4. How should invalid input be handled?",
|
|
19
|
-
"",
|
|
20
|
-
"All the undefined cases are marked as null.",
|
|
11
|
+
"Tracks that wish to make different decisions for these choices may translate appropriately.",
|
|
21
12
|
"",
|
|
22
13
|
"All your numeric-base are belong to [2..]. :)"
|
|
23
14
|
],
|
|
@@ -92,7 +83,7 @@
|
|
|
92
83
|
"input_base": 2,
|
|
93
84
|
"input_digits": [],
|
|
94
85
|
"output_base": 10,
|
|
95
|
-
"expected":
|
|
86
|
+
"expected": [0]
|
|
96
87
|
},
|
|
97
88
|
{
|
|
98
89
|
"description": "single zero",
|
|
@@ -100,7 +91,7 @@
|
|
|
100
91
|
"input_base": 10,
|
|
101
92
|
"input_digits": [0],
|
|
102
93
|
"output_base": 2,
|
|
103
|
-
"expected":
|
|
94
|
+
"expected": [0]
|
|
104
95
|
},
|
|
105
96
|
{
|
|
106
97
|
"description": "multiple zeros",
|
|
@@ -108,7 +99,7 @@
|
|
|
108
99
|
"input_base": 10,
|
|
109
100
|
"input_digits": [0, 0, 0],
|
|
110
101
|
"output_base": 2,
|
|
111
|
-
"expected":
|
|
102
|
+
"expected": [0]
|
|
112
103
|
},
|
|
113
104
|
{
|
|
114
105
|
"description": "leading zeros",
|
|
@@ -116,7 +107,7 @@
|
|
|
116
107
|
"input_base": 7,
|
|
117
108
|
"input_digits": [0, 6, 0],
|
|
118
109
|
"output_base": 10,
|
|
119
|
-
"expected":
|
|
110
|
+
"expected": [4, 2]
|
|
120
111
|
},
|
|
121
112
|
{
|
|
122
113
|
"description": "first base is one",
|
|
@@ -124,7 +115,7 @@
|
|
|
124
115
|
"input_base": 1,
|
|
125
116
|
"input_digits": [],
|
|
126
117
|
"output_base": 10,
|
|
127
|
-
"expected":
|
|
118
|
+
"expected": {"error": "input base must be >= 2"}
|
|
128
119
|
},
|
|
129
120
|
{
|
|
130
121
|
"description": "first base is zero",
|
|
@@ -132,7 +123,7 @@
|
|
|
132
123
|
"input_base": 0,
|
|
133
124
|
"input_digits": [],
|
|
134
125
|
"output_base": 10,
|
|
135
|
-
"expected":
|
|
126
|
+
"expected": {"error": "input base must be >= 2"}
|
|
136
127
|
},
|
|
137
128
|
{
|
|
138
129
|
"description": "first base is negative",
|
|
@@ -140,7 +131,7 @@
|
|
|
140
131
|
"input_base": -2,
|
|
141
132
|
"input_digits": [1],
|
|
142
133
|
"output_base": 10,
|
|
143
|
-
"expected":
|
|
134
|
+
"expected": {"error": "input base must be >= 2"}
|
|
144
135
|
},
|
|
145
136
|
{
|
|
146
137
|
"description": "negative digit",
|
|
@@ -148,7 +139,7 @@
|
|
|
148
139
|
"input_base": 2,
|
|
149
140
|
"input_digits": [1, -1, 1, 0, 1, 0],
|
|
150
141
|
"output_base": 10,
|
|
151
|
-
"expected":
|
|
142
|
+
"expected": {"error": "all digits must satisfy 0 <= d < input base"}
|
|
152
143
|
},
|
|
153
144
|
{
|
|
154
145
|
"description": "invalid positive digit",
|
|
@@ -156,7 +147,7 @@
|
|
|
156
147
|
"input_base": 2,
|
|
157
148
|
"input_digits": [1, 2, 1, 0, 1, 0],
|
|
158
149
|
"output_base": 10,
|
|
159
|
-
"expected":
|
|
150
|
+
"expected": {"error": "all digits must satisfy 0 <= d < input base"}
|
|
160
151
|
},
|
|
161
152
|
{
|
|
162
153
|
"description": "second base is one",
|
|
@@ -164,7 +155,7 @@
|
|
|
164
155
|
"input_base": 2,
|
|
165
156
|
"input_digits": [1, 0, 1, 0, 1, 0],
|
|
166
157
|
"output_base": 1,
|
|
167
|
-
"expected":
|
|
158
|
+
"expected": {"error": "output base must be >= 2"}
|
|
168
159
|
},
|
|
169
160
|
{
|
|
170
161
|
"description": "second base is zero",
|
|
@@ -172,7 +163,7 @@
|
|
|
172
163
|
"input_base": 10,
|
|
173
164
|
"input_digits": [7],
|
|
174
165
|
"output_base": 0,
|
|
175
|
-
"expected":
|
|
166
|
+
"expected": {"error": "output base must be >= 2"}
|
|
176
167
|
},
|
|
177
168
|
{
|
|
178
169
|
"description": "second base is negative",
|
|
@@ -180,7 +171,7 @@
|
|
|
180
171
|
"input_base": 2,
|
|
181
172
|
"input_digits": [1],
|
|
182
173
|
"output_base": -7,
|
|
183
|
-
"expected":
|
|
174
|
+
"expected": {"error": "output base must be >= 2"}
|
|
184
175
|
},
|
|
185
176
|
{
|
|
186
177
|
"description": "both bases are negative",
|
|
@@ -188,7 +179,7 @@
|
|
|
188
179
|
"input_base": -2,
|
|
189
180
|
"input_digits": [1],
|
|
190
181
|
"output_base": -7,
|
|
191
|
-
"expected":
|
|
182
|
+
"expected": {"error": "input base must be >= 2"}
|
|
192
183
|
}
|
|
193
184
|
]
|
|
194
185
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"exercise": "forth",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"comments": [
|
|
5
5
|
"The cases are split into multiple sections, all with the same structure.",
|
|
6
6
|
"In all cases, the `expected` key is the resulting stack",
|
|
@@ -143,15 +143,15 @@
|
|
|
143
143
|
"description": "dup",
|
|
144
144
|
"cases": [
|
|
145
145
|
{
|
|
146
|
-
"description": "copies
|
|
146
|
+
"description": "copies a value on the stack",
|
|
147
147
|
"property": "evaluate",
|
|
148
|
-
"input": ["1
|
|
148
|
+
"input": ["1 dup"],
|
|
149
149
|
"expected": [1, 1]
|
|
150
150
|
},
|
|
151
151
|
{
|
|
152
|
-
"description": "
|
|
152
|
+
"description": "copies the top value on the stack",
|
|
153
153
|
"property": "evaluate",
|
|
154
|
-
"input": ["1 2
|
|
154
|
+
"input": ["1 2 dup"],
|
|
155
155
|
"expected": [1, 2, 2]
|
|
156
156
|
},
|
|
157
157
|
{
|
|
@@ -305,6 +305,53 @@
|
|
|
305
305
|
"expected": null
|
|
306
306
|
}
|
|
307
307
|
]
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
"description": "case-insensitivity",
|
|
311
|
+
"cases": [
|
|
312
|
+
{
|
|
313
|
+
"description": "DUP is case-insensitive",
|
|
314
|
+
"property": "evaluate",
|
|
315
|
+
"input": ["1 DUP Dup dup"],
|
|
316
|
+
"expected": [1, 1, 1, 1]
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
"description": "DROP is case-insensitive",
|
|
320
|
+
"property": "evaluate",
|
|
321
|
+
"input": ["1 2 3 4 DROP Drop drop"],
|
|
322
|
+
"expected": [1]
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
"description": "SWAP is case-insensitive",
|
|
326
|
+
"property": "evaluate",
|
|
327
|
+
"input": ["1 2 SWAP 3 Swap 4 swap"],
|
|
328
|
+
"expected": [2, 3, 4, 1]
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
"description": "OVER is case-insensitive",
|
|
332
|
+
"property": "evaluate",
|
|
333
|
+
"input": ["1 2 OVER Over over"],
|
|
334
|
+
"expected": [1, 2, 1, 2, 1]
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
"description": "user-defined words are case-insensitive",
|
|
338
|
+
"property": "evaluate",
|
|
339
|
+
"input": [
|
|
340
|
+
": foo dup ;",
|
|
341
|
+
"1 FOO Foo foo"
|
|
342
|
+
],
|
|
343
|
+
"expected": [1, 1, 1, 1]
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"description": "definitions are case-insensitive",
|
|
347
|
+
"property": "evaluate",
|
|
348
|
+
"input": [
|
|
349
|
+
": SWAP DUP Dup dup ;",
|
|
350
|
+
"1 swap"
|
|
351
|
+
],
|
|
352
|
+
"expected": [1, 1, 1, 1]
|
|
353
|
+
}
|
|
354
|
+
]
|
|
308
355
|
}
|
|
309
356
|
]
|
|
310
357
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"exercise": "isbn-verifier",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"comments": [
|
|
5
5
|
"An expected value of true indicates a valid ISBN-10, ",
|
|
6
6
|
"whereas false means the ISBN-10 is invalid."
|
|
@@ -8,81 +8,81 @@
|
|
|
8
8
|
"cases": [
|
|
9
9
|
{
|
|
10
10
|
"description": "valid isbn number",
|
|
11
|
-
"property": "
|
|
11
|
+
"property": "isValid",
|
|
12
12
|
"input": "3-598-21508-8",
|
|
13
13
|
"expected": true
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
"description": "invalid isbn check digit",
|
|
17
|
-
"property": "
|
|
17
|
+
"property": "isValid",
|
|
18
18
|
"input": "3-598-21508-9",
|
|
19
19
|
"expected": false
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
"description": "valid isbn number with a check digit of 10",
|
|
23
|
-
"property": "
|
|
23
|
+
"property": "isValid",
|
|
24
24
|
"input": "3-598-21507-X",
|
|
25
25
|
"expected": true
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
"description": "check digit is a character other than X",
|
|
29
|
-
"property": "
|
|
29
|
+
"property": "isValid",
|
|
30
30
|
"input": "3-598-21507-A",
|
|
31
31
|
"expected": false
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
"description": "invalid character in isbn",
|
|
35
|
-
"property": "
|
|
35
|
+
"property": "isValid",
|
|
36
36
|
"input": "3-598-2K507-0",
|
|
37
37
|
"expected": false
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
40
|
"description": "X is only valid as a check digit",
|
|
41
|
-
"property": "
|
|
41
|
+
"property": "isValid",
|
|
42
42
|
"input": "3-598-2X507-9",
|
|
43
43
|
"expected": false
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
"description": "valid isbn without separating dashes",
|
|
47
|
-
"property": "
|
|
47
|
+
"property": "isValid",
|
|
48
48
|
"input": "3598215088",
|
|
49
49
|
"expected": true
|
|
50
50
|
},
|
|
51
51
|
{
|
|
52
52
|
"description": "isbn without separating dashes and X as check digit",
|
|
53
|
-
"property": "
|
|
53
|
+
"property": "isValid",
|
|
54
54
|
"input": "359821507X",
|
|
55
55
|
"expected": true
|
|
56
56
|
},
|
|
57
57
|
{
|
|
58
58
|
"description": "isbn without check digit and dashes",
|
|
59
|
-
"property": "
|
|
59
|
+
"property": "isValid",
|
|
60
60
|
"input": "359821507",
|
|
61
61
|
"expected": false
|
|
62
62
|
},
|
|
63
63
|
{
|
|
64
64
|
"description": "too long isbn and no dashes",
|
|
65
|
-
"property": "
|
|
65
|
+
"property": "isValid",
|
|
66
66
|
"input": "3598215078X",
|
|
67
67
|
"expected": false
|
|
68
68
|
},
|
|
69
69
|
{
|
|
70
70
|
"description": "isbn without check digit",
|
|
71
|
-
"property": "
|
|
71
|
+
"property": "isValid",
|
|
72
72
|
"input": "3-598-21507",
|
|
73
73
|
"expected": false
|
|
74
74
|
},
|
|
75
75
|
{
|
|
76
76
|
"description": "too long isbn",
|
|
77
|
-
"property": "
|
|
77
|
+
"property": "isValid",
|
|
78
78
|
"input": "3-598-21507-XX",
|
|
79
79
|
"expected": false
|
|
80
80
|
},
|
|
81
81
|
{
|
|
82
82
|
"description": "check digit of X should not be used for 0",
|
|
83
|
-
"property": "
|
|
83
|
+
"property": "isValid",
|
|
84
84
|
"input": "3-598-21515-X",
|
|
85
85
|
"expected": false
|
|
86
86
|
}
|
|
87
87
|
]
|
|
88
|
-
}
|
|
88
|
+
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
{
|
|
2
|
+
"exercise": "protein-translation",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"cases": [
|
|
5
|
+
{
|
|
6
|
+
"description": "Translate input RNA sequences into proteins",
|
|
7
|
+
"comments": [
|
|
8
|
+
"Returns the name of the protein if given RNA is valid, "
|
|
9
|
+
, "else throws an error. "
|
|
10
|
+
],
|
|
11
|
+
"cases": [
|
|
12
|
+
{
|
|
13
|
+
"description": "Methionine RNA sequence",
|
|
14
|
+
"property": "proteins",
|
|
15
|
+
"strand": "AUG",
|
|
16
|
+
"expected": ["Methionine"]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"description": "Phenylalanine RNA sequence 1",
|
|
20
|
+
"property": "proteins",
|
|
21
|
+
"strand": "UUU",
|
|
22
|
+
"expected": ["Phenylalanine"]
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"description": "Phenylalanine RNA sequence 2",
|
|
26
|
+
"property": "proteins",
|
|
27
|
+
"strand": "UUC",
|
|
28
|
+
"expected": ["Phenylalanine"]
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"description": "Leucine RNA sequence 1",
|
|
32
|
+
"property": "proteins",
|
|
33
|
+
"strand": "UUA",
|
|
34
|
+
"expected": ["Leucine"]
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"description": "Leucine RNA sequence 2",
|
|
38
|
+
"property": "proteins",
|
|
39
|
+
"strand": "UUG",
|
|
40
|
+
"expected": ["Leucine"]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"description": "Serine RNA sequence 1",
|
|
44
|
+
"property": "proteins",
|
|
45
|
+
"strand": "UCU",
|
|
46
|
+
"expected": ["Serine"]
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"description": "Serine RNA sequence 2",
|
|
50
|
+
"property": "proteins",
|
|
51
|
+
"strand": "UCC",
|
|
52
|
+
"expected": ["Serine"]
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"description": "Serine RNA sequence 3",
|
|
56
|
+
"property": "proteins",
|
|
57
|
+
"strand": "UCA",
|
|
58
|
+
"expected": ["Serine"]
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"description": "Serine RNA sequence 4",
|
|
62
|
+
"property": "proteins",
|
|
63
|
+
"strand": "UCG",
|
|
64
|
+
"expected": ["Serine"]
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"description": "Tyrosine RNA sequence 1",
|
|
68
|
+
"property": "proteins",
|
|
69
|
+
"strand": "UAU",
|
|
70
|
+
"expected": ["Tyrosine"]
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"description": "Tyrosine RNA sequence 2",
|
|
74
|
+
"property": "proteins",
|
|
75
|
+
"strand": "UAC",
|
|
76
|
+
"expected": ["Tyrosine"]
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"description": "Cysteine RNA sequence 1",
|
|
80
|
+
"property": "proteins",
|
|
81
|
+
"strand": "UGU",
|
|
82
|
+
"expected": ["Cysteine"]
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"description": "Cysteine RNA sequence 2",
|
|
86
|
+
"property": "proteins",
|
|
87
|
+
"strand": "UGC",
|
|
88
|
+
"expected": ["Cysteine"]
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"description": "Tryptophan RNA sequence",
|
|
92
|
+
"property": "proteins",
|
|
93
|
+
"strand": "UGG",
|
|
94
|
+
"expected": ["Tryptophan"]
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"description": "STOP codon RNA sequence 1",
|
|
98
|
+
"property": "proteins",
|
|
99
|
+
"strand": "UAA",
|
|
100
|
+
"expected": []
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"description": "STOP codon RNA sequence 2",
|
|
104
|
+
"property": "proteins",
|
|
105
|
+
"strand": "UAG",
|
|
106
|
+
"expected": []
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"description": "STOP codon RNA sequence 3",
|
|
110
|
+
"property": "proteins",
|
|
111
|
+
"strand": "UGA",
|
|
112
|
+
"expected": []
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"description": "Translate RNA strand into correct protein list",
|
|
116
|
+
"property": "proteins",
|
|
117
|
+
"strand": "AUGUUUUGG",
|
|
118
|
+
"expected": ["Methionine","Phenylalanine","Tryptophan"]
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"description": "Translation stops if STOP codon at beginning of sequence",
|
|
122
|
+
"property": "proteins",
|
|
123
|
+
"strand": "UAGUGG",
|
|
124
|
+
"expected": []
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"description": "Translation stops if STOP codon at end of two-codon sequence",
|
|
128
|
+
"property": "proteins",
|
|
129
|
+
"strand": "UGGUAG",
|
|
130
|
+
"expected": ["Tryptophan"]
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"description": "Translation stops if STOP codon at end of three-codon sequence",
|
|
134
|
+
"property": "proteins",
|
|
135
|
+
"strand": "AUGUUUUAA",
|
|
136
|
+
"expected": ["Methionine","Phenylalanine"]
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"description": "Translation stops if STOP codon in middle of sequence of three-codon sequence",
|
|
140
|
+
"property": "proteins",
|
|
141
|
+
"strand": "UGGUAGUGG",
|
|
142
|
+
"expected": ["Tryptophan"]
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"description": "Translation stops if codon in middle of sequence of six-codon sequence",
|
|
146
|
+
"property": "proteins",
|
|
147
|
+
"strand": "UGGUGUUAUUAAUGGUUU",
|
|
148
|
+
"expected": ["Tryptophan","Cysteine","Tyrosine"]
|
|
149
|
+
}
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
]
|
|
153
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"exercise": "reverse-string",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"comments": [
|
|
5
|
+
"If property based testing tools are available, a good property to test is reversing a string twice: reverse(reverse(string)) == string"
|
|
6
|
+
],
|
|
7
|
+
"cases": [
|
|
8
|
+
{
|
|
9
|
+
"description": "empty string",
|
|
10
|
+
"property": "reverse",
|
|
11
|
+
"input": "",
|
|
12
|
+
"expected": ""
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"description": "a word",
|
|
16
|
+
"property": "reverse",
|
|
17
|
+
"input": "robot",
|
|
18
|
+
"expected": "tobor"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"description": "a capitalized word",
|
|
22
|
+
"property": "reverse",
|
|
23
|
+
"input": "Ramen",
|
|
24
|
+
"expected": "nemaR"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"description": "a sentence with punctuation",
|
|
28
|
+
"property": "reverse",
|
|
29
|
+
"input": "I'm hungry!",
|
|
30
|
+
"expected": "!yrgnuh m'I"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"description": "a palindrome",
|
|
34
|
+
"property": "reverse",
|
|
35
|
+
"input": "racecar",
|
|
36
|
+
"expected": "racecar"
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
}
|