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.
Files changed (236) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/c/README.md +27 -0
  4. data/tracks/coffeescript/config.json +1 -0
  5. data/tracks/coldfusion/config.json +1 -1
  6. data/tracks/crystal/README.md +27 -7
  7. data/tracks/crystal/config/maintainers.json +25 -0
  8. data/tracks/crystal/generator/spec/remote_data_file_spec.cr +1 -1
  9. data/tracks/crystal/generator/src/exercise_generator.cr +1 -1
  10. data/tracks/crystal/generator/src/remote_data_file.cr +2 -2
  11. data/tracks/csharp/config.json +1 -2
  12. data/tracks/csharp/config/maintainers.json +55 -0
  13. data/tracks/csharp/docs/EXERCISE_README_INSERT.md +1 -1
  14. data/tracks/csharp/exercises/accumulate/README.md +1 -1
  15. data/tracks/csharp/exercises/acronym/README.md +1 -1
  16. data/tracks/csharp/exercises/all-your-base/README.md +1 -1
  17. data/tracks/csharp/exercises/allergies/README.md +1 -1
  18. data/tracks/csharp/exercises/alphametics/README.md +1 -1
  19. data/tracks/csharp/exercises/anagram/README.md +1 -1
  20. data/tracks/csharp/exercises/atbash-cipher/README.md +1 -1
  21. data/tracks/csharp/exercises/bank-account/README.md +1 -1
  22. data/tracks/csharp/exercises/beer-song/README.md +1 -1
  23. data/tracks/csharp/exercises/binary-search-tree/README.md +1 -1
  24. data/tracks/csharp/exercises/binary-search/README.md +1 -1
  25. data/tracks/csharp/exercises/bob/README.md +1 -1
  26. data/tracks/csharp/exercises/book-store/README.md +1 -1
  27. data/tracks/csharp/exercises/bowling/README.md +1 -1
  28. data/tracks/csharp/exercises/bracket-push/README.md +1 -1
  29. data/tracks/csharp/exercises/change/README.md +1 -1
  30. data/tracks/csharp/exercises/circular-buffer/README.md +1 -1
  31. data/tracks/csharp/exercises/clock/README.md +1 -1
  32. data/tracks/csharp/exercises/connect/README.md +1 -1
  33. data/tracks/csharp/exercises/crypto-square/README.md +1 -1
  34. data/tracks/csharp/exercises/custom-set/README.md +1 -1
  35. data/tracks/csharp/exercises/diamond/README.md +1 -1
  36. data/tracks/csharp/exercises/difference-of-squares/README.md +1 -1
  37. data/tracks/csharp/exercises/diffie-hellman/README.md +1 -1
  38. data/tracks/csharp/exercises/dominoes/README.md +1 -1
  39. data/tracks/csharp/exercises/dot-dsl/README.md +1 -1
  40. data/tracks/csharp/exercises/error-handling/README.md +1 -1
  41. data/tracks/csharp/exercises/etl/README.md +1 -1
  42. data/tracks/csharp/exercises/flatten-array/README.md +1 -1
  43. data/tracks/csharp/exercises/food-chain/README.md +1 -1
  44. data/tracks/csharp/exercises/forth/README.md +1 -1
  45. data/tracks/csharp/exercises/gigasecond/README.md +1 -1
  46. data/tracks/csharp/exercises/go-counting/README.md +1 -1
  47. data/tracks/csharp/exercises/grade-school/README.md +1 -1
  48. data/tracks/csharp/exercises/grains/README.md +1 -1
  49. data/tracks/csharp/exercises/grep/README.md +1 -1
  50. data/tracks/csharp/exercises/hamming/README.md +1 -1
  51. data/tracks/csharp/exercises/hangman/README.md +1 -1
  52. data/tracks/csharp/exercises/hello-world/README.md +1 -1
  53. data/tracks/csharp/exercises/house/README.md +1 -1
  54. data/tracks/csharp/exercises/isogram/README.md +1 -1
  55. data/tracks/csharp/exercises/kindergarten-garden/README.md +1 -1
  56. data/tracks/csharp/exercises/largest-series-product/README.md +1 -1
  57. data/tracks/csharp/exercises/leap/README.md +1 -1
  58. data/tracks/csharp/exercises/ledger/README.md +1 -1
  59. data/tracks/csharp/exercises/linked-list/README.md +1 -1
  60. data/tracks/csharp/exercises/list-ops/README.md +1 -1
  61. data/tracks/csharp/exercises/luhn/README.md +1 -1
  62. data/tracks/csharp/exercises/markdown/README.md +1 -1
  63. data/tracks/csharp/exercises/matrix/README.md +1 -1
  64. data/tracks/csharp/exercises/meetup/README.md +1 -1
  65. data/tracks/csharp/exercises/minesweeper/README.md +1 -1
  66. data/tracks/csharp/exercises/nth-prime/README.md +1 -1
  67. data/tracks/csharp/exercises/nucleotide-count/README.md +1 -1
  68. data/tracks/csharp/exercises/ocr-numbers/README.md +1 -1
  69. data/tracks/csharp/exercises/palindrome-products/README.md +1 -1
  70. data/tracks/csharp/exercises/pangram/README.md +1 -1
  71. data/tracks/csharp/exercises/parallel-letter-frequency/README.md +1 -1
  72. data/tracks/csharp/exercises/pascals-triangle/README.md +1 -1
  73. data/tracks/csharp/exercises/perfect-numbers/README.md +1 -1
  74. data/tracks/csharp/exercises/phone-number/README.md +1 -1
  75. data/tracks/csharp/exercises/pig-latin/README.md +1 -1
  76. data/tracks/csharp/exercises/poker/README.md +1 -1
  77. data/tracks/csharp/exercises/pov/README.md +1 -1
  78. data/tracks/csharp/exercises/prime-factors/README.md +1 -1
  79. data/tracks/csharp/exercises/protein-translation/README.md +1 -1
  80. data/tracks/csharp/exercises/proverb/README.md +1 -1
  81. data/tracks/csharp/exercises/pythagorean-triplet/README.md +1 -1
  82. data/tracks/csharp/exercises/queen-attack/README.md +1 -1
  83. data/tracks/csharp/exercises/rail-fence-cipher/README.md +1 -1
  84. data/tracks/csharp/exercises/raindrops/README.md +1 -1
  85. data/tracks/csharp/exercises/react/README.md +1 -1
  86. data/tracks/csharp/exercises/rectangles/README.md +1 -1
  87. data/tracks/csharp/exercises/rna-transcription/README.md +1 -1
  88. data/tracks/csharp/exercises/robot-name/README.md +1 -1
  89. data/tracks/csharp/exercises/robot-simulator/README.md +1 -1
  90. data/tracks/csharp/exercises/roman-numerals/README.md +1 -1
  91. data/tracks/csharp/exercises/rotational-cipher/README.md +1 -1
  92. data/tracks/csharp/exercises/run-length-encoding/README.md +1 -1
  93. data/tracks/csharp/exercises/saddle-points/README.md +1 -1
  94. data/tracks/csharp/exercises/say/README.md +1 -1
  95. data/tracks/csharp/exercises/scale-generator/README.md +1 -1
  96. data/tracks/csharp/exercises/scrabble-score/README.md +1 -1
  97. data/tracks/csharp/exercises/secret-handshake/README.md +1 -1
  98. data/tracks/csharp/exercises/series/README.md +1 -1
  99. data/tracks/csharp/exercises/sgf-parsing/README.md +1 -1
  100. data/tracks/csharp/exercises/sieve/README.md +1 -1
  101. data/tracks/csharp/exercises/simple-cipher/README.md +1 -1
  102. data/tracks/csharp/exercises/simple-linked-list/README.md +1 -1
  103. data/tracks/csharp/exercises/space-age/README.md +1 -1
  104. data/tracks/csharp/exercises/strain/README.md +1 -1
  105. data/tracks/csharp/exercises/sublist/README.md +1 -1
  106. data/tracks/csharp/exercises/sum-of-multiples/README.md +1 -1
  107. data/tracks/csharp/exercises/tournament/README.md +1 -1
  108. data/tracks/csharp/exercises/transpose/README.md +1 -1
  109. data/tracks/csharp/exercises/tree-building/README.md +1 -1
  110. data/tracks/csharp/exercises/triangle/README.md +1 -1
  111. data/tracks/csharp/exercises/twelve-days/README.md +1 -1
  112. data/tracks/csharp/exercises/two-bucket/README.md +1 -1
  113. data/tracks/csharp/exercises/variable-length-quantity/README.md +1 -1
  114. data/tracks/csharp/exercises/word-count/README.md +1 -1
  115. data/tracks/csharp/exercises/word-search/README.md +1 -1
  116. data/tracks/csharp/exercises/wordy/README.md +1 -1
  117. data/tracks/csharp/exercises/zebra-puzzle/README.md +1 -1
  118. data/tracks/csharp/exercises/zipper/README.md +1 -1
  119. data/tracks/d/config.json +1 -0
  120. data/tracks/dart/config/maintainers.json +15 -0
  121. data/tracks/ecmascript/config.json +76 -193
  122. data/tracks/ecmascript/exercises/twelve-days/README.md +66 -0
  123. data/tracks/ecmascript/exercises/twelve-days/example.js +53 -0
  124. data/tracks/ecmascript/exercises/twelve-days/package.json +68 -0
  125. data/tracks/ecmascript/exercises/twelve-days/twelve-days.spec.js +106 -0
  126. data/tracks/factor/config.json +1 -1
  127. data/tracks/fsharp/config/maintainers.json +35 -0
  128. data/tracks/go/config.json +82 -38
  129. data/tracks/go/config/maintainers.json +13 -22
  130. data/tracks/go/exercises/bowling/cases_test.go +11 -11
  131. data/tracks/go/exercises/forth/cases_test.go +7 -7
  132. data/tracks/go/exercises/forth/example.go +1 -1
  133. data/tracks/go/exercises/forth/forth_test.go +1 -1
  134. data/tracks/go/exercises/hamming/cases_test.go +7 -7
  135. data/tracks/go/exercises/hamming/hamming.go +1 -1
  136. data/tracks/go/exercises/phone-number/cases_test.go +2 -7
  137. data/tracks/go/exercises/phone-number/example.go +1 -1
  138. data/tracks/go/exercises/phone-number/phone_number_test.go +1 -1
  139. data/tracks/go/exercises/rna-transcription/cases_test.go +7 -7
  140. data/tracks/go/exercises/secret-handshake/cases_test.go +1 -1
  141. data/tracks/groovy/config.json +1 -0
  142. data/tracks/haxe/config.json +1 -1
  143. data/tracks/java/.travis.yml +1 -1
  144. data/tracks/java/config/maintainers.json +20 -0
  145. data/tracks/java/exercises/custom-set/src/test/java/CustomSetTest.java +1 -1
  146. data/tracks/java/exercises/word-count/src/test/java/WordCountTest.java +1 -1
  147. data/tracks/javascript/config.json +229 -247
  148. data/tracks/kotlin/config/maintainers.json +35 -0
  149. data/tracks/lfe/config/maintainers.json +15 -0
  150. data/tracks/lisp/config/maintainers.json +55 -0
  151. data/tracks/ocaml/config.json +0 -5
  152. data/tracks/ocaml/config/maintainers.json +25 -0
  153. data/tracks/perl5/config/maintainers.json +25 -0
  154. data/tracks/perl6/config/maintainers.json +25 -0
  155. data/tracks/pony/config/maintainers.json +15 -0
  156. data/tracks/pony/exercises/atbash-cipher/example.pony +2 -2
  157. data/tracks/pony/exercises/beer-song/example.pony +1 -1
  158. data/tracks/pony/exercises/bob/example.pony +1 -1
  159. data/tracks/pony/exercises/difference-of-squares/example.pony +1 -1
  160. data/tracks/pony/exercises/hamming/test.pony +12 -12
  161. data/tracks/pony/exercises/pascals-triangle/example.pony +1 -1
  162. data/tracks/pony/exercises/pascals-triangle/test.pony +6 -6
  163. data/tracks/pony/exercises/rna-transcription/test.pony +3 -3
  164. data/tracks/pony/exercises/roman-numerals/test.pony +3 -3
  165. data/tracks/purescript/config/maintainers.json +35 -0
  166. data/tracks/r/config.json +140 -81
  167. data/tracks/r/exercises/collatz-conjecture/README.md +43 -0
  168. data/tracks/r/exercises/collatz-conjecture/collatz-conjecture.R +3 -0
  169. data/tracks/r/exercises/collatz-conjecture/example.R +13 -0
  170. data/tracks/r/exercises/collatz-conjecture/test_collatz-conjecture.R +28 -0
  171. data/tracks/r/exercises/nucleotide-count/README.md +43 -0
  172. data/tracks/r/exercises/nucleotide-count/example.R +17 -0
  173. data/tracks/r/exercises/nucleotide-count/nucleotide-count.R +3 -0
  174. data/tracks/r/exercises/nucleotide-count/test_nucleotide-count.R +51 -0
  175. data/tracks/r/exercises/pangram/README.md +25 -0
  176. data/tracks/r/exercises/pangram/example.R +14 -0
  177. data/tracks/r/exercises/pangram/pangram.R +3 -0
  178. data/tracks/r/exercises/pangram/test_pangram.R +42 -0
  179. data/tracks/r/exercises/triangle/.meta/hints.md +4 -0
  180. data/tracks/r/exercises/triangle/README.md +41 -0
  181. data/tracks/r/exercises/triangle/example.R +23 -0
  182. data/tracks/r/exercises/triangle/test_triangle.R +72 -0
  183. data/tracks/r/exercises/triangle/triangle.R +3 -0
  184. data/tracks/rust/config.json +32 -1
  185. data/tracks/rust/config/maintainers.json +1 -6
  186. data/tracks/rust/exercises/acronym/tests/acronym.rs +1 -1
  187. data/tracks/rust/exercises/beer-song/example.rs +1 -1
  188. data/tracks/rust/exercises/circular-buffer/example.rs +8 -10
  189. data/tracks/rust/exercises/circular-buffer/tests/circular-buffer.rs +2 -2
  190. data/tracks/rust/exercises/clock/.meta/hints.md +10 -0
  191. data/tracks/rust/exercises/clock/Cargo.lock +4 -0
  192. data/tracks/rust/exercises/clock/Cargo.toml +6 -0
  193. data/tracks/rust/exercises/clock/README.md +57 -0
  194. data/tracks/rust/exercises/clock/example.rs +32 -0
  195. data/tracks/{ocaml/exercises/point-mutations/example.ml → rust/exercises/clock/src/lib.rs} +0 -0
  196. data/tracks/rust/exercises/clock/tests/clock.rs +331 -0
  197. data/tracks/rust/exercises/custom-set/tests/custom-set.rs +3 -3
  198. data/tracks/rust/exercises/dominoes/example.rs +1 -1
  199. data/tracks/rust/exercises/grade-school/example.rs +1 -1
  200. data/tracks/rust/exercises/hamming/example.rs +1 -1
  201. data/tracks/rust/exercises/nth-prime/Cargo.lock +4 -0
  202. data/tracks/rust/exercises/nth-prime/Cargo.toml +6 -0
  203. data/tracks/rust/exercises/nth-prime/README.md +47 -0
  204. data/tracks/rust/exercises/nth-prime/example.rs +28 -0
  205. data/tracks/rust/exercises/nth-prime/src/lib.rs +0 -0
  206. data/tracks/rust/exercises/nth-prime/tests/nth-prime.rs +30 -0
  207. data/tracks/rust/exercises/parallel-letter-frequency/example.rs +1 -1
  208. data/tracks/rust/exercises/phone-number/example.rs +1 -1
  209. data/tracks/rust/exercises/pythagorean-triplet/Cargo.lock +4 -0
  210. data/tracks/rust/exercises/pythagorean-triplet/Cargo.toml +6 -0
  211. data/tracks/rust/exercises/pythagorean-triplet/README.md +56 -0
  212. data/tracks/rust/exercises/pythagorean-triplet/example.rs +11 -0
  213. data/tracks/rust/exercises/pythagorean-triplet/src/lib.rs +0 -0
  214. data/tracks/rust/exercises/pythagorean-triplet/tests/pythagorean-triplet.rs +6 -0
  215. data/tracks/rust/exercises/rna-transcription/tests/rna-transcription.rs +1 -1
  216. data/tracks/rust/exercises/robot-name/tests/robot-name.rs +2 -2
  217. data/tracks/rust/exercises/say/example.rs +4 -4
  218. data/tracks/rust/exercises/say/tests/say.rs +4 -4
  219. data/tracks/rust/exercises/tournament/example.rs +2 -2
  220. data/tracks/scala/config/maintainers.json +10 -6
  221. data/tracks/scala/exercises/bracket-push/example.scala +2 -2
  222. data/tracks/scala/exercises/bracket-push/src/test/scala/BracketPushTest.scala +74 -0
  223. data/tracks/scala/exercises/crypto-square/example.scala +9 -9
  224. data/tracks/scala/exercises/crypto-square/src/test/scala/CryptoSquareTest.scala +33 -41
  225. data/tracks/scala/testgen/src/main/scala/BracketPushTestGenerator.scala +9 -38
  226. data/tracks/scala/testgen/src/main/scala/CryptoSquareTestGenerator.scala +17 -0
  227. data/tracks/sml/config.json +1 -1
  228. data/tracks/swift/config/maintainers.json +35 -0
  229. data/tracks/swift/docs/ABOUT.md +15 -5
  230. data/tracks/vimscript/config/maintainers.json +35 -0
  231. metadata +58 -8
  232. data/tracks/ocaml/exercises/point-mutations/Makefile +0 -8
  233. data/tracks/ocaml/exercises/point-mutations/README.md +0 -81
  234. data/tracks/ocaml/exercises/point-mutations/dna.mli +0 -6
  235. data/tracks/scala/exercises/bracket-push/src/test/scala/BracketsTest.scala +0 -68
  236. 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
- assert!(set1 != set2);
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
- assert!(set1 != set2);
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
- assert!(set1 != set2);
169
+ assert_ne!(set1, set2);
170
170
  }
171
171
 
172
172
  #[test]
@@ -56,7 +56,7 @@ impl AvailabilityTable {
56
56
  panic!("remove for 0 stones: ({:?}, {:?})", x, y)
57
57
  }
58
58
  }
59
-
59
+
60
60
  fn pop_first(&mut self, x: usize) -> Option<usize> {
61
61
  for y in 1 .. 7 {
62
62
  if self.get(x, y) > 0 {
@@ -14,7 +14,7 @@ impl School {
14
14
  entry.push(student.to_string());
15
15
  entry.sort();
16
16
  }
17
-
17
+
18
18
  pub fn grades(&self) -> Vec<u32> {
19
19
  let mut s = self.grades.keys().cloned().collect::<Vec<u32>>();
20
20
  s.sort();
@@ -2,6 +2,6 @@ pub fn hamming_distance(a : &str, b: &str) -> Result<usize, &'static str> {
2
2
  if a.len() != b.len() {
3
3
  return Result::Err("inputs of different length");
4
4
  }
5
-
5
+
6
6
  Result::Ok(a.chars().zip(b.chars()).filter(|&(a, b)| a != b).count())
7
7
  }
@@ -0,0 +1,4 @@
1
+ [root]
2
+ name = "nth_prime"
3
+ version = "1.0.0"
4
+
@@ -0,0 +1,6 @@
1
+ [package]
2
+ name = "nth_prime"
3
+ version = "1.0.0"
4
+ authors = ["sacherjj <sacherjj@gmail.com>"]
5
+
6
+ [dependencies]
@@ -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
+ }
@@ -26,7 +26,7 @@ pub fn frequency(texts: &[&str], num_workers: usize) -> HashMap<char, usize> {
26
26
 
27
27
  for part in parts {
28
28
  let tx = tx.clone();
29
- thread::spawn(move || {
29
+ thread::spawn(move || {
30
30
  tx.send(count(part)).unwrap();
31
31
  });
32
32
  }
@@ -18,7 +18,7 @@ pub fn area_code(s: &str) -> Option<String> {
18
18
  }
19
19
 
20
20
  pub fn pretty_print(s: &str) -> String {
21
- number(s).map(|n|
21
+ number(s).map(|n|
22
22
  format!("({area}) {prefix}-{exchange}",
23
23
  area=&n[..3],
24
24
  prefix=&n[3..6],
@@ -0,0 +1,4 @@
1
+ [root]
2
+ name = "pythagorean_triplet"
3
+ version = "0.0.0"
4
+
@@ -0,0 +1,6 @@
1
+ [package]
2
+ name = "pythagorean_triplet"
3
+ version = "0.0.0"
4
+ authors = ["sacherjj <sacherjj@gmail.com>"]
5
+
6
+ [dependencies]
@@ -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.
@@ -0,0 +1,11 @@
1
+ pub fn find() -> Option<u32> {
2
+ for a in 1..1000 {
3
+ for b in (a+1)..(1000-a) {
4
+ let c = 1000 - (a + b);
5
+ if a*a + b*b == c*c {
6
+ return Some(a*b*c);
7
+ }
8
+ }
9
+ }
10
+ None
11
+ }
@@ -0,0 +1,6 @@
1
+ extern crate pythagorean_triplet;
2
+
3
+ #[test]
4
+ fn test_answer() {
5
+ assert_eq!(pythagorean_triplet::find(), Some(31875000));
6
+ }
@@ -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
- assert!(dna::RibonucleicAcid::new("CGA") != dna::RibonucleicAcid::new("AGC"));
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
- assert!(r1.name() != r2.name(), "Robot names should be different");
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
- assert!(n1 != n2, "Robot name should change when reset");
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": false,
5
+ "show_on_website": true,
6
6
  "alumnus": false,
7
- "name": null,
7
+ "name": "Erik Schierboom",
8
8
  "bio": null,
9
- "link_text": null,
10
- "link_url": null,
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": false,
19
+ "show_on_website": true,
20
20
  "alumnus": false,
21
- "name": null,
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 Brackets extends RegexParsers {
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 areBalanced(s: String) = this.parseAll(all, s) match {
19
+ def isPaired(s: String) = this.parseAll(all, s) match {
20
20
  case NoSuccess(_, _) => false
21
21
  case Success(_, _) => true
22
22
  }