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.
Files changed (203) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/go/exercises/dominoes/.meta/gen.go +1 -1
  4. data/tracks/go/exercises/dominoes/cases_test.go +11 -11
  5. data/tracks/ocaml/config.json +1 -1
  6. data/tracks/ocaml/docs/ABOUT.md +6 -4
  7. data/tracks/powershell/config.json +3 -2
  8. data/tracks/rust/bin/format_exercises +31 -0
  9. data/tracks/rust/config.json +10 -2
  10. data/tracks/rust/config/exercise_readme.go.tmpl +26 -5
  11. data/tracks/rust/exercises/accumulate/README.md +26 -5
  12. data/tracks/rust/exercises/accumulate/src/lib.rs +1 -0
  13. data/tracks/rust/exercises/accumulate/tests/accumulate.rs +7 -7
  14. data/tracks/rust/exercises/acronym/README.md +26 -5
  15. data/tracks/rust/exercises/acronym/src/lib.rs +1 -0
  16. data/tracks/rust/exercises/acronym/tests/acronym.rs +10 -5
  17. data/tracks/rust/exercises/all-your-base/README.md +26 -5
  18. data/tracks/rust/exercises/all-your-base/src/lib.rs +6 -1
  19. data/tracks/rust/exercises/all-your-base/tests/all-your-base.rs +68 -34
  20. data/tracks/rust/exercises/allergies/README.md +26 -5
  21. data/tracks/rust/exercises/allergies/src/lib.rs +1 -0
  22. data/tracks/rust/exercises/allergies/tests/allergies.rs +34 -26
  23. data/tracks/rust/exercises/alphametics/README.md +26 -5
  24. data/tracks/rust/exercises/alphametics/tests/alphametics.rs +44 -9
  25. data/tracks/rust/exercises/anagram/README.md +26 -5
  26. data/tracks/rust/exercises/anagram/src/lib.rs +1 -0
  27. data/tracks/rust/exercises/anagram/tests/anagram.rs +15 -4
  28. data/tracks/rust/exercises/armstrong-numbers/README.md +26 -5
  29. data/tracks/rust/exercises/atbash-cipher/README.md +26 -5
  30. data/tracks/rust/exercises/atbash-cipher/src/lib.rs +1 -1
  31. data/tracks/rust/exercises/atbash-cipher/tests/atbash-cipher.rs +16 -8
  32. data/tracks/rust/exercises/beer-song/README.md +26 -5
  33. data/tracks/rust/exercises/binary-search/README.md +26 -5
  34. data/tracks/rust/exercises/binary-search/src/lib.rs +1 -0
  35. data/tracks/rust/exercises/binary-search/tests/binary-search.rs +8 -4
  36. data/tracks/rust/exercises/bob/README.md +26 -5
  37. data/tracks/rust/exercises/bob/tests/bob.rs +32 -15
  38. data/tracks/rust/exercises/book-store/README.md +26 -5
  39. data/tracks/rust/exercises/book-store/src/lib.rs +4 -1
  40. data/tracks/rust/exercises/book-store/tests/book-store.rs +52 -24
  41. data/tracks/rust/exercises/bowling/README.md +26 -5
  42. data/tracks/rust/exercises/bowling/src/lib.rs +1 -2
  43. data/tracks/rust/exercises/bowling/tests/bowling.rs +2 -1
  44. data/tracks/rust/exercises/bracket-push/README.md +29 -7
  45. data/tracks/rust/exercises/bracket-push/src/lib.rs +1 -0
  46. data/tracks/rust/exercises/circular-buffer/README.md +26 -5
  47. data/tracks/rust/exercises/circular-buffer/src/lib.rs +1 -0
  48. data/tracks/rust/exercises/clock/README.md +26 -5
  49. data/tracks/rust/exercises/clock/src/lib.rs +1 -0
  50. data/tracks/rust/exercises/clock/tests/clock.rs +0 -1
  51. data/tracks/rust/exercises/collatz-conjecture/README.md +26 -5
  52. data/tracks/rust/exercises/crypto-square/README.md +53 -29
  53. data/tracks/rust/exercises/custom-set/README.md +26 -5
  54. data/tracks/rust/exercises/custom-set/src/lib.rs +1 -0
  55. data/tracks/rust/exercises/decimal/README.md +26 -5
  56. data/tracks/rust/exercises/decimal/tests/decimal.rs +4 -7
  57. data/tracks/rust/exercises/diamond/README.md +26 -5
  58. data/tracks/rust/exercises/difference-of-squares/README.md +26 -5
  59. data/tracks/rust/exercises/difference-of-squares/src/lib.rs +1 -1
  60. data/tracks/rust/exercises/diffie-hellman/README.md +26 -5
  61. data/tracks/rust/exercises/diffie-hellman/src/lib.rs +12 -2
  62. data/tracks/rust/exercises/diffie-hellman/tests/diffie-hellman.rs +3 -3
  63. data/tracks/rust/exercises/dominoes/README.md +26 -5
  64. data/tracks/rust/exercises/dominoes/src/lib.rs +1 -0
  65. data/tracks/rust/exercises/dominoes/tests/dominoes.rs +29 -13
  66. data/tracks/rust/exercises/etl/README.md +26 -5
  67. data/tracks/rust/exercises/etl/src/lib.rs +1 -0
  68. data/tracks/rust/exercises/etl/tests/etl.rs +39 -34
  69. data/tracks/rust/exercises/forth/README.md +26 -5
  70. data/tracks/rust/exercises/forth/tests/forth.rs +17 -65
  71. data/tracks/rust/exercises/gigasecond/README.md +26 -5
  72. data/tracks/rust/exercises/gigasecond/tests/gigasecond.rs +31 -10
  73. data/tracks/rust/exercises/grade-school/README.md +26 -5
  74. data/tracks/rust/exercises/grade-school/src/lib.rs +1 -2
  75. data/tracks/rust/exercises/grade-school/tests/grade-school.rs +5 -9
  76. data/tracks/rust/exercises/grains/README.md +26 -5
  77. data/tracks/rust/exercises/hamming/README.md +30 -8
  78. data/tracks/rust/exercises/hamming/src/lib.rs +1 -2
  79. data/tracks/rust/exercises/hello-world/README.md +26 -5
  80. data/tracks/rust/exercises/hexadecimal/README.md +26 -5
  81. data/tracks/rust/exercises/hexadecimal/src/lib.rs +1 -0
  82. data/tracks/rust/exercises/isbn-verifier/README.md +26 -5
  83. data/tracks/rust/exercises/isogram/README.md +26 -5
  84. data/tracks/rust/exercises/isogram/src/lib.rs +1 -1
  85. data/tracks/rust/exercises/isogram/tests/isogram.rs +36 -24
  86. data/tracks/rust/exercises/largest-series-product/README.md +26 -5
  87. data/tracks/rust/exercises/largest-series-product/src/lib.rs +5 -1
  88. data/tracks/rust/exercises/largest-series-product/tests/largest-series-product.rs +4 -2
  89. data/tracks/rust/exercises/leap/README.md +26 -5
  90. data/tracks/rust/exercises/luhn-from/README.md +26 -5
  91. data/tracks/rust/exercises/luhn-from/src/lib.rs +1 -0
  92. data/tracks/rust/exercises/luhn-trait/README.md +26 -5
  93. data/tracks/rust/exercises/luhn-trait/src/lib.rs +1 -0
  94. data/tracks/rust/exercises/luhn/README.md +26 -5
  95. data/tracks/rust/exercises/luhn/src/lib.rs +1 -1
  96. data/tracks/rust/exercises/macros/README.md +26 -5
  97. data/tracks/rust/exercises/minesweeper/README.md +26 -5
  98. data/tracks/rust/exercises/minesweeper/src/lib.rs +1 -0
  99. data/tracks/rust/exercises/nth-prime/README.md +26 -5
  100. data/tracks/rust/exercises/nucleotide-codons/README.md +26 -5
  101. data/tracks/rust/exercises/nucleotide-codons/src/lib.rs +1 -0
  102. data/tracks/rust/exercises/nucleotide-codons/tests/codons.rs +6 -5
  103. data/tracks/rust/exercises/nucleotide-count/README.md +26 -5
  104. data/tracks/rust/exercises/nucleotide-count/src/lib.rs +1 -0
  105. data/tracks/rust/exercises/nucleotide-count/tests/nucleotide-count.rs +5 -8
  106. data/tracks/rust/exercises/ocr-numbers/README.md +26 -5
  107. data/tracks/rust/exercises/ocr-numbers/tests/ocr-numbers.rs +0 -1
  108. data/tracks/rust/exercises/palindrome-products/README.md +26 -5
  109. data/tracks/rust/exercises/pangram/README.md +26 -5
  110. data/tracks/rust/exercises/pangram/src/lib.rs +1 -1
  111. data/tracks/rust/exercises/parallel-letter-frequency/README.md +26 -5
  112. data/tracks/rust/exercises/parallel-letter-frequency/benches/benchmark.rs +6 -3
  113. data/tracks/rust/exercises/parallel-letter-frequency/src/lib.rs +1 -0
  114. data/tracks/rust/exercises/parallel-letter-frequency/tests/parallel-letter-frequency.rs +6 -3
  115. data/tracks/rust/exercises/pascals-triangle/README.md +26 -5
  116. data/tracks/rust/exercises/pascals-triangle/tests/pascals-triangle.rs +36 -28
  117. data/tracks/rust/exercises/perfect-numbers/README.md +26 -5
  118. data/tracks/rust/exercises/perfect-numbers/src/lib.rs +1 -1
  119. data/tracks/rust/exercises/perfect-numbers/tests/perfect-numbers.rs +1 -2
  120. data/tracks/rust/exercises/phone-number/README.md +26 -5
  121. data/tracks/rust/exercises/phone-number/src/lib.rs +1 -0
  122. data/tracks/rust/exercises/pig-latin/README.md +26 -5
  123. data/tracks/rust/exercises/pig-latin/src/lib.rs +1 -0
  124. data/tracks/rust/exercises/poker/README.md +26 -5
  125. data/tracks/rust/exercises/poker/tests/poker.rs +27 -104
  126. data/tracks/rust/exercises/prime-factors/README.md +26 -5
  127. data/tracks/rust/exercises/protein-translation/README.md +26 -5
  128. data/tracks/rust/exercises/protein-translation/src/lib.rs +1 -0
  129. data/tracks/rust/exercises/protein-translation/tests/proteins.rs +16 -9
  130. data/tracks/rust/exercises/proverb/README.md +26 -5
  131. data/tracks/rust/exercises/proverb/tests/proverb.rs +1 -7
  132. data/tracks/rust/exercises/pythagorean-triplet/README.md +26 -5
  133. data/tracks/rust/exercises/queen-attack/README.md +26 -5
  134. data/tracks/rust/exercises/queen-attack/src/lib.rs +1 -0
  135. data/tracks/rust/exercises/raindrops/README.md +26 -5
  136. data/tracks/rust/exercises/raindrops/tests/raindrops.rs +57 -19
  137. data/tracks/rust/exercises/react/README.md +26 -5
  138. data/tracks/rust/exercises/react/src/lib.rs +16 -4
  139. data/tracks/rust/exercises/react/tests/react.rs +174 -43
  140. data/tracks/rust/exercises/rectangles/README.md +26 -5
  141. data/tracks/rust/exercises/rectangles/src/lib.rs +1 -0
  142. data/tracks/rust/exercises/reverse-string/README.md +26 -5
  143. data/tracks/rust/exercises/reverse-string/tests/reverse-string.rs +2 -11
  144. data/tracks/rust/exercises/rna-transcription/README.md +26 -5
  145. data/tracks/rust/exercises/rna-transcription/src/lib.rs +1 -0
  146. data/tracks/rust/exercises/robot-name/README.md +26 -5
  147. data/tracks/rust/exercises/robot-name/src/lib.rs +1 -0
  148. data/tracks/rust/exercises/robot-name/tests/robot-name.rs +8 -2
  149. data/tracks/rust/exercises/robot-simulator/README.md +26 -5
  150. data/tracks/rust/exercises/robot-simulator/src/lib.rs +5 -6
  151. data/tracks/rust/exercises/roman-numerals/README.md +26 -5
  152. data/tracks/rust/exercises/roman-numerals/src/lib.rs +1 -0
  153. data/tracks/rust/exercises/rotational-cipher/README.md +26 -5
  154. data/tracks/rust/exercises/rotational-cipher/src/lib.rs +1 -0
  155. data/tracks/rust/exercises/rotational-cipher/tests/rotational-cipher.rs +12 -4
  156. data/tracks/rust/exercises/run-length-encoding/README.md +26 -5
  157. data/tracks/rust/exercises/run-length-encoding/src/lib.rs +1 -1
  158. data/tracks/rust/exercises/run-length-encoding/tests/run-length-encoding.rs +12 -5
  159. data/tracks/rust/exercises/saddle-points/README.md +26 -5
  160. data/tracks/rust/exercises/saddle-points/src/lib.rs +4 -1
  161. data/tracks/rust/exercises/say/README.md +27 -6
  162. data/tracks/rust/exercises/say/src/lib.rs +1 -1
  163. data/tracks/rust/exercises/say/tests/say.rs +30 -14
  164. data/tracks/rust/exercises/scrabble-score/README.md +26 -5
  165. data/tracks/rust/exercises/scrabble-score/src/lib.rs +1 -1
  166. data/tracks/rust/exercises/series/README.md +32 -11
  167. data/tracks/rust/exercises/series/src/lib.rs +5 -1
  168. data/tracks/rust/exercises/sieve/README.md +31 -8
  169. data/tracks/rust/exercises/sieve/src/lib.rs +1 -0
  170. data/tracks/rust/exercises/sieve/tests/sieve.rs +11 -12
  171. data/tracks/rust/exercises/simple-cipher/README.md +26 -5
  172. data/tracks/rust/exercises/simple-cipher/src/lib.rs +6 -3
  173. data/tracks/rust/exercises/simple-cipher/tests/simple-cipher.rs +0 -1
  174. data/tracks/rust/exercises/simple-linked-list/README.md +26 -5
  175. data/tracks/rust/exercises/simple-linked-list/src/lib.rs +0 -1
  176. data/tracks/rust/exercises/simple-linked-list/tests/simple-linked-list.rs +0 -1
  177. data/tracks/rust/exercises/space-age/README.md +26 -5
  178. data/tracks/rust/exercises/space-age/tests/space-age.rs +4 -4
  179. data/tracks/rust/exercises/spiral-matrix/README.md +26 -5
  180. data/tracks/rust/exercises/sublist/README.md +26 -5
  181. data/tracks/rust/exercises/sublist/src/lib.rs +1 -0
  182. data/tracks/rust/exercises/sublist/tests/sublist.rs +17 -68
  183. data/tracks/rust/exercises/sum-of-multiples/README.md +26 -5
  184. data/tracks/rust/exercises/sum-of-multiples/src/lib.rs +5 -1
  185. data/tracks/rust/exercises/tournament/README.md +26 -5
  186. data/tracks/rust/exercises/tournament/src/lib.rs +1 -0
  187. data/tracks/rust/exercises/tournament/tests/tournament.rs +60 -60
  188. data/tracks/rust/exercises/triangle/README.md +26 -5
  189. data/tracks/rust/exercises/triangle/src/lib.rs +1 -0
  190. data/tracks/rust/exercises/two-bucket/README.md +26 -5
  191. data/tracks/rust/exercises/two-bucket/src/lib.rs +2 -6
  192. data/tracks/rust/exercises/two-bucket/tests/two-bucket.rs +49 -37
  193. data/tracks/rust/exercises/twofer/README.md +33 -7
  194. data/tracks/rust/exercises/twofer/src/lib.rs +2 -2
  195. data/tracks/rust/exercises/twofer/tests/two-fer.rs +2 -2
  196. data/tracks/rust/exercises/variable-length-quantity/README.md +26 -5
  197. data/tracks/rust/exercises/variable-length-quantity/tests/variable-length-quantity.rs +60 -32
  198. data/tracks/rust/exercises/word-count/README.md +26 -5
  199. data/tracks/rust/exercises/word-count/src/lib.rs +1 -1
  200. data/tracks/rust/exercises/word-count/tests/word-count.rs +15 -23
  201. data/tracks/rust/exercises/wordy/README.md +26 -5
  202. data/tracks/rust/exercises/wordy/src/lib.rs +1 -0
  203. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7854cf50251b028924ca57c52ad4b5d689d22bc8
4
- data.tar.gz: df9bda6241220798bed493a7ab2c0f9208cb2521
3
+ metadata.gz: 3e0c296a35d14811283022f1b7c0d4632d192794
4
+ data.tar.gz: 824e6e6fc0a08cb04754baca3e36435af840c13c
5
5
  SHA512:
6
- metadata.gz: 92cf8b3cd2ab4a6963e6cfbe2c70c7450cb17004d41cedf8c86564de0a50a0ce268d2f51d37c5cbf2c1a0a22d82a5a41222dfc8f9c96d14fa93f47b6ea856ea0
7
- data.tar.gz: fb264edb2f5edd017daee0c2bd7345c367981f7f846ed902472b2aa629c86e6f86ee2ae975b724d208752859a09e58fba20727197fd73906f58b9b06f28e355c
6
+ metadata.gz: e3aab4d9b282d0b7d8609ed74298f52da02b974eedfea2e32d8cdfc95453a8b31203dc97e278bbf484e4060dff128a0b23264bad371412aaa43bd41c0178deba
7
+ data.tar.gz: 58170622fc1a49bf03c7dc3944f7b353bc5846c000ac94e6959405dfb6a9722e0142841e8f3d4548a677f967658a271bcbaa08e6f097efa17990fb566cc8f98a
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.2.1.171"
2
+ VERSION = "2.2.1.172"
3
3
  end
@@ -30,7 +30,7 @@ type js struct {
30
30
  type Domino [2]int
31
31
 
32
32
  func (d Domino) String() string {
33
- return fmt.Sprintf("Domino{%d, %d}", d[0], d[1])
33
+ return fmt.Sprintf("{%d, %d}", d[0], d[1])
34
34
  }
35
35
 
36
36
  // template applied to above data structure generates the Go test cases
@@ -16,27 +16,27 @@ var testCases = []struct {
16
16
  },
17
17
  {
18
18
  "singleton input = singleton output",
19
- []Domino{Domino{1, 1}},
19
+ []Domino{{1, 1}},
20
20
  true,
21
21
  },
22
22
  {
23
23
  "singleton that can't be chained",
24
- []Domino{Domino{1, 2}},
24
+ []Domino{{1, 2}},
25
25
  false,
26
26
  },
27
27
  {
28
28
  "three elements",
29
- []Domino{Domino{1, 2}, Domino{3, 1}, Domino{2, 3}},
29
+ []Domino{{1, 2}, {3, 1}, {2, 3}},
30
30
  true,
31
31
  },
32
32
  {
33
33
  "can reverse dominoes",
34
- []Domino{Domino{1, 2}, Domino{1, 3}, Domino{2, 3}},
34
+ []Domino{{1, 2}, {1, 3}, {2, 3}},
35
35
  true,
36
36
  },
37
37
  {
38
38
  "can't be chained",
39
- []Domino{Domino{1, 2}, Domino{4, 1}, Domino{2, 3}},
39
+ []Domino{{1, 2}, {4, 1}, {2, 3}},
40
40
  false,
41
41
  },
42
42
  {
@@ -46,17 +46,17 @@ var testCases = []struct {
46
46
  //Nevertheless, there is no chain here, as there's no way to get from 1 to 2.
47
47
  //This test (and the two following) prevent solutions from using the even-degree test as the sole criterion,
48
48
  //as that is not a sufficient condition.
49
- []Domino{Domino{1, 1}, Domino{2, 2}},
49
+ []Domino{{1, 1}, {2, 2}},
50
50
  false,
51
51
  },
52
52
  {
53
53
  "disconnected - double loop",
54
- []Domino{Domino{1, 2}, Domino{2, 1}, Domino{3, 4}, Domino{4, 3}},
54
+ []Domino{{1, 2}, {2, 1}, {3, 4}, {4, 3}},
55
55
  false,
56
56
  },
57
57
  {
58
58
  "disconnected - single isolated",
59
- []Domino{Domino{1, 2}, Domino{2, 3}, Domino{3, 1}, Domino{4, 4}},
59
+ []Domino{{1, 2}, {2, 3}, {3, 1}, {4, 4}},
60
60
  false,
61
61
  },
62
62
  {
@@ -66,17 +66,17 @@ var testCases = []struct {
66
66
  //there is no chain possible.
67
67
  //There is indeed a chain here, so this test checks for this line of reasoning.
68
68
  //You need to place the (2, 4) after the (1, 2) rather than the (2, 3).
69
- []Domino{Domino{1, 2}, Domino{2, 3}, Domino{3, 1}, Domino{2, 4}, Domino{2, 4}},
69
+ []Domino{{1, 2}, {2, 3}, {3, 1}, {2, 4}, {2, 4}},
70
70
  true,
71
71
  },
72
72
  {
73
73
  "separate loops",
74
- []Domino{Domino{1, 2}, Domino{2, 3}, Domino{3, 1}, Domino{1, 1}, Domino{2, 2}, Domino{3, 3}},
74
+ []Domino{{1, 2}, {2, 3}, {3, 1}, {1, 1}, {2, 2}, {3, 3}},
75
75
  true,
76
76
  },
77
77
  {
78
78
  "nine elements",
79
- []Domino{Domino{1, 2}, Domino{5, 3}, Domino{3, 1}, Domino{1, 2}, Domino{2, 4}, Domino{1, 6}, Domino{2, 3}, Domino{3, 4}, Domino{5, 6}},
79
+ []Domino{{1, 2}, {5, 3}, {3, 1}, {1, 2}, {2, 4}, {1, 6}, {2, 3}, {3, 4}, {5, 6}},
80
80
  true,
81
81
  },
82
82
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "language": "OCaml",
3
3
  "active": true,
4
- "blurb": "",
4
+ "blurb": "OCaml is a functional and object-oriented language, used both in industry and as a teaching language to elegantly solve problems. The strong type system, with type inference, is useful for catching mistakes.",
5
5
  "exercises": [
6
6
  {
7
7
  "slug": "hello-world",
@@ -1,4 +1,6 @@
1
- [OCaml](https://ocaml.org/) is an industrial strength programming language supporting functional, imperative and object-oriented styles.
2
- It is used as a "teaching language" by a lot of institutions.
3
- OCaml has a rich and powerful [type system](https://en.wikipedia.org/wiki/Type_system) that allows the compiler to catch some mistakes early on saving the developer a huge amount of frustration.
4
- [Type inference](https://en.wikipedia.org/wiki/Type_inference) relieves the developer from the tedium of providing all the type signatures by themselves.
1
+ [OCaml](https://ocaml.org/) is an industrial strength programming language supporting functional, imperative and object-oriented styles - but don't worry if you're not familiar with these, as it's used as a teaching language by a lot of institutions (including Cornell and Princeton).
2
+
3
+ One of the best features of OCaml is the rich and powerful [type system](https://en.wikipedia.org/wiki/Type_system) - this is useful to catch some mistakes early on saving developers a huge amount of frustration.
4
+ Also, [type inference](https://en.wikipedia.org/wiki/Type_inference) relieves developers from having to specify types in the code - the compiler will work these out for you!
5
+
6
+ It's used by Facebook (for static code analysis with [Infer](http://fbinfer.com/)) and Jane Street (for providing strong guarantees for their internal trading systems), and has influenced the [F# functional programming language](https://fsharp.org/) and [ReasonML](https://reasonml.github.io/).
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "language": "Windows PowerShell",
3
3
  "active": false,
4
- "blurb": "",
4
+ "blurb": "Task-based command-line shell and scripting language designed especially for system administration.",
5
5
  "checklist_issue": 4,
6
6
  "exercises": [
7
7
  {
8
8
  "slug": "hello-world",
9
9
  "uuid": "83c215e6-4a4e-4302-8d68-47f367478d2c",
10
- "core": false,
10
+ "core": true,
11
+ "auto_approve": true,
11
12
  "unlocked_by": null,
12
13
  "difficulty": 1,
13
14
  "topics": [
@@ -0,0 +1,31 @@
1
+ #!/bin/bash
2
+ # Format existing exercises using rustfmt
3
+
4
+ RUST_TRACK_REPO_PATH=$(cd "$(dirname "$0")/.." && pwd)
5
+
6
+ EXERCISES_PATH="${RUST_TRACK_REPO_PATH}/exercises/"
7
+
8
+ # Some exercises use custom formatting for illustration purpose and should not be formatted.
9
+ IGNORED_EXERCISES=(
10
+ "diamond"
11
+ "minesweeper"
12
+ "rectangles"
13
+ )
14
+
15
+ # Iterate over every exercise directory and if it is not ignored - format it
16
+ for exercise_dir in ${EXERCISES_PATH}/*; do
17
+ exercise_name=${exercise_dir##*/}
18
+
19
+ if [[ " ${IGNORED_EXERCISES[*]} " == *"$exercise_name"* ]]; then
20
+ echo "$exercise_name - Ignored"
21
+ else
22
+ (
23
+ echo "$exercise_name - Formatting"
24
+
25
+ cd "$exercise_dir"
26
+
27
+ cargo fmt
28
+ )
29
+ fi
30
+
31
+ done
@@ -12,6 +12,7 @@
12
12
  "slug": "hello-world",
13
13
  "uuid": "13ec1ebe-d71b-436f-ab12-25305e814171",
14
14
  "core": false,
15
+ "auto_approve": true,
15
16
  "unlocked_by": null,
16
17
  "difficulty": 1,
17
18
  "topics": [
@@ -81,7 +82,10 @@
81
82
  "core": false,
82
83
  "unlocked_by": null,
83
84
  "difficulty": 1,
84
- "topics": null
85
+ "topics": [
86
+ "loops",
87
+ "primes"
88
+ ]
85
89
  },
86
90
  {
87
91
  "slug": "bob",
@@ -795,7 +799,11 @@
795
799
  "core": false,
796
800
  "unlocked_by": null,
797
801
  "difficulty": 4,
798
- "topics": null
802
+ "topics": [
803
+ "ascii",
804
+ "regular_expressions",
805
+ "strings"
806
+ ]
799
807
  },
800
808
  {
801
809
  "slug": "diamond",
@@ -17,11 +17,31 @@ Execute the tests with:
17
17
  $ cargo test
18
18
  ```
19
19
 
20
- All but the first test have been ignored. After you get the first test to
21
- pass, remove the ignore flag (`#[ignore]`) from the next test and get the tests
22
- to pass again. The test file is located in the `tests` directory. You can
23
- also remove the ignore flag from all the tests to get them to run all at once
24
- if you wish.
20
+ All but the first test have been ignored. After you get the first test to
21
+ pass, open the tests source file wich is located in the `tests` directory
22
+ and remove the `#[ignore]` flag from the next test and get the tests to pass
23
+ again. Each separate test is a function with `#[test]` flag above it.
24
+ Continue, until you pass every test.
25
+
26
+ If you wish to run all tests without editing the tests source file, use:
27
+
28
+ ```bash
29
+ $ cargo test -- --ignored
30
+ ```
31
+
32
+ To run a specific test, for example `some_test`, you can use:
33
+
34
+ ```bash
35
+ $ cargo test some_test
36
+ ```
37
+
38
+ If the specfic test is ignored use:
39
+
40
+ ```bash
41
+ $ cargo test some_test -- --ignored
42
+ ```
43
+
44
+ To learn more about Rust tests refer to the [online test documentation][rust-tests]
25
45
 
26
46
  Make sure to read the [Modules](https://doc.rust-lang.org/book/second-edition/ch07-00-modules.html) chapter if you
27
47
  haven't already, it will help you with organizing your files.
@@ -35,6 +55,7 @@ If you want to know more about Exercism, take a look at the [contribution guide]
35
55
  [help-page]: http://exercism.io/languages/rust
36
56
  [modules]: https://doc.rust-lang.org/book/second-edition/ch07-00-modules.html
37
57
  [cargo]: https://doc.rust-lang.org/book/second-edition/ch14-00-more-about-cargo.html
58
+ [rust-tests]: https://doc.rust-lang.org/book/second-edition/ch11-02-running-tests.html
38
59
  {{ with .Spec.Credits }}
39
60
  ## Source
40
61
 
@@ -50,11 +50,31 @@ Execute the tests with:
50
50
  $ cargo test
51
51
  ```
52
52
 
53
- All but the first test have been ignored. After you get the first test to
54
- pass, remove the ignore flag (`#[ignore]`) from the next test and get the tests
55
- to pass again. The test file is located in the `tests` directory. You can
56
- also remove the ignore flag from all the tests to get them to run all at once
57
- if you wish.
53
+ All but the first test have been ignored. After you get the first test to
54
+ pass, open the tests source file wich is located in the `tests` directory
55
+ and remove the `#[ignore]` flag from the next test and get the tests to pass
56
+ again. Each separate test is a function with `#[test]` flag above it.
57
+ Continue, until you pass every test.
58
+
59
+ If you wish to run all tests without editing the tests source file, use:
60
+
61
+ ```bash
62
+ $ cargo test -- --ignored
63
+ ```
64
+
65
+ To run a specific test, for example `some_test`, you can use:
66
+
67
+ ```bash
68
+ $ cargo test some_test
69
+ ```
70
+
71
+ If the specfic test is ignored use:
72
+
73
+ ```bash
74
+ $ cargo test some_test -- --ignored
75
+ ```
76
+
77
+ To learn more about Rust tests refer to the [online test documentation][rust-tests]
58
78
 
59
79
  Make sure to read the [Modules](https://doc.rust-lang.org/book/second-edition/ch07-00-modules.html) chapter if you
60
80
  haven't already, it will help you with organizing your files.
@@ -68,6 +88,7 @@ If you want to know more about Exercism, take a look at the [contribution guide]
68
88
  [help-page]: http://exercism.io/languages/rust
69
89
  [modules]: https://doc.rust-lang.org/book/second-edition/ch07-00-modules.html
70
90
  [cargo]: https://doc.rust-lang.org/book/second-edition/ch14-00-more-about-cargo.html
91
+ [rust-tests]: https://doc.rust-lang.org/book/second-edition/ch11-02-running-tests.html
71
92
 
72
93
  ## Source
73
94
 
@@ -1,9 +1,9 @@
1
1
  extern crate accumulate;
2
2
 
3
- use accumulate::{map_function, map_closure};
3
+ use accumulate::{map_closure, map_function};
4
4
 
5
5
  fn square(x: i32) -> i32 {
6
- x*x
6
+ x * x
7
7
  }
8
8
 
9
9
  fn abs_val(x: i32) -> i32 {
@@ -58,7 +58,7 @@ fn test_func_abs_value_long() {
58
58
  fn test_closure_square_single() {
59
59
  let input = vec![2];
60
60
  let expected = vec![4];
61
- assert_eq!(map_closure(input, |x| x*x), expected);
61
+ assert_eq!(map_closure(input, |x| x * x), expected);
62
62
  }
63
63
 
64
64
  #[test]
@@ -66,7 +66,7 @@ fn test_closure_square_single() {
66
66
  fn test_closure_square_short() {
67
67
  let input = vec![2, 3, 4, 5];
68
68
  let expected = vec![4, 9, 16, 25];
69
- assert_eq!(map_closure(input, |x| x*x), expected);
69
+ assert_eq!(map_closure(input, |x| x * x), expected);
70
70
  }
71
71
 
72
72
  #[test]
@@ -74,7 +74,7 @@ fn test_closure_square_short() {
74
74
  fn test_closure_square_long_with_neg() {
75
75
  let input = vec![2, -3, -2, 3, 4, 3, 4, 5, 100, 8, 16, 34];
76
76
  let expected = vec![4, 9, 4, 9, 16, 9, 16, 25, 10000, 64, 256, 1156];
77
- assert_eq!(map_closure(input, |x| x*x), expected);
77
+ assert_eq!(map_closure(input, |x| x * x), expected);
78
78
  }
79
79
 
80
80
  #[test]
@@ -82,7 +82,7 @@ fn test_closure_square_long_with_neg() {
82
82
  fn test_closure_abs_value_with_neg() {
83
83
  let input = vec![-3];
84
84
  let expected = vec![3];
85
- assert_eq!(map_closure(input, |x| if x > 0 {x} else {-x}), expected);
85
+ assert_eq!(map_closure(input, |x| if x > 0 { x } else { -x }), expected);
86
86
  }
87
87
 
88
88
  #[test]
@@ -90,5 +90,5 @@ fn test_closure_abs_value_with_neg() {
90
90
  fn test_closure_abs_value_long() {
91
91
  let input = vec![-3, 5, -10, 4, 100, -1234, 55443];
92
92
  let expected = vec![3, 5, 10, 4, 100, 1234, 55443];
93
- assert_eq!(map_closure(input, |x| if x > 0 {x} else {-x}), expected);
93
+ assert_eq!(map_closure(input, |x| if x > 0 { x } else { -x }), expected);
94
94
  }
@@ -20,11 +20,31 @@ Execute the tests with:
20
20
  $ cargo test
21
21
  ```
22
22
 
23
- All but the first test have been ignored. After you get the first test to
24
- pass, remove the ignore flag (`#[ignore]`) from the next test and get the tests
25
- to pass again. The test file is located in the `tests` directory. You can
26
- also remove the ignore flag from all the tests to get them to run all at once
27
- if you wish.
23
+ All but the first test have been ignored. After you get the first test to
24
+ pass, open the tests source file wich is located in the `tests` directory
25
+ and remove the `#[ignore]` flag from the next test and get the tests to pass
26
+ again. Each separate test is a function with `#[test]` flag above it.
27
+ Continue, until you pass every test.
28
+
29
+ If you wish to run all tests without editing the tests source file, use:
30
+
31
+ ```bash
32
+ $ cargo test -- --ignored
33
+ ```
34
+
35
+ To run a specific test, for example `some_test`, you can use:
36
+
37
+ ```bash
38
+ $ cargo test some_test
39
+ ```
40
+
41
+ If the specfic test is ignored use:
42
+
43
+ ```bash
44
+ $ cargo test some_test -- --ignored
45
+ ```
46
+
47
+ To learn more about Rust tests refer to the [online test documentation][rust-tests]
28
48
 
29
49
  Make sure to read the [Modules](https://doc.rust-lang.org/book/second-edition/ch07-00-modules.html) chapter if you
30
50
  haven't already, it will help you with organizing your files.
@@ -38,6 +58,7 @@ If you want to know more about Exercism, take a look at the [contribution guide]
38
58
  [help-page]: http://exercism.io/languages/rust
39
59
  [modules]: https://doc.rust-lang.org/book/second-edition/ch07-00-modules.html
40
60
  [cargo]: https://doc.rust-lang.org/book/second-edition/ch14-00-more-about-cargo.html
61
+ [rust-tests]: https://doc.rust-lang.org/book/second-edition/ch11-02-running-tests.html
41
62
 
42
63
  ## Source
43
64
 
@@ -2,13 +2,13 @@ extern crate acronym;
2
2
 
3
3
  #[test]
4
4
  fn basic() {
5
- assert_eq!(acronym::abbreviate("Portable Network Graphics"), "PNG");
5
+ assert_eq!(acronym::abbreviate("Portable Network Graphics"), "PNG");
6
6
  }
7
7
 
8
8
  #[test]
9
9
  #[ignore]
10
10
  fn lowercase_words() {
11
- assert_eq!(acronym::abbreviate("Ruby on Rails"), "ROR");
11
+ assert_eq!(acronym::abbreviate("Ruby on Rails"), "ROR");
12
12
  }
13
13
 
14
14
  #[test]
@@ -32,12 +32,17 @@ fn all_caps_words() {
32
32
  #[test]
33
33
  #[ignore]
34
34
  fn non_acronym_all_caps_word() {
35
- assert_eq!(acronym::abbreviate("GNU Image Manipulation Program"), "GIMP");
35
+ assert_eq!(
36
+ acronym::abbreviate("GNU Image Manipulation Program"),
37
+ "GIMP"
38
+ );
36
39
  }
37
40
 
38
41
  #[test]
39
42
  #[ignore]
40
43
  fn hyphenated() {
41
- assert_eq!(acronym::abbreviate("Complementary metal-oxide semiconductor"),
42
- "CMOS");
44
+ assert_eq!(
45
+ acronym::abbreviate("Complementary metal-oxide semiconductor"),
46
+ "CMOS"
47
+ );
43
48
  }
@@ -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. After you get the first test to
48
- pass, remove the ignore flag (`#[ignore]`) from the next test and get the tests
49
- to pass again. The test file is located in the `tests` directory. You can
50
- also remove the ignore flag from all the tests to get them to run all at once
51
- if you wish.
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.