trackler 2.2.1.171 → 2.2.1.172
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/tracks/go/exercises/dominoes/.meta/gen.go +1 -1
- data/tracks/go/exercises/dominoes/cases_test.go +11 -11
- data/tracks/ocaml/config.json +1 -1
- data/tracks/ocaml/docs/ABOUT.md +6 -4
- data/tracks/powershell/config.json +3 -2
- data/tracks/rust/bin/format_exercises +31 -0
- data/tracks/rust/config.json +10 -2
- data/tracks/rust/config/exercise_readme.go.tmpl +26 -5
- data/tracks/rust/exercises/accumulate/README.md +26 -5
- data/tracks/rust/exercises/accumulate/src/lib.rs +1 -0
- data/tracks/rust/exercises/accumulate/tests/accumulate.rs +7 -7
- data/tracks/rust/exercises/acronym/README.md +26 -5
- data/tracks/rust/exercises/acronym/src/lib.rs +1 -0
- data/tracks/rust/exercises/acronym/tests/acronym.rs +10 -5
- data/tracks/rust/exercises/all-your-base/README.md +26 -5
- data/tracks/rust/exercises/all-your-base/src/lib.rs +6 -1
- data/tracks/rust/exercises/all-your-base/tests/all-your-base.rs +68 -34
- data/tracks/rust/exercises/allergies/README.md +26 -5
- data/tracks/rust/exercises/allergies/src/lib.rs +1 -0
- data/tracks/rust/exercises/allergies/tests/allergies.rs +34 -26
- data/tracks/rust/exercises/alphametics/README.md +26 -5
- data/tracks/rust/exercises/alphametics/tests/alphametics.rs +44 -9
- data/tracks/rust/exercises/anagram/README.md +26 -5
- data/tracks/rust/exercises/anagram/src/lib.rs +1 -0
- data/tracks/rust/exercises/anagram/tests/anagram.rs +15 -4
- data/tracks/rust/exercises/armstrong-numbers/README.md +26 -5
- data/tracks/rust/exercises/atbash-cipher/README.md +26 -5
- data/tracks/rust/exercises/atbash-cipher/src/lib.rs +1 -1
- data/tracks/rust/exercises/atbash-cipher/tests/atbash-cipher.rs +16 -8
- data/tracks/rust/exercises/beer-song/README.md +26 -5
- data/tracks/rust/exercises/binary-search/README.md +26 -5
- data/tracks/rust/exercises/binary-search/src/lib.rs +1 -0
- data/tracks/rust/exercises/binary-search/tests/binary-search.rs +8 -4
- data/tracks/rust/exercises/bob/README.md +26 -5
- data/tracks/rust/exercises/bob/tests/bob.rs +32 -15
- data/tracks/rust/exercises/book-store/README.md +26 -5
- data/tracks/rust/exercises/book-store/src/lib.rs +4 -1
- data/tracks/rust/exercises/book-store/tests/book-store.rs +52 -24
- data/tracks/rust/exercises/bowling/README.md +26 -5
- data/tracks/rust/exercises/bowling/src/lib.rs +1 -2
- data/tracks/rust/exercises/bowling/tests/bowling.rs +2 -1
- data/tracks/rust/exercises/bracket-push/README.md +29 -7
- data/tracks/rust/exercises/bracket-push/src/lib.rs +1 -0
- data/tracks/rust/exercises/circular-buffer/README.md +26 -5
- data/tracks/rust/exercises/circular-buffer/src/lib.rs +1 -0
- data/tracks/rust/exercises/clock/README.md +26 -5
- data/tracks/rust/exercises/clock/src/lib.rs +1 -0
- data/tracks/rust/exercises/clock/tests/clock.rs +0 -1
- data/tracks/rust/exercises/collatz-conjecture/README.md +26 -5
- data/tracks/rust/exercises/crypto-square/README.md +53 -29
- data/tracks/rust/exercises/custom-set/README.md +26 -5
- data/tracks/rust/exercises/custom-set/src/lib.rs +1 -0
- data/tracks/rust/exercises/decimal/README.md +26 -5
- data/tracks/rust/exercises/decimal/tests/decimal.rs +4 -7
- data/tracks/rust/exercises/diamond/README.md +26 -5
- data/tracks/rust/exercises/difference-of-squares/README.md +26 -5
- data/tracks/rust/exercises/difference-of-squares/src/lib.rs +1 -1
- data/tracks/rust/exercises/diffie-hellman/README.md +26 -5
- data/tracks/rust/exercises/diffie-hellman/src/lib.rs +12 -2
- data/tracks/rust/exercises/diffie-hellman/tests/diffie-hellman.rs +3 -3
- data/tracks/rust/exercises/dominoes/README.md +26 -5
- data/tracks/rust/exercises/dominoes/src/lib.rs +1 -0
- data/tracks/rust/exercises/dominoes/tests/dominoes.rs +29 -13
- data/tracks/rust/exercises/etl/README.md +26 -5
- data/tracks/rust/exercises/etl/src/lib.rs +1 -0
- data/tracks/rust/exercises/etl/tests/etl.rs +39 -34
- data/tracks/rust/exercises/forth/README.md +26 -5
- data/tracks/rust/exercises/forth/tests/forth.rs +17 -65
- data/tracks/rust/exercises/gigasecond/README.md +26 -5
- data/tracks/rust/exercises/gigasecond/tests/gigasecond.rs +31 -10
- data/tracks/rust/exercises/grade-school/README.md +26 -5
- data/tracks/rust/exercises/grade-school/src/lib.rs +1 -2
- data/tracks/rust/exercises/grade-school/tests/grade-school.rs +5 -9
- data/tracks/rust/exercises/grains/README.md +26 -5
- data/tracks/rust/exercises/hamming/README.md +30 -8
- data/tracks/rust/exercises/hamming/src/lib.rs +1 -2
- data/tracks/rust/exercises/hello-world/README.md +26 -5
- data/tracks/rust/exercises/hexadecimal/README.md +26 -5
- data/tracks/rust/exercises/hexadecimal/src/lib.rs +1 -0
- data/tracks/rust/exercises/isbn-verifier/README.md +26 -5
- data/tracks/rust/exercises/isogram/README.md +26 -5
- data/tracks/rust/exercises/isogram/src/lib.rs +1 -1
- data/tracks/rust/exercises/isogram/tests/isogram.rs +36 -24
- data/tracks/rust/exercises/largest-series-product/README.md +26 -5
- data/tracks/rust/exercises/largest-series-product/src/lib.rs +5 -1
- data/tracks/rust/exercises/largest-series-product/tests/largest-series-product.rs +4 -2
- data/tracks/rust/exercises/leap/README.md +26 -5
- data/tracks/rust/exercises/luhn-from/README.md +26 -5
- data/tracks/rust/exercises/luhn-from/src/lib.rs +1 -0
- data/tracks/rust/exercises/luhn-trait/README.md +26 -5
- data/tracks/rust/exercises/luhn-trait/src/lib.rs +1 -0
- data/tracks/rust/exercises/luhn/README.md +26 -5
- data/tracks/rust/exercises/luhn/src/lib.rs +1 -1
- data/tracks/rust/exercises/macros/README.md +26 -5
- data/tracks/rust/exercises/minesweeper/README.md +26 -5
- data/tracks/rust/exercises/minesweeper/src/lib.rs +1 -0
- data/tracks/rust/exercises/nth-prime/README.md +26 -5
- data/tracks/rust/exercises/nucleotide-codons/README.md +26 -5
- data/tracks/rust/exercises/nucleotide-codons/src/lib.rs +1 -0
- data/tracks/rust/exercises/nucleotide-codons/tests/codons.rs +6 -5
- data/tracks/rust/exercises/nucleotide-count/README.md +26 -5
- data/tracks/rust/exercises/nucleotide-count/src/lib.rs +1 -0
- data/tracks/rust/exercises/nucleotide-count/tests/nucleotide-count.rs +5 -8
- data/tracks/rust/exercises/ocr-numbers/README.md +26 -5
- data/tracks/rust/exercises/ocr-numbers/tests/ocr-numbers.rs +0 -1
- data/tracks/rust/exercises/palindrome-products/README.md +26 -5
- data/tracks/rust/exercises/pangram/README.md +26 -5
- data/tracks/rust/exercises/pangram/src/lib.rs +1 -1
- data/tracks/rust/exercises/parallel-letter-frequency/README.md +26 -5
- data/tracks/rust/exercises/parallel-letter-frequency/benches/benchmark.rs +6 -3
- data/tracks/rust/exercises/parallel-letter-frequency/src/lib.rs +1 -0
- data/tracks/rust/exercises/parallel-letter-frequency/tests/parallel-letter-frequency.rs +6 -3
- data/tracks/rust/exercises/pascals-triangle/README.md +26 -5
- data/tracks/rust/exercises/pascals-triangle/tests/pascals-triangle.rs +36 -28
- data/tracks/rust/exercises/perfect-numbers/README.md +26 -5
- data/tracks/rust/exercises/perfect-numbers/src/lib.rs +1 -1
- data/tracks/rust/exercises/perfect-numbers/tests/perfect-numbers.rs +1 -2
- data/tracks/rust/exercises/phone-number/README.md +26 -5
- data/tracks/rust/exercises/phone-number/src/lib.rs +1 -0
- data/tracks/rust/exercises/pig-latin/README.md +26 -5
- data/tracks/rust/exercises/pig-latin/src/lib.rs +1 -0
- data/tracks/rust/exercises/poker/README.md +26 -5
- data/tracks/rust/exercises/poker/tests/poker.rs +27 -104
- data/tracks/rust/exercises/prime-factors/README.md +26 -5
- data/tracks/rust/exercises/protein-translation/README.md +26 -5
- data/tracks/rust/exercises/protein-translation/src/lib.rs +1 -0
- data/tracks/rust/exercises/protein-translation/tests/proteins.rs +16 -9
- data/tracks/rust/exercises/proverb/README.md +26 -5
- data/tracks/rust/exercises/proverb/tests/proverb.rs +1 -7
- data/tracks/rust/exercises/pythagorean-triplet/README.md +26 -5
- data/tracks/rust/exercises/queen-attack/README.md +26 -5
- data/tracks/rust/exercises/queen-attack/src/lib.rs +1 -0
- data/tracks/rust/exercises/raindrops/README.md +26 -5
- data/tracks/rust/exercises/raindrops/tests/raindrops.rs +57 -19
- data/tracks/rust/exercises/react/README.md +26 -5
- data/tracks/rust/exercises/react/src/lib.rs +16 -4
- data/tracks/rust/exercises/react/tests/react.rs +174 -43
- data/tracks/rust/exercises/rectangles/README.md +26 -5
- data/tracks/rust/exercises/rectangles/src/lib.rs +1 -0
- data/tracks/rust/exercises/reverse-string/README.md +26 -5
- data/tracks/rust/exercises/reverse-string/tests/reverse-string.rs +2 -11
- data/tracks/rust/exercises/rna-transcription/README.md +26 -5
- data/tracks/rust/exercises/rna-transcription/src/lib.rs +1 -0
- data/tracks/rust/exercises/robot-name/README.md +26 -5
- data/tracks/rust/exercises/robot-name/src/lib.rs +1 -0
- data/tracks/rust/exercises/robot-name/tests/robot-name.rs +8 -2
- data/tracks/rust/exercises/robot-simulator/README.md +26 -5
- data/tracks/rust/exercises/robot-simulator/src/lib.rs +5 -6
- data/tracks/rust/exercises/roman-numerals/README.md +26 -5
- data/tracks/rust/exercises/roman-numerals/src/lib.rs +1 -0
- data/tracks/rust/exercises/rotational-cipher/README.md +26 -5
- data/tracks/rust/exercises/rotational-cipher/src/lib.rs +1 -0
- data/tracks/rust/exercises/rotational-cipher/tests/rotational-cipher.rs +12 -4
- data/tracks/rust/exercises/run-length-encoding/README.md +26 -5
- data/tracks/rust/exercises/run-length-encoding/src/lib.rs +1 -1
- data/tracks/rust/exercises/run-length-encoding/tests/run-length-encoding.rs +12 -5
- data/tracks/rust/exercises/saddle-points/README.md +26 -5
- data/tracks/rust/exercises/saddle-points/src/lib.rs +4 -1
- data/tracks/rust/exercises/say/README.md +27 -6
- data/tracks/rust/exercises/say/src/lib.rs +1 -1
- data/tracks/rust/exercises/say/tests/say.rs +30 -14
- data/tracks/rust/exercises/scrabble-score/README.md +26 -5
- data/tracks/rust/exercises/scrabble-score/src/lib.rs +1 -1
- data/tracks/rust/exercises/series/README.md +32 -11
- data/tracks/rust/exercises/series/src/lib.rs +5 -1
- data/tracks/rust/exercises/sieve/README.md +31 -8
- data/tracks/rust/exercises/sieve/src/lib.rs +1 -0
- data/tracks/rust/exercises/sieve/tests/sieve.rs +11 -12
- data/tracks/rust/exercises/simple-cipher/README.md +26 -5
- data/tracks/rust/exercises/simple-cipher/src/lib.rs +6 -3
- data/tracks/rust/exercises/simple-cipher/tests/simple-cipher.rs +0 -1
- data/tracks/rust/exercises/simple-linked-list/README.md +26 -5
- data/tracks/rust/exercises/simple-linked-list/src/lib.rs +0 -1
- data/tracks/rust/exercises/simple-linked-list/tests/simple-linked-list.rs +0 -1
- data/tracks/rust/exercises/space-age/README.md +26 -5
- data/tracks/rust/exercises/space-age/tests/space-age.rs +4 -4
- data/tracks/rust/exercises/spiral-matrix/README.md +26 -5
- data/tracks/rust/exercises/sublist/README.md +26 -5
- data/tracks/rust/exercises/sublist/src/lib.rs +1 -0
- data/tracks/rust/exercises/sublist/tests/sublist.rs +17 -68
- data/tracks/rust/exercises/sum-of-multiples/README.md +26 -5
- data/tracks/rust/exercises/sum-of-multiples/src/lib.rs +5 -1
- data/tracks/rust/exercises/tournament/README.md +26 -5
- data/tracks/rust/exercises/tournament/src/lib.rs +1 -0
- data/tracks/rust/exercises/tournament/tests/tournament.rs +60 -60
- data/tracks/rust/exercises/triangle/README.md +26 -5
- data/tracks/rust/exercises/triangle/src/lib.rs +1 -0
- data/tracks/rust/exercises/two-bucket/README.md +26 -5
- data/tracks/rust/exercises/two-bucket/src/lib.rs +2 -6
- data/tracks/rust/exercises/two-bucket/tests/two-bucket.rs +49 -37
- data/tracks/rust/exercises/twofer/README.md +33 -7
- data/tracks/rust/exercises/twofer/src/lib.rs +2 -2
- data/tracks/rust/exercises/twofer/tests/two-fer.rs +2 -2
- data/tracks/rust/exercises/variable-length-quantity/README.md +26 -5
- data/tracks/rust/exercises/variable-length-quantity/tests/variable-length-quantity.rs +60 -32
- data/tracks/rust/exercises/word-count/README.md +26 -5
- data/tracks/rust/exercises/word-count/src/lib.rs +1 -1
- data/tracks/rust/exercises/word-count/tests/word-count.rs +15 -23
- data/tracks/rust/exercises/wordy/README.md +26 -5
- data/tracks/rust/exercises/wordy/src/lib.rs +1 -0
- metadata +3 -2
@@ -37,5 +37,10 @@ pub enum Error {
|
|
37
37
|
/// process input with leading 0 digits.
|
38
38
|
///
|
39
39
|
pub fn convert(number: &[u32], from_base: u32, to_base: u32) -> Result<Vec<u32>, Error> {
|
40
|
-
unimplemented!(
|
40
|
+
unimplemented!(
|
41
|
+
"Convert {:?} from base {} to base {}",
|
42
|
+
number,
|
43
|
+
from_base,
|
44
|
+
to_base
|
45
|
+
)
|
41
46
|
}
|
@@ -6,8 +6,10 @@ fn single_bit_one_to_decimal() {
|
|
6
6
|
let input_digits = &[1];
|
7
7
|
let output_base = 10;
|
8
8
|
let output_digits = vec![1];
|
9
|
-
assert_eq!(
|
10
|
-
|
9
|
+
assert_eq!(
|
10
|
+
ayb::convert(input_digits, input_base, output_base),
|
11
|
+
Ok(output_digits)
|
12
|
+
);
|
11
13
|
}
|
12
14
|
|
13
15
|
#[test]
|
@@ -17,8 +19,10 @@ fn binary_to_single_decimal() {
|
|
17
19
|
let input_digits = &[1, 0, 1];
|
18
20
|
let output_base = 10;
|
19
21
|
let output_digits = vec![5];
|
20
|
-
assert_eq!(
|
21
|
-
|
22
|
+
assert_eq!(
|
23
|
+
ayb::convert(input_digits, input_base, output_base),
|
24
|
+
Ok(output_digits)
|
25
|
+
);
|
22
26
|
}
|
23
27
|
|
24
28
|
#[test]
|
@@ -28,8 +32,10 @@ fn single_decimal_to_binary() {
|
|
28
32
|
let input_digits = &[5];
|
29
33
|
let output_base = 2;
|
30
34
|
let output_digits = vec![1, 0, 1];
|
31
|
-
assert_eq!(
|
32
|
-
|
35
|
+
assert_eq!(
|
36
|
+
ayb::convert(input_digits, input_base, output_base),
|
37
|
+
Ok(output_digits)
|
38
|
+
);
|
33
39
|
}
|
34
40
|
|
35
41
|
#[test]
|
@@ -39,8 +45,10 @@ fn binary_to_multiple_decimal() {
|
|
39
45
|
let input_digits = &[1, 0, 1, 0, 1, 0];
|
40
46
|
let output_base = 10;
|
41
47
|
let output_digits = vec![4, 2];
|
42
|
-
assert_eq!(
|
43
|
-
|
48
|
+
assert_eq!(
|
49
|
+
ayb::convert(input_digits, input_base, output_base),
|
50
|
+
Ok(output_digits)
|
51
|
+
);
|
44
52
|
}
|
45
53
|
|
46
54
|
#[test]
|
@@ -50,8 +58,10 @@ fn decimal_to_binary() {
|
|
50
58
|
let input_digits = &[4, 2];
|
51
59
|
let output_base = 2;
|
52
60
|
let output_digits = vec![1, 0, 1, 0, 1, 0];
|
53
|
-
assert_eq!(
|
54
|
-
|
61
|
+
assert_eq!(
|
62
|
+
ayb::convert(input_digits, input_base, output_base),
|
63
|
+
Ok(output_digits)
|
64
|
+
);
|
55
65
|
}
|
56
66
|
|
57
67
|
#[test]
|
@@ -61,8 +71,10 @@ fn trinary_to_hexadecimal() {
|
|
61
71
|
let input_digits = &[1, 1, 2, 0];
|
62
72
|
let output_base = 16;
|
63
73
|
let output_digits = vec![2, 10];
|
64
|
-
assert_eq!(
|
65
|
-
|
74
|
+
assert_eq!(
|
75
|
+
ayb::convert(input_digits, input_base, output_base),
|
76
|
+
Ok(output_digits)
|
77
|
+
);
|
66
78
|
}
|
67
79
|
|
68
80
|
#[test]
|
@@ -72,8 +84,10 @@ fn hexadecimal_to_trinary() {
|
|
72
84
|
let input_digits = &[2, 10];
|
73
85
|
let output_base = 3;
|
74
86
|
let output_digits = vec![1, 1, 2, 0];
|
75
|
-
assert_eq!(
|
76
|
-
|
87
|
+
assert_eq!(
|
88
|
+
ayb::convert(input_digits, input_base, output_base),
|
89
|
+
Ok(output_digits)
|
90
|
+
);
|
77
91
|
}
|
78
92
|
|
79
93
|
#[test]
|
@@ -83,8 +97,10 @@ fn fifteen_bit_integer() {
|
|
83
97
|
let input_digits = &[3, 46, 60];
|
84
98
|
let output_base = 73;
|
85
99
|
let output_digits = vec![6, 10, 45];
|
86
|
-
assert_eq!(
|
87
|
-
|
100
|
+
assert_eq!(
|
101
|
+
ayb::convert(input_digits, input_base, output_base),
|
102
|
+
Ok(output_digits)
|
103
|
+
);
|
88
104
|
}
|
89
105
|
|
90
106
|
#[test]
|
@@ -94,8 +110,10 @@ fn empty_list() {
|
|
94
110
|
let input_digits = &[];
|
95
111
|
let output_base = 10;
|
96
112
|
let output_digits = vec![];
|
97
|
-
assert_eq!(
|
98
|
-
|
113
|
+
assert_eq!(
|
114
|
+
ayb::convert(input_digits, input_base, output_base),
|
115
|
+
Ok(output_digits)
|
116
|
+
);
|
99
117
|
}
|
100
118
|
|
101
119
|
#[test]
|
@@ -105,8 +123,10 @@ fn single_zero() {
|
|
105
123
|
let input_digits = &[0];
|
106
124
|
let output_base = 2;
|
107
125
|
let output_digits = vec![];
|
108
|
-
assert_eq!(
|
109
|
-
|
126
|
+
assert_eq!(
|
127
|
+
ayb::convert(input_digits, input_base, output_base),
|
128
|
+
Ok(output_digits)
|
129
|
+
);
|
110
130
|
}
|
111
131
|
|
112
132
|
#[test]
|
@@ -116,8 +136,10 @@ fn multiple_zeros() {
|
|
116
136
|
let input_digits = &[0, 0, 0];
|
117
137
|
let output_base = 2;
|
118
138
|
let output_digits = vec![];
|
119
|
-
assert_eq!(
|
120
|
-
|
139
|
+
assert_eq!(
|
140
|
+
ayb::convert(input_digits, input_base, output_base),
|
141
|
+
Ok(output_digits)
|
142
|
+
);
|
121
143
|
}
|
122
144
|
|
123
145
|
#[test]
|
@@ -127,8 +149,10 @@ fn leading_zeros() {
|
|
127
149
|
let input_digits = &[0, 6, 0];
|
128
150
|
let output_base = 10;
|
129
151
|
let output_digits = vec![4, 2];
|
130
|
-
assert_eq!(
|
131
|
-
|
152
|
+
assert_eq!(
|
153
|
+
ayb::convert(input_digits, input_base, output_base),
|
154
|
+
Ok(output_digits)
|
155
|
+
);
|
132
156
|
}
|
133
157
|
|
134
158
|
#[test]
|
@@ -137,8 +161,10 @@ fn invalid_positive_digit() {
|
|
137
161
|
let input_base = 2;
|
138
162
|
let input_digits = &[1, 2, 1, 0, 1, 0];
|
139
163
|
let output_base = 10;
|
140
|
-
assert_eq!(
|
141
|
-
|
164
|
+
assert_eq!(
|
165
|
+
ayb::convert(input_digits, input_base, output_base),
|
166
|
+
Err(ayb::Error::InvalidDigit(2))
|
167
|
+
);
|
142
168
|
}
|
143
169
|
|
144
170
|
#[test]
|
@@ -147,8 +173,10 @@ fn input_base_is_one() {
|
|
147
173
|
let input_base = 1;
|
148
174
|
let input_digits = &[];
|
149
175
|
let output_base = 10;
|
150
|
-
assert_eq!(
|
151
|
-
|
176
|
+
assert_eq!(
|
177
|
+
ayb::convert(input_digits, input_base, output_base),
|
178
|
+
Err(ayb::Error::InvalidInputBase)
|
179
|
+
);
|
152
180
|
}
|
153
181
|
|
154
182
|
#[test]
|
@@ -157,8 +185,10 @@ fn output_base_is_one() {
|
|
157
185
|
let input_base = 2;
|
158
186
|
let input_digits = &[1, 0, 1, 0, 1, 0];
|
159
187
|
let output_base = 1;
|
160
|
-
assert_eq!(
|
161
|
-
|
188
|
+
assert_eq!(
|
189
|
+
ayb::convert(input_digits, input_base, output_base),
|
190
|
+
Err(ayb::Error::InvalidOutputBase)
|
191
|
+
);
|
162
192
|
}
|
163
193
|
|
164
194
|
#[test]
|
@@ -167,8 +197,10 @@ fn input_base_is_zero() {
|
|
167
197
|
let input_base = 0;
|
168
198
|
let input_digits = &[];
|
169
199
|
let output_base = 10;
|
170
|
-
assert_eq!(
|
171
|
-
|
200
|
+
assert_eq!(
|
201
|
+
ayb::convert(input_digits, input_base, output_base),
|
202
|
+
Err(ayb::Error::InvalidInputBase)
|
203
|
+
);
|
172
204
|
}
|
173
205
|
|
174
206
|
#[test]
|
@@ -177,6 +209,8 @@ fn output_base_is_zero() {
|
|
177
209
|
let input_base = 10;
|
178
210
|
let input_digits = &[7];
|
179
211
|
let output_base = 0;
|
180
|
-
assert_eq!(
|
181
|
-
|
212
|
+
assert_eq!(
|
213
|
+
ayb::convert(input_digits, input_base, output_base),
|
214
|
+
Err(ayb::Error::InvalidOutputBase)
|
215
|
+
);
|
182
216
|
}
|
@@ -42,11 +42,31 @@ Execute the tests with:
|
|
42
42
|
$ cargo test
|
43
43
|
```
|
44
44
|
|
45
|
-
All but the first test have been ignored.
|
46
|
-
pass,
|
47
|
-
|
48
|
-
|
49
|
-
|
45
|
+
All but the first test have been ignored. After you get the first test to
|
46
|
+
pass, open the tests source file wich is located in the `tests` directory
|
47
|
+
and remove the `#[ignore]` flag from the next test and get the tests to pass
|
48
|
+
again. Each separate test is a function with `#[test]` flag above it.
|
49
|
+
Continue, until you pass every test.
|
50
|
+
|
51
|
+
If you wish to run all tests without editing the tests source file, use:
|
52
|
+
|
53
|
+
```bash
|
54
|
+
$ cargo test -- --ignored
|
55
|
+
```
|
56
|
+
|
57
|
+
To run a specific test, for example `some_test`, you can use:
|
58
|
+
|
59
|
+
```bash
|
60
|
+
$ cargo test some_test
|
61
|
+
```
|
62
|
+
|
63
|
+
If the specfic test is ignored use:
|
64
|
+
|
65
|
+
```bash
|
66
|
+
$ cargo test some_test -- --ignored
|
67
|
+
```
|
68
|
+
|
69
|
+
To learn more about Rust tests refer to the [online test documentation][rust-tests]
|
50
70
|
|
51
71
|
Make sure to read the [Modules](https://doc.rust-lang.org/book/second-edition/ch07-00-modules.html) chapter if you
|
52
72
|
haven't already, it will help you with organizing your files.
|
@@ -60,6 +80,7 @@ If you want to know more about Exercism, take a look at the [contribution guide]
|
|
60
80
|
[help-page]: http://exercism.io/languages/rust
|
61
81
|
[modules]: https://doc.rust-lang.org/book/second-edition/ch07-00-modules.html
|
62
82
|
[cargo]: https://doc.rust-lang.org/book/second-edition/ch14-00-more-about-cargo.html
|
83
|
+
[rust-tests]: https://doc.rust-lang.org/book/second-edition/ch11-02-running-tests.html
|
63
84
|
|
64
85
|
## Source
|
65
86
|
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -5,16 +5,18 @@ use allergies::*;
|
|
5
5
|
fn compare_allergy_vectors(expected: &[Allergen], actual: &[Allergen]) {
|
6
6
|
for element in expected {
|
7
7
|
if !actual.contains(element) {
|
8
|
-
panic!(
|
9
|
-
|
10
|
-
|
8
|
+
panic!(
|
9
|
+
"Allergen missing\n {:?} should be in {:?}",
|
10
|
+
element, actual
|
11
|
+
);
|
11
12
|
}
|
12
13
|
}
|
13
14
|
|
14
15
|
if actual.len() != expected.len() {
|
15
|
-
panic!(
|
16
|
-
|
17
|
-
|
16
|
+
panic!(
|
17
|
+
"Allergy vectors are of different lengths\n expected {:?}\n got {:?}",
|
18
|
+
expected, actual
|
19
|
+
);
|
18
20
|
}
|
19
21
|
}
|
20
22
|
|
@@ -98,11 +100,13 @@ fn allergic_to_eggs_and_shellfish() {
|
|
98
100
|
#[test]
|
99
101
|
#[ignore]
|
100
102
|
fn allergic_to_many_things() {
|
101
|
-
let expected = &[
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
103
|
+
let expected = &[
|
104
|
+
Allergen::Strawberries,
|
105
|
+
Allergen::Tomatoes,
|
106
|
+
Allergen::Chocolate,
|
107
|
+
Allergen::Pollen,
|
108
|
+
Allergen::Cats,
|
109
|
+
];
|
106
110
|
let allergies = Allergies::new(248).allergies();
|
107
111
|
|
108
112
|
compare_allergy_vectors(expected, &allergies);
|
@@ -111,14 +115,16 @@ fn allergic_to_many_things() {
|
|
111
115
|
#[test]
|
112
116
|
#[ignore]
|
113
117
|
fn allergic_to_everything() {
|
114
|
-
let expected = &[
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
118
|
+
let expected = &[
|
119
|
+
Allergen::Eggs,
|
120
|
+
Allergen::Peanuts,
|
121
|
+
Allergen::Shellfish,
|
122
|
+
Allergen::Strawberries,
|
123
|
+
Allergen::Tomatoes,
|
124
|
+
Allergen::Chocolate,
|
125
|
+
Allergen::Pollen,
|
126
|
+
Allergen::Cats,
|
127
|
+
];
|
122
128
|
let allergies = Allergies::new(255).allergies();
|
123
129
|
|
124
130
|
compare_allergy_vectors(expected, &allergies);
|
@@ -127,13 +133,15 @@ fn allergic_to_everything() {
|
|
127
133
|
#[test]
|
128
134
|
#[ignore]
|
129
135
|
fn scores_over_255_do_not_trigger_false_positives() {
|
130
|
-
let expected = &[
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
136
|
+
let expected = &[
|
137
|
+
Allergen::Eggs,
|
138
|
+
Allergen::Shellfish,
|
139
|
+
Allergen::Strawberries,
|
140
|
+
Allergen::Tomatoes,
|
141
|
+
Allergen::Chocolate,
|
142
|
+
Allergen::Pollen,
|
143
|
+
Allergen::Cats,
|
144
|
+
];
|
137
145
|
let allergies = Allergies::new(509).allergies();
|
138
146
|
|
139
147
|
compare_allergy_vectors(expected, &allergies);
|
@@ -44,11 +44,31 @@ Execute the tests with:
|
|
44
44
|
$ cargo test
|
45
45
|
```
|
46
46
|
|
47
|
-
All but the first test have been ignored.
|
48
|
-
pass,
|
49
|
-
|
50
|
-
|
51
|
-
|
47
|
+
All but the first test have been ignored. After you get the first test to
|
48
|
+
pass, open the tests source file wich is located in the `tests` directory
|
49
|
+
and remove the `#[ignore]` flag from the next test and get the tests to pass
|
50
|
+
again. Each separate test is a function with `#[test]` flag above it.
|
51
|
+
Continue, until you pass every test.
|
52
|
+
|
53
|
+
If you wish to run all tests without editing the tests source file, use:
|
54
|
+
|
55
|
+
```bash
|
56
|
+
$ cargo test -- --ignored
|
57
|
+
```
|
58
|
+
|
59
|
+
To run a specific test, for example `some_test`, you can use:
|
60
|
+
|
61
|
+
```bash
|
62
|
+
$ cargo test some_test
|
63
|
+
```
|
64
|
+
|
65
|
+
If the specfic test is ignored use:
|
66
|
+
|
67
|
+
```bash
|
68
|
+
$ cargo test some_test -- --ignored
|
69
|
+
```
|
70
|
+
|
71
|
+
To learn more about Rust tests refer to the [online test documentation][rust-tests]
|
52
72
|
|
53
73
|
Make sure to read the [Modules](https://doc.rust-lang.org/book/second-edition/ch07-00-modules.html) chapter if you
|
54
74
|
haven't already, it will help you with organizing your files.
|
@@ -62,6 +82,7 @@ If you want to know more about Exercism, take a look at the [contribution guide]
|
|
62
82
|
[help-page]: http://exercism.io/languages/rust
|
63
83
|
[modules]: https://doc.rust-lang.org/book/second-edition/ch07-00-modules.html
|
64
84
|
[cargo]: https://doc.rust-lang.org/book/second-edition/ch14-00-more-about-cargo.html
|
85
|
+
[rust-tests]: https://doc.rust-lang.org/book/second-edition/ch11-02-running-tests.html
|
65
86
|
|
66
87
|
## Submitting Incomplete Solutions
|
67
88
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -35,28 +35,63 @@ fn test_puzzle_with_four_letters() {
|
|
35
35
|
#[test]
|
36
36
|
#[ignore]
|
37
37
|
fn test_puzzle_with_six_letters() {
|
38
|
-
assert_alphametic_solution_eq(
|
39
|
-
|
38
|
+
assert_alphametic_solution_eq(
|
39
|
+
"NO + NO + TOO == LATE",
|
40
|
+
&[('N', 7), ('O', 4), ('T', 9), ('L', 1), ('A', 0), ('E', 2)],
|
41
|
+
);
|
40
42
|
}
|
41
43
|
|
42
44
|
#[test]
|
43
45
|
#[ignore]
|
44
46
|
fn test_puzzle_with_seven_letters() {
|
45
|
-
assert_alphametic_solution_eq(
|
46
|
-
|
47
|
+
assert_alphametic_solution_eq(
|
48
|
+
"HE + SEES + THE == LIGHT",
|
49
|
+
&[
|
50
|
+
('E', 4),
|
51
|
+
('G', 2),
|
52
|
+
('H', 5),
|
53
|
+
('I', 0),
|
54
|
+
('L', 1),
|
55
|
+
('S', 9),
|
56
|
+
('T', 7),
|
57
|
+
],
|
58
|
+
);
|
47
59
|
}
|
48
60
|
|
49
61
|
#[test]
|
50
62
|
#[ignore]
|
51
63
|
fn test_puzzle_with_eight_letters() {
|
52
|
-
assert_alphametic_solution_eq(
|
53
|
-
|
64
|
+
assert_alphametic_solution_eq(
|
65
|
+
"SEND + MORE == MONEY",
|
66
|
+
&[
|
67
|
+
('S', 9),
|
68
|
+
('E', 5),
|
69
|
+
('N', 6),
|
70
|
+
('D', 7),
|
71
|
+
('M', 1),
|
72
|
+
('O', 0),
|
73
|
+
('R', 8),
|
74
|
+
('Y', 2),
|
75
|
+
],
|
76
|
+
);
|
54
77
|
}
|
55
78
|
|
56
79
|
#[test]
|
57
80
|
#[ignore]
|
58
81
|
fn test_puzzle_with_ten_letters() {
|
59
|
-
assert_alphametic_solution_eq(
|
60
|
-
|
61
|
-
|
82
|
+
assert_alphametic_solution_eq(
|
83
|
+
"AND + A + STRONG + OFFENSE + AS + A + GOOD == DEFENSE",
|
84
|
+
&[
|
85
|
+
('A', 5),
|
86
|
+
('D', 3),
|
87
|
+
('E', 4),
|
88
|
+
('F', 7),
|
89
|
+
('G', 8),
|
90
|
+
('N', 0),
|
91
|
+
('O', 2),
|
92
|
+
('R', 1),
|
93
|
+
('S', 6),
|
94
|
+
('T', 9),
|
95
|
+
],
|
96
|
+
);
|
62
97
|
}
|