trackler 2.2.1.6 → 2.2.1.7
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/c/README.md +27 -0
- data/tracks/coffeescript/config.json +1 -0
- data/tracks/coldfusion/config.json +1 -1
- data/tracks/crystal/README.md +27 -7
- data/tracks/crystal/config/maintainers.json +25 -0
- data/tracks/crystal/generator/spec/remote_data_file_spec.cr +1 -1
- data/tracks/crystal/generator/src/exercise_generator.cr +1 -1
- data/tracks/crystal/generator/src/remote_data_file.cr +2 -2
- data/tracks/csharp/config.json +1 -2
- data/tracks/csharp/config/maintainers.json +55 -0
- data/tracks/csharp/docs/EXERCISE_README_INSERT.md +1 -1
- data/tracks/csharp/exercises/accumulate/README.md +1 -1
- data/tracks/csharp/exercises/acronym/README.md +1 -1
- data/tracks/csharp/exercises/all-your-base/README.md +1 -1
- data/tracks/csharp/exercises/allergies/README.md +1 -1
- data/tracks/csharp/exercises/alphametics/README.md +1 -1
- data/tracks/csharp/exercises/anagram/README.md +1 -1
- data/tracks/csharp/exercises/atbash-cipher/README.md +1 -1
- data/tracks/csharp/exercises/bank-account/README.md +1 -1
- data/tracks/csharp/exercises/beer-song/README.md +1 -1
- data/tracks/csharp/exercises/binary-search-tree/README.md +1 -1
- data/tracks/csharp/exercises/binary-search/README.md +1 -1
- data/tracks/csharp/exercises/bob/README.md +1 -1
- data/tracks/csharp/exercises/book-store/README.md +1 -1
- data/tracks/csharp/exercises/bowling/README.md +1 -1
- data/tracks/csharp/exercises/bracket-push/README.md +1 -1
- data/tracks/csharp/exercises/change/README.md +1 -1
- data/tracks/csharp/exercises/circular-buffer/README.md +1 -1
- data/tracks/csharp/exercises/clock/README.md +1 -1
- data/tracks/csharp/exercises/connect/README.md +1 -1
- data/tracks/csharp/exercises/crypto-square/README.md +1 -1
- data/tracks/csharp/exercises/custom-set/README.md +1 -1
- data/tracks/csharp/exercises/diamond/README.md +1 -1
- data/tracks/csharp/exercises/difference-of-squares/README.md +1 -1
- data/tracks/csharp/exercises/diffie-hellman/README.md +1 -1
- data/tracks/csharp/exercises/dominoes/README.md +1 -1
- data/tracks/csharp/exercises/dot-dsl/README.md +1 -1
- data/tracks/csharp/exercises/error-handling/README.md +1 -1
- data/tracks/csharp/exercises/etl/README.md +1 -1
- data/tracks/csharp/exercises/flatten-array/README.md +1 -1
- data/tracks/csharp/exercises/food-chain/README.md +1 -1
- data/tracks/csharp/exercises/forth/README.md +1 -1
- data/tracks/csharp/exercises/gigasecond/README.md +1 -1
- data/tracks/csharp/exercises/go-counting/README.md +1 -1
- data/tracks/csharp/exercises/grade-school/README.md +1 -1
- data/tracks/csharp/exercises/grains/README.md +1 -1
- data/tracks/csharp/exercises/grep/README.md +1 -1
- data/tracks/csharp/exercises/hamming/README.md +1 -1
- data/tracks/csharp/exercises/hangman/README.md +1 -1
- data/tracks/csharp/exercises/hello-world/README.md +1 -1
- data/tracks/csharp/exercises/house/README.md +1 -1
- data/tracks/csharp/exercises/isogram/README.md +1 -1
- data/tracks/csharp/exercises/kindergarten-garden/README.md +1 -1
- data/tracks/csharp/exercises/largest-series-product/README.md +1 -1
- data/tracks/csharp/exercises/leap/README.md +1 -1
- data/tracks/csharp/exercises/ledger/README.md +1 -1
- data/tracks/csharp/exercises/linked-list/README.md +1 -1
- data/tracks/csharp/exercises/list-ops/README.md +1 -1
- data/tracks/csharp/exercises/luhn/README.md +1 -1
- data/tracks/csharp/exercises/markdown/README.md +1 -1
- data/tracks/csharp/exercises/matrix/README.md +1 -1
- data/tracks/csharp/exercises/meetup/README.md +1 -1
- data/tracks/csharp/exercises/minesweeper/README.md +1 -1
- data/tracks/csharp/exercises/nth-prime/README.md +1 -1
- data/tracks/csharp/exercises/nucleotide-count/README.md +1 -1
- data/tracks/csharp/exercises/ocr-numbers/README.md +1 -1
- data/tracks/csharp/exercises/palindrome-products/README.md +1 -1
- data/tracks/csharp/exercises/pangram/README.md +1 -1
- data/tracks/csharp/exercises/parallel-letter-frequency/README.md +1 -1
- data/tracks/csharp/exercises/pascals-triangle/README.md +1 -1
- data/tracks/csharp/exercises/perfect-numbers/README.md +1 -1
- data/tracks/csharp/exercises/phone-number/README.md +1 -1
- data/tracks/csharp/exercises/pig-latin/README.md +1 -1
- data/tracks/csharp/exercises/poker/README.md +1 -1
- data/tracks/csharp/exercises/pov/README.md +1 -1
- data/tracks/csharp/exercises/prime-factors/README.md +1 -1
- data/tracks/csharp/exercises/protein-translation/README.md +1 -1
- data/tracks/csharp/exercises/proverb/README.md +1 -1
- data/tracks/csharp/exercises/pythagorean-triplet/README.md +1 -1
- data/tracks/csharp/exercises/queen-attack/README.md +1 -1
- data/tracks/csharp/exercises/rail-fence-cipher/README.md +1 -1
- data/tracks/csharp/exercises/raindrops/README.md +1 -1
- data/tracks/csharp/exercises/react/README.md +1 -1
- data/tracks/csharp/exercises/rectangles/README.md +1 -1
- data/tracks/csharp/exercises/rna-transcription/README.md +1 -1
- data/tracks/csharp/exercises/robot-name/README.md +1 -1
- data/tracks/csharp/exercises/robot-simulator/README.md +1 -1
- data/tracks/csharp/exercises/roman-numerals/README.md +1 -1
- data/tracks/csharp/exercises/rotational-cipher/README.md +1 -1
- data/tracks/csharp/exercises/run-length-encoding/README.md +1 -1
- data/tracks/csharp/exercises/saddle-points/README.md +1 -1
- data/tracks/csharp/exercises/say/README.md +1 -1
- data/tracks/csharp/exercises/scale-generator/README.md +1 -1
- data/tracks/csharp/exercises/scrabble-score/README.md +1 -1
- data/tracks/csharp/exercises/secret-handshake/README.md +1 -1
- data/tracks/csharp/exercises/series/README.md +1 -1
- data/tracks/csharp/exercises/sgf-parsing/README.md +1 -1
- data/tracks/csharp/exercises/sieve/README.md +1 -1
- data/tracks/csharp/exercises/simple-cipher/README.md +1 -1
- data/tracks/csharp/exercises/simple-linked-list/README.md +1 -1
- data/tracks/csharp/exercises/space-age/README.md +1 -1
- data/tracks/csharp/exercises/strain/README.md +1 -1
- data/tracks/csharp/exercises/sublist/README.md +1 -1
- data/tracks/csharp/exercises/sum-of-multiples/README.md +1 -1
- data/tracks/csharp/exercises/tournament/README.md +1 -1
- data/tracks/csharp/exercises/transpose/README.md +1 -1
- data/tracks/csharp/exercises/tree-building/README.md +1 -1
- data/tracks/csharp/exercises/triangle/README.md +1 -1
- data/tracks/csharp/exercises/twelve-days/README.md +1 -1
- data/tracks/csharp/exercises/two-bucket/README.md +1 -1
- data/tracks/csharp/exercises/variable-length-quantity/README.md +1 -1
- data/tracks/csharp/exercises/word-count/README.md +1 -1
- data/tracks/csharp/exercises/word-search/README.md +1 -1
- data/tracks/csharp/exercises/wordy/README.md +1 -1
- data/tracks/csharp/exercises/zebra-puzzle/README.md +1 -1
- data/tracks/csharp/exercises/zipper/README.md +1 -1
- data/tracks/d/config.json +1 -0
- data/tracks/dart/config/maintainers.json +15 -0
- data/tracks/ecmascript/config.json +76 -193
- data/tracks/ecmascript/exercises/twelve-days/README.md +66 -0
- data/tracks/ecmascript/exercises/twelve-days/example.js +53 -0
- data/tracks/ecmascript/exercises/twelve-days/package.json +68 -0
- data/tracks/ecmascript/exercises/twelve-days/twelve-days.spec.js +106 -0
- data/tracks/factor/config.json +1 -1
- data/tracks/fsharp/config/maintainers.json +35 -0
- data/tracks/go/config.json +82 -38
- data/tracks/go/config/maintainers.json +13 -22
- data/tracks/go/exercises/bowling/cases_test.go +11 -11
- data/tracks/go/exercises/forth/cases_test.go +7 -7
- data/tracks/go/exercises/forth/example.go +1 -1
- data/tracks/go/exercises/forth/forth_test.go +1 -1
- data/tracks/go/exercises/hamming/cases_test.go +7 -7
- data/tracks/go/exercises/hamming/hamming.go +1 -1
- data/tracks/go/exercises/phone-number/cases_test.go +2 -7
- data/tracks/go/exercises/phone-number/example.go +1 -1
- data/tracks/go/exercises/phone-number/phone_number_test.go +1 -1
- data/tracks/go/exercises/rna-transcription/cases_test.go +7 -7
- data/tracks/go/exercises/secret-handshake/cases_test.go +1 -1
- data/tracks/groovy/config.json +1 -0
- data/tracks/haxe/config.json +1 -1
- data/tracks/java/.travis.yml +1 -1
- data/tracks/java/config/maintainers.json +20 -0
- data/tracks/java/exercises/custom-set/src/test/java/CustomSetTest.java +1 -1
- data/tracks/java/exercises/word-count/src/test/java/WordCountTest.java +1 -1
- data/tracks/javascript/config.json +229 -247
- data/tracks/kotlin/config/maintainers.json +35 -0
- data/tracks/lfe/config/maintainers.json +15 -0
- data/tracks/lisp/config/maintainers.json +55 -0
- data/tracks/ocaml/config.json +0 -5
- data/tracks/ocaml/config/maintainers.json +25 -0
- data/tracks/perl5/config/maintainers.json +25 -0
- data/tracks/perl6/config/maintainers.json +25 -0
- data/tracks/pony/config/maintainers.json +15 -0
- data/tracks/pony/exercises/atbash-cipher/example.pony +2 -2
- data/tracks/pony/exercises/beer-song/example.pony +1 -1
- data/tracks/pony/exercises/bob/example.pony +1 -1
- data/tracks/pony/exercises/difference-of-squares/example.pony +1 -1
- data/tracks/pony/exercises/hamming/test.pony +12 -12
- data/tracks/pony/exercises/pascals-triangle/example.pony +1 -1
- data/tracks/pony/exercises/pascals-triangle/test.pony +6 -6
- data/tracks/pony/exercises/rna-transcription/test.pony +3 -3
- data/tracks/pony/exercises/roman-numerals/test.pony +3 -3
- data/tracks/purescript/config/maintainers.json +35 -0
- data/tracks/r/config.json +140 -81
- data/tracks/r/exercises/collatz-conjecture/README.md +43 -0
- data/tracks/r/exercises/collatz-conjecture/collatz-conjecture.R +3 -0
- data/tracks/r/exercises/collatz-conjecture/example.R +13 -0
- data/tracks/r/exercises/collatz-conjecture/test_collatz-conjecture.R +28 -0
- data/tracks/r/exercises/nucleotide-count/README.md +43 -0
- data/tracks/r/exercises/nucleotide-count/example.R +17 -0
- data/tracks/r/exercises/nucleotide-count/nucleotide-count.R +3 -0
- data/tracks/r/exercises/nucleotide-count/test_nucleotide-count.R +51 -0
- data/tracks/r/exercises/pangram/README.md +25 -0
- data/tracks/r/exercises/pangram/example.R +14 -0
- data/tracks/r/exercises/pangram/pangram.R +3 -0
- data/tracks/r/exercises/pangram/test_pangram.R +42 -0
- data/tracks/r/exercises/triangle/.meta/hints.md +4 -0
- data/tracks/r/exercises/triangle/README.md +41 -0
- data/tracks/r/exercises/triangle/example.R +23 -0
- data/tracks/r/exercises/triangle/test_triangle.R +72 -0
- data/tracks/r/exercises/triangle/triangle.R +3 -0
- data/tracks/rust/config.json +32 -1
- data/tracks/rust/config/maintainers.json +1 -6
- data/tracks/rust/exercises/acronym/tests/acronym.rs +1 -1
- data/tracks/rust/exercises/beer-song/example.rs +1 -1
- data/tracks/rust/exercises/circular-buffer/example.rs +8 -10
- data/tracks/rust/exercises/circular-buffer/tests/circular-buffer.rs +2 -2
- data/tracks/rust/exercises/clock/.meta/hints.md +10 -0
- data/tracks/rust/exercises/clock/Cargo.lock +4 -0
- data/tracks/rust/exercises/clock/Cargo.toml +6 -0
- data/tracks/rust/exercises/clock/README.md +57 -0
- data/tracks/rust/exercises/clock/example.rs +32 -0
- data/tracks/{ocaml/exercises/point-mutations/example.ml → rust/exercises/clock/src/lib.rs} +0 -0
- data/tracks/rust/exercises/clock/tests/clock.rs +331 -0
- data/tracks/rust/exercises/custom-set/tests/custom-set.rs +3 -3
- data/tracks/rust/exercises/dominoes/example.rs +1 -1
- data/tracks/rust/exercises/grade-school/example.rs +1 -1
- data/tracks/rust/exercises/hamming/example.rs +1 -1
- data/tracks/rust/exercises/nth-prime/Cargo.lock +4 -0
- data/tracks/rust/exercises/nth-prime/Cargo.toml +6 -0
- data/tracks/rust/exercises/nth-prime/README.md +47 -0
- data/tracks/rust/exercises/nth-prime/example.rs +28 -0
- data/tracks/rust/exercises/nth-prime/src/lib.rs +0 -0
- data/tracks/rust/exercises/nth-prime/tests/nth-prime.rs +30 -0
- data/tracks/rust/exercises/parallel-letter-frequency/example.rs +1 -1
- data/tracks/rust/exercises/phone-number/example.rs +1 -1
- data/tracks/rust/exercises/pythagorean-triplet/Cargo.lock +4 -0
- data/tracks/rust/exercises/pythagorean-triplet/Cargo.toml +6 -0
- data/tracks/rust/exercises/pythagorean-triplet/README.md +56 -0
- data/tracks/rust/exercises/pythagorean-triplet/example.rs +11 -0
- data/tracks/rust/exercises/pythagorean-triplet/src/lib.rs +0 -0
- data/tracks/rust/exercises/pythagorean-triplet/tests/pythagorean-triplet.rs +6 -0
- data/tracks/rust/exercises/rna-transcription/tests/rna-transcription.rs +1 -1
- data/tracks/rust/exercises/robot-name/tests/robot-name.rs +2 -2
- data/tracks/rust/exercises/say/example.rs +4 -4
- data/tracks/rust/exercises/say/tests/say.rs +4 -4
- data/tracks/rust/exercises/tournament/example.rs +2 -2
- data/tracks/scala/config/maintainers.json +10 -6
- data/tracks/scala/exercises/bracket-push/example.scala +2 -2
- data/tracks/scala/exercises/bracket-push/src/test/scala/BracketPushTest.scala +74 -0
- data/tracks/scala/exercises/crypto-square/example.scala +9 -9
- data/tracks/scala/exercises/crypto-square/src/test/scala/CryptoSquareTest.scala +33 -41
- data/tracks/scala/testgen/src/main/scala/BracketPushTestGenerator.scala +9 -38
- data/tracks/scala/testgen/src/main/scala/CryptoSquareTestGenerator.scala +17 -0
- data/tracks/sml/config.json +1 -1
- data/tracks/swift/config/maintainers.json +35 -0
- data/tracks/swift/docs/ABOUT.md +15 -5
- data/tracks/vimscript/config/maintainers.json +35 -0
- metadata +58 -8
- data/tracks/ocaml/exercises/point-mutations/Makefile +0 -8
- data/tracks/ocaml/exercises/point-mutations/README.md +0 -81
- data/tracks/ocaml/exercises/point-mutations/dna.mli +0 -6
- data/tracks/scala/exercises/bracket-push/src/test/scala/BracketsTest.scala +0 -68
- data/tracks/scala/exercises/crypto-square/src/main/scala/CryptoSquare.scala +0 -11
@@ -142,7 +142,7 @@ fn empty_sets_are_equal() {
|
|
142
142
|
fn empty_set_is_not_equal_to_a_non_empty_set() {
|
143
143
|
let set1 = CustomSet::new(vec![]);
|
144
144
|
let set2 = CustomSet::new(vec![1, 2, 3]);
|
145
|
-
|
145
|
+
assert_ne!(set1, set2);
|
146
146
|
}
|
147
147
|
|
148
148
|
#[test]
|
@@ -150,7 +150,7 @@ fn empty_set_is_not_equal_to_a_non_empty_set() {
|
|
150
150
|
fn non_empty_set_is_not_equal_to_an_empty_set() {
|
151
151
|
let set1 = CustomSet::new(vec![1, 2, 3]);
|
152
152
|
let set2 = CustomSet::new(vec![]);
|
153
|
-
|
153
|
+
assert_ne!(set1, set2);
|
154
154
|
}
|
155
155
|
|
156
156
|
#[test]
|
@@ -166,7 +166,7 @@ fn sets_with_the_same_elements_are_equal() {
|
|
166
166
|
fn sets_with_different_elements_are_not_equal() {
|
167
167
|
let set1 = CustomSet::new(vec![1, 2, 3]);
|
168
168
|
let set2 = CustomSet::new(vec![2, 1, 4]);
|
169
|
-
|
169
|
+
assert_ne!(set1, set2);
|
170
170
|
}
|
171
171
|
|
172
172
|
#[test]
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# Nth Prime
|
2
|
+
|
3
|
+
Given a number n, determine what the nth prime is.
|
4
|
+
|
5
|
+
By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that
|
6
|
+
the 6th prime is 13.
|
7
|
+
|
8
|
+
If your language provides methods in the standard library to deal with prime
|
9
|
+
numbers, pretend they don't exist and implement them yourself.
|
10
|
+
|
11
|
+
## Rust Installation
|
12
|
+
|
13
|
+
Refer to the [exercism help page][help-page] for Rust installation and learning
|
14
|
+
resources.
|
15
|
+
|
16
|
+
## Writing the Code
|
17
|
+
|
18
|
+
Execute the tests with:
|
19
|
+
|
20
|
+
```bash
|
21
|
+
$ cargo test
|
22
|
+
```
|
23
|
+
|
24
|
+
All but the first test have been ignored. After you get the first test to
|
25
|
+
pass, remove the ignore flag (`#[ignore]`) from the next test and get the tests
|
26
|
+
to pass again. The test file is located in the `tests` directory. You can
|
27
|
+
also remove the ignore flag from all the tests to get them to run all at once
|
28
|
+
if you wish.
|
29
|
+
|
30
|
+
Make sure to read the [Crates and Modules](https://doc.rust-lang.org/stable/book/crates-and-modules.html) chapter if you
|
31
|
+
haven't already, it will help you with organizing your files.
|
32
|
+
|
33
|
+
## Feedback, Issues, Pull Requests
|
34
|
+
|
35
|
+
The [exercism/rust](https://github.com/exercism/rust) repository on GitHub is the home for all of the Rust exercises. If you have feedback about an exercise, or want to help implement new exercises, head over there and create an issue. Members of the [rust track team](https://github.com/orgs/exercism/teams/rust) are happy to help!
|
36
|
+
|
37
|
+
If you want to know more about Exercism, take a look at the [contribution guide](https://github.com/exercism/docs/blob/master/contributing-to-language-tracks/README.md).
|
38
|
+
|
39
|
+
[help-page]: http://exercism.io/languages/rust
|
40
|
+
[crates-and-modules]: http://doc.rust-lang.org/stable/book/crates-and-modules.html
|
41
|
+
|
42
|
+
## Source
|
43
|
+
|
44
|
+
A variation on Problem 7 at Project Euler [http://projecteuler.net/problem=7](http://projecteuler.net/problem=7)
|
45
|
+
|
46
|
+
## Submitting Incomplete Solutions
|
47
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,28 @@
|
|
1
|
+
fn is_prime(n: u32) -> bool {
|
2
|
+
let mut i: u32 = 3;
|
3
|
+
while (i * i) < (n + 1) {
|
4
|
+
if n % i == 0 {
|
5
|
+
return false;
|
6
|
+
}
|
7
|
+
i += 1;
|
8
|
+
}
|
9
|
+
return true;
|
10
|
+
}
|
11
|
+
|
12
|
+
pub fn nth(n: u32) -> Result<u32, ()> {
|
13
|
+
match n {
|
14
|
+
0 => Err(()),
|
15
|
+
1 => Ok(2),
|
16
|
+
_ => {
|
17
|
+
let mut count: u32 = 1;
|
18
|
+
let mut candidate: u32 = 1;
|
19
|
+
while count < n {
|
20
|
+
candidate += 2;
|
21
|
+
if is_prime(candidate) {
|
22
|
+
count += 1;
|
23
|
+
}
|
24
|
+
}
|
25
|
+
Ok(candidate)
|
26
|
+
}
|
27
|
+
}
|
28
|
+
}
|
File without changes
|
@@ -0,0 +1,30 @@
|
|
1
|
+
extern crate nth_prime as np;
|
2
|
+
|
3
|
+
#[test]
|
4
|
+
fn test_first_prime() {
|
5
|
+
assert_eq!(np::nth(1), Ok(2));
|
6
|
+
}
|
7
|
+
|
8
|
+
#[test]
|
9
|
+
#[ignore]
|
10
|
+
fn test_second_prime() {
|
11
|
+
assert_eq!(np::nth(2), Ok(3));
|
12
|
+
}
|
13
|
+
|
14
|
+
#[test]
|
15
|
+
#[ignore]
|
16
|
+
fn test_sixth_prime() {
|
17
|
+
assert_eq!(np::nth(6), Ok(13));
|
18
|
+
}
|
19
|
+
|
20
|
+
#[test]
|
21
|
+
#[ignore]
|
22
|
+
fn test_big_prime() {
|
23
|
+
assert_eq!(np::nth(10001), Ok(104743));
|
24
|
+
}
|
25
|
+
|
26
|
+
#[test]
|
27
|
+
#[ignore]
|
28
|
+
fn test_zeroth_prime() {
|
29
|
+
assert!(np::nth(0).is_err());
|
30
|
+
}
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# Pythagorean Triplet
|
2
|
+
|
3
|
+
A Pythagorean triplet is a set of three natural numbers, {a, b, c}, for
|
4
|
+
which,
|
5
|
+
|
6
|
+
```
|
7
|
+
a**2 + b**2 = c**2
|
8
|
+
```
|
9
|
+
|
10
|
+
For example,
|
11
|
+
|
12
|
+
```
|
13
|
+
3**2 + 4**2 = 9 + 16 = 25 = 5**2.
|
14
|
+
```
|
15
|
+
|
16
|
+
There exists exactly one Pythagorean triplet for which a + b + c = 1000.
|
17
|
+
|
18
|
+
Find the product a * b * c.
|
19
|
+
|
20
|
+
## Rust Installation
|
21
|
+
|
22
|
+
Refer to the [exercism help page][help-page] for Rust installation and learning
|
23
|
+
resources.
|
24
|
+
|
25
|
+
## Writing the Code
|
26
|
+
|
27
|
+
Execute the tests with:
|
28
|
+
|
29
|
+
```bash
|
30
|
+
$ cargo test
|
31
|
+
```
|
32
|
+
|
33
|
+
All but the first test have been ignored. After you get the first test to
|
34
|
+
pass, remove the ignore flag (`#[ignore]`) from the next test and get the tests
|
35
|
+
to pass again. The test file is located in the `tests` directory. You can
|
36
|
+
also remove the ignore flag from all the tests to get them to run all at once
|
37
|
+
if you wish.
|
38
|
+
|
39
|
+
Make sure to read the [Crates and Modules](https://doc.rust-lang.org/stable/book/crates-and-modules.html) chapter if you
|
40
|
+
haven't already, it will help you with organizing your files.
|
41
|
+
|
42
|
+
## Feedback, Issues, Pull Requests
|
43
|
+
|
44
|
+
The [exercism/rust](https://github.com/exercism/rust) repository on GitHub is the home for all of the Rust exercises. If you have feedback about an exercise, or want to help implement new exercises, head over there and create an issue. Members of the [rust track team](https://github.com/orgs/exercism/teams/rust) are happy to help!
|
45
|
+
|
46
|
+
If you want to know more about Exercism, take a look at the [contribution guide](https://github.com/exercism/docs/blob/master/contributing-to-language-tracks/README.md).
|
47
|
+
|
48
|
+
[help-page]: http://exercism.io/languages/rust
|
49
|
+
[crates-and-modules]: http://doc.rust-lang.org/stable/book/crates-and-modules.html
|
50
|
+
|
51
|
+
## Source
|
52
|
+
|
53
|
+
Problem 9 at Project Euler [http://projecteuler.net/problem=9](http://projecteuler.net/problem=9)
|
54
|
+
|
55
|
+
## Submitting Incomplete Solutions
|
56
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
File without changes
|
@@ -3,7 +3,7 @@ extern crate rna_transcription as dna;
|
|
3
3
|
#[test]
|
4
4
|
fn test_acid_equals_acid() {
|
5
5
|
assert_eq!(dna::RibonucleicAcid::new("CGA"), dna::RibonucleicAcid::new("CGA"));
|
6
|
-
|
6
|
+
assert_ne!(dna::RibonucleicAcid::new("CGA"), dna::RibonucleicAcid::new("AGC"));
|
7
7
|
}
|
8
8
|
|
9
9
|
#[test]
|
@@ -42,7 +42,7 @@ fn test_name_is_persistent() {
|
|
42
42
|
fn test_different_robots_have_different_names() {
|
43
43
|
let r1 = robot::Robot::new();
|
44
44
|
let r2 = robot::Robot::new();
|
45
|
-
|
45
|
+
assert_ne!(r1.name(), r2.name(), "Robot names should be different");
|
46
46
|
}
|
47
47
|
|
48
48
|
#[test]
|
@@ -69,5 +69,5 @@ fn test_new_name_is_different_from_old_name() {
|
|
69
69
|
let n1 = r.name().to_string();
|
70
70
|
r.reset_name();
|
71
71
|
let n2 = r.name().to_string();
|
72
|
-
|
72
|
+
assert_ne!(n1, n2, "Robot name should change when reset");
|
73
73
|
}
|
@@ -1,6 +1,6 @@
|
|
1
|
-
const SMALL: &'static [&'static str] = &["zero", "one", "two", "three", "four", "five",
|
2
|
-
"six", "seven", "eight", "nine", "ten",
|
3
|
-
"eleven", "twelve", "thirteen", "fourteen", "fifteen",
|
1
|
+
const SMALL: &'static [&'static str] = &["zero", "one", "two", "three", "four", "five",
|
2
|
+
"six", "seven", "eight", "nine", "ten",
|
3
|
+
"eleven", "twelve", "thirteen", "fourteen", "fifteen",
|
4
4
|
"sixteen", "seventeen", "eighteen", "nineteen"];
|
5
5
|
|
6
6
|
const TENS: &'static [&'static str] = &["ones", "ten", "twenty", "thirty", "forty",
|
@@ -28,7 +28,7 @@ pub fn encode(n: u64) -> String {
|
|
28
28
|
out.push(' ');
|
29
29
|
out.push_str(&encode(ones));
|
30
30
|
}
|
31
|
-
out
|
31
|
+
out
|
32
32
|
} else {
|
33
33
|
let mut sets: Vec<u64> = Vec::new();
|
34
34
|
let mut val = n;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
extern crate say;
|
2
2
|
|
3
|
-
// Note: No tests created using 'and' with numbers.
|
3
|
+
// Note: No tests created using 'and' with numbers.
|
4
4
|
// Aparently Most American English does not use the 'and' with numbers,
|
5
5
|
// where it is common in British English to use the 'and'.
|
6
6
|
|
@@ -9,9 +9,9 @@ fn test_zero() {
|
|
9
9
|
assert_eq!(say::encode(0), String::from("zero"));
|
10
10
|
}
|
11
11
|
|
12
|
-
//
|
12
|
+
//
|
13
13
|
// If the below test is uncommented, it should not compile.
|
14
|
-
//
|
14
|
+
//
|
15
15
|
/*
|
16
16
|
#[test]
|
17
17
|
fn test_negative() {
|
@@ -109,7 +109,7 @@ fn test_one_billion() {
|
|
109
109
|
#[test]
|
110
110
|
#[ignore]
|
111
111
|
fn test_987654321123() {
|
112
|
-
assert_eq!(say::encode(987_654_321_123),
|
112
|
+
assert_eq!(say::encode(987_654_321_123),
|
113
113
|
String::from("nine hundred eighty-seven billion \
|
114
114
|
six hundred fifty-four million \
|
115
115
|
three hundred twenty-one thousand \
|
@@ -29,7 +29,7 @@ impl TeamResult {
|
|
29
29
|
pub fn tally(input: &str) -> String {
|
30
30
|
let mut results: HashMap<String, TeamResult> = HashMap::new();
|
31
31
|
for line in input.to_string().lines() {
|
32
|
-
let parts: Vec<&str> = line.trim_right().split(';').collect();
|
32
|
+
let parts: Vec<&str> = line.trim_right().split(';').collect();
|
33
33
|
if parts.len() != 3 { continue; }
|
34
34
|
let team1 = parts[0];
|
35
35
|
let team2 = parts[1];
|
@@ -60,7 +60,7 @@ fn write_tally(results: &HashMap<String, TeamResult>) -> String {
|
|
60
60
|
(team, games, r, points)
|
61
61
|
}).collect();
|
62
62
|
// Sort by points descending, then name A-Z.
|
63
|
-
v.sort_by(|a, b|
|
63
|
+
v.sort_by(|a, b|
|
64
64
|
match a.3.cmp(&(b.3)).reverse() {
|
65
65
|
Equal => a.0.cmp(&(b.0)),
|
66
66
|
other => other
|
@@ -2,12 +2,12 @@
|
|
2
2
|
"maintainers": [
|
3
3
|
{
|
4
4
|
"github_username": "ErikSchierboom",
|
5
|
-
"show_on_website":
|
5
|
+
"show_on_website": true,
|
6
6
|
"alumnus": false,
|
7
|
-
"name":
|
7
|
+
"name": "Erik Schierboom",
|
8
8
|
"bio": null,
|
9
|
-
"link_text":
|
10
|
-
"link_url":
|
9
|
+
"link_text": "My blog",
|
10
|
+
"link_url": "http://www.erikschierboom.com/",
|
11
11
|
"avatar_url": null
|
12
12
|
},
|
13
13
|
{
|
@@ -16,13 +16,17 @@
|
|
16
16
|
},
|
17
17
|
{
|
18
18
|
"github_username": "ricemery",
|
19
|
-
"show_on_website":
|
19
|
+
"show_on_website": true,
|
20
20
|
"alumnus": false,
|
21
|
-
"name":
|
21
|
+
"name": "Ric Emery",
|
22
22
|
"bio": null,
|
23
23
|
"link_text": null,
|
24
24
|
"link_url": null,
|
25
25
|
"avatar_url": null
|
26
|
+
},
|
27
|
+
{
|
28
|
+
"github_username": "abo64",
|
29
|
+
"alumnus": true
|
26
30
|
}
|
27
31
|
],
|
28
32
|
"docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import scala.util.parsing.combinator.RegexParsers
|
2
2
|
|
3
|
-
object
|
3
|
+
object BracketPush extends RegexParsers {
|
4
4
|
lazy val t = "[^\\[\\]\\(\\)\\{\\}]+".r
|
5
5
|
|
6
6
|
private def paren: Parser[String] =
|
@@ -16,7 +16,7 @@ object Brackets extends RegexParsers {
|
|
16
16
|
|
17
17
|
private def all = rep(paren)
|
18
18
|
|
19
|
-
def
|
19
|
+
def isPaired(s: String) = this.parseAll(all, s) match {
|
20
20
|
case NoSuccess(_, _) => false
|
21
21
|
case Success(_, _) => true
|
22
22
|
}
|