trackler 2.1.0.24 → 2.1.0.25

Sign up to get free protection for your applications and to get access to all the features.
Files changed (336) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +3 -0
  3. data/CONTRIBUTING.md +5 -8
  4. data/README.md +7 -7
  5. data/common/CONTRIBUTING.md +0 -5
  6. data/common/exercises/accumulate/description.md +4 -1
  7. data/common/exercises/acronym/description.md +1 -1
  8. data/common/exercises/bank-account/description.md +2 -1
  9. data/common/exercises/book-store/description.md +2 -5
  10. data/common/exercises/bracket-push/description.md +2 -4
  11. data/common/exercises/change/description.md +2 -5
  12. data/common/exercises/circular-buffer/description.md +0 -2
  13. data/common/exercises/clock/description.md +0 -2
  14. data/common/exercises/collatz-conjecture/canonical-data.json +36 -0
  15. data/common/exercises/collatz-conjecture/description.md +25 -0
  16. data/common/exercises/collatz-conjecture/metadata.yml +4 -0
  17. data/common/exercises/counter/description.md +1 -2
  18. data/common/exercises/diamond/description.md +0 -4
  19. data/common/exercises/flatten-array/description.md +1 -1
  20. data/common/exercises/grade-school/description.md +2 -1
  21. data/common/exercises/grains/description.md +2 -1
  22. data/common/exercises/grep/description.md +3 -2
  23. data/common/exercises/kindergarten-garden/description.md +2 -1
  24. data/common/exercises/largest-series-product/description.md +2 -1
  25. data/common/exercises/matrix/description.md +2 -1
  26. data/common/exercises/nucleotide-codons/description.md +2 -1
  27. data/common/exercises/ocr-numbers/description.md +2 -1
  28. data/common/exercises/octal/description.md +3 -1
  29. data/common/exercises/pangram/description.md +2 -1
  30. data/common/exercises/perfect-numbers/description.md +2 -1
  31. data/common/exercises/poker/description.md +0 -2
  32. data/common/exercises/protein-translation/description.md +3 -2
  33. data/common/exercises/proverb/description.md +2 -1
  34. data/common/exercises/pythagorean-triplet/description.md +4 -2
  35. data/common/exercises/queen-attack/description.md +2 -1
  36. data/common/exercises/rectangles/description.md +1 -3
  37. data/common/exercises/rotational-cipher/description.md +0 -4
  38. data/common/exercises/scale-generator/description.md +0 -2
  39. data/common/exercises/secret-handshake/description.md +2 -2
  40. data/common/exercises/series/description.md +2 -1
  41. data/common/exercises/sieve/description.md +2 -1
  42. data/common/exercises/space-age/description.md +0 -2
  43. data/common/exercises/strain/description.md +4 -5
  44. data/common/exercises/sublist/description.md +3 -6
  45. data/common/exercises/sum-of-multiples/description.md +2 -1
  46. data/common/exercises/tournament/description.md +4 -3
  47. data/common/exercises/transpose/description.md +1 -3
  48. data/common/exercises/trinary/description.md +2 -1
  49. data/common/exercises/two-bucket/description.md +1 -3
  50. data/common/exercises/two-fer/canonical-data.json +24 -0
  51. data/common/exercises/two-fer/description.md +40 -0
  52. data/common/exercises/two-fer/metadata.yml +4 -0
  53. data/common/exercises/word-search/description.md +2 -4
  54. data/common/exercises/zebra-puzzle/description.md +1 -1
  55. data/lib/trackler.rb +10 -5
  56. data/lib/trackler/description.rb +2 -2
  57. data/lib/trackler/guaranteed_file.rb +15 -15
  58. data/lib/trackler/implementation.rb +5 -5
  59. data/lib/trackler/implementations.rb +2 -2
  60. data/lib/trackler/metadata.rb +2 -2
  61. data/lib/trackler/problem.rb +2 -96
  62. data/lib/trackler/problems.rb +3 -48
  63. data/lib/trackler/specification.rb +101 -0
  64. data/lib/trackler/specifications.rb +52 -0
  65. data/lib/trackler/track.rb +6 -4
  66. data/lib/trackler/version.rb +1 -1
  67. data/tracks/bash/LICENSE +21 -0
  68. data/tracks/bash/README.md +0 -5
  69. data/tracks/c/LICENSE +21 -0
  70. data/tracks/c/README.md +0 -5
  71. data/tracks/clojure/LICENSE +2 -2
  72. data/tracks/clojure/README.org +0 -5
  73. data/tracks/clojure/config.json +5 -0
  74. data/tracks/clojure/exercises/sublist/project.clj +4 -0
  75. data/tracks/clojure/exercises/sublist/src/example.clj +19 -0
  76. data/tracks/clojure/exercises/sublist/sublist.mustache +9 -0
  77. data/tracks/clojure/exercises/sublist/test/sublist_test.clj +40 -0
  78. data/tracks/cpp/LICENSE +2 -2
  79. data/tracks/cpp/README.md +0 -5
  80. data/tracks/csharp/LICENSE +2 -2
  81. data/tracks/csharp/README.md +0 -5
  82. data/tracks/delphi/LICENSE +2 -2
  83. data/tracks/delphi/README.md +0 -5
  84. data/tracks/ecmascript/LICENSE +2 -2
  85. data/tracks/ecmascript/README.md +0 -5
  86. data/tracks/elisp/.travis.yml +7 -3
  87. data/tracks/elisp/LICENSE +2 -2
  88. data/tracks/elisp/README.org +3 -6
  89. data/tracks/elisp/bin/test-examples +27 -0
  90. data/tracks/elisp/config.json +10 -0
  91. data/tracks/elisp/docs/LEARNING.org +0 -3
  92. data/tracks/elisp/exercises/grains/example.el +18 -0
  93. data/tracks/elisp/exercises/grains/grains-test.el +38 -0
  94. data/tracks/elisp/exercises/grains/grains.el +10 -0
  95. data/tracks/elisp/exercises/phone-number/example.el +34 -0
  96. data/tracks/elisp/exercises/phone-number/phone-number-test.el +43 -0
  97. data/tracks/elisp/exercises/phone-number/phone-number.el +9 -0
  98. data/tracks/elixir/LICENSE +2 -2
  99. data/tracks/elixir/README.md +0 -5
  100. data/tracks/elm/LICENSE +2 -2
  101. data/tracks/elm/README.md +0 -5
  102. data/tracks/erlang/LICENSE +2 -2
  103. data/tracks/erlang/README.md +0 -5
  104. data/tracks/erlang/SETUP.md +7 -0
  105. data/tracks/erlang/exercises/rotational-cipher/rebar.config +5 -5
  106. data/tracks/erlang/exercises/rotational-cipher/test/rotational_cipher_tests.erl +18 -18
  107. data/tracks/factor/LICENSE +2 -2
  108. data/tracks/fortran/.github/PULL_REQUEST_TEMPLATE.md +23 -0
  109. data/tracks/fortran/.gitignore +4 -0
  110. data/tracks/fortran/.travis.yml +17 -0
  111. data/tracks/fortran/LICENSE +21 -0
  112. data/tracks/fortran/Makefile +40 -0
  113. data/tracks/fortran/README.md +72 -0
  114. data/tracks/fortran/bin/fetch-configlet +32 -0
  115. data/tracks/fortran/config.json +32 -0
  116. data/tracks/{kotlin/SETUP.md → fortran/docs/ABOUT.md} +0 -0
  117. data/tracks/fortran/docs/INSTALLATION.md +0 -0
  118. data/tracks/fortran/docs/LEARNING.md +0 -0
  119. data/tracks/fortran/docs/RESOURCES.md +0 -0
  120. data/tracks/fortran/docs/TESTS.md +0 -0
  121. data/tracks/fortran/exercises/TRACK_HINTS.md +0 -0
  122. data/tracks/fortran/exercises/bob/bob.fun +114 -0
  123. data/tracks/fortran/exercises/bob/example.f90 +61 -0
  124. data/tracks/fortran/exercises/hello_world/example.f90 +9 -0
  125. data/tracks/fortran/exercises/hello_world/hello_world.fun +10 -0
  126. data/tracks/fortran/img/.keep +0 -0
  127. data/tracks/fsharp/LICENSE +2 -2
  128. data/tracks/fsharp/README.md +0 -5
  129. data/tracks/go/LICENSE +2 -2
  130. data/tracks/go/README.md +0 -5
  131. data/tracks/haskell/LICENSE +2 -2
  132. data/tracks/haskell/README.md +0 -5
  133. data/tracks/idris/LICENSE +2 -2
  134. data/tracks/idris/README.md +0 -5
  135. data/tracks/java/LICENSE +2 -2
  136. data/tracks/java/README.md +0 -7
  137. data/tracks/java/{SETUP.md → TRACK_HINTS.md} +0 -0
  138. data/tracks/java/config.json +5 -0
  139. data/tracks/java/exercises/_template/build.gradle +1 -0
  140. data/tracks/java/exercises/accumulate/build.gradle +1 -0
  141. data/tracks/java/exercises/acronym/build.gradle +1 -0
  142. data/tracks/java/exercises/all-your-base/build.gradle +1 -0
  143. data/tracks/java/exercises/allergies/build.gradle +1 -0
  144. data/tracks/java/exercises/anagram/build.gradle +1 -0
  145. data/tracks/java/exercises/atbash-cipher/build.gradle +1 -0
  146. data/tracks/java/exercises/beer-song/build.gradle +1 -0
  147. data/tracks/java/exercises/binary-search/build.gradle +1 -0
  148. data/tracks/java/exercises/binary/build.gradle +1 -0
  149. data/tracks/java/exercises/bob/build.gradle +1 -0
  150. data/tracks/java/exercises/book-store/build.gradle +1 -0
  151. data/tracks/java/exercises/bracket-push/build.gradle +1 -0
  152. data/tracks/java/exercises/change/build.gradle +1 -0
  153. data/tracks/java/exercises/clock/build.gradle +2 -1
  154. data/tracks/java/exercises/collatz-conjecture/build.gradle +18 -0
  155. data/tracks/java/exercises/collatz-conjecture/src/example/java/CollatzCalculator.java +19 -0
  156. data/tracks/java/exercises/collatz-conjecture/src/main/java/CollatzCalculator.java +7 -0
  157. data/tracks/java/exercises/collatz-conjecture/src/test/java/CollatzCalculatorTest.java +59 -0
  158. data/tracks/java/exercises/crypto-square/build.gradle +1 -0
  159. data/tracks/java/exercises/diamond/build.gradle +1 -0
  160. data/tracks/java/exercises/diamond/src/example/java/DiamondPrinter.java +4 -4
  161. data/tracks/java/exercises/diamond/src/test/java/DiamondPrinterTest.java +6 -2
  162. data/tracks/java/exercises/difference-of-squares/build.gradle +1 -0
  163. data/tracks/java/exercises/difference-of-squares/src/main/java/.keep +0 -0
  164. data/tracks/java/exercises/etl/build.gradle +1 -0
  165. data/tracks/java/exercises/flatten-array/build.gradle +1 -0
  166. data/tracks/java/exercises/gigasecond/build.gradle +1 -0
  167. data/tracks/java/exercises/grade-school/build.gradle +1 -0
  168. data/tracks/java/exercises/hamming/build.gradle +1 -0
  169. data/tracks/java/exercises/hexadecimal/build.gradle +1 -0
  170. data/tracks/java/exercises/isogram/build.gradle +1 -0
  171. data/tracks/java/exercises/kindergarten-garden/build.gradle +1 -0
  172. data/tracks/java/exercises/largest-series-product/build.gradle +1 -0
  173. data/tracks/java/exercises/linked-list/build.gradle +1 -0
  174. data/tracks/java/exercises/luhn/build.gradle +1 -0
  175. data/tracks/java/exercises/matrix/build.gradle +2 -1
  176. data/tracks/java/exercises/meetup/build.gradle +1 -0
  177. data/tracks/java/exercises/minesweeper/build.gradle +1 -0
  178. data/tracks/java/exercises/nth-prime/build.gradle +1 -0
  179. data/tracks/java/exercises/ocr-numbers/build.gradle +1 -0
  180. data/tracks/java/exercises/octal/build.gradle +1 -0
  181. data/tracks/java/exercises/pangram/build.gradle +1 -0
  182. data/tracks/java/exercises/pascals-triangle/build.gradle +1 -0
  183. data/tracks/java/exercises/perfect-numbers/build.gradle +1 -0
  184. data/tracks/java/exercises/phone-number/build.gradle +1 -0
  185. data/tracks/java/exercises/pig-latin/build.gradle +1 -0
  186. data/tracks/java/exercises/queen-attack/build.gradle +1 -0
  187. data/tracks/java/exercises/raindrops/build.gradle +1 -0
  188. data/tracks/java/exercises/rectangles/build.gradle +1 -0
  189. data/tracks/java/exercises/rna-transcription/build.gradle +1 -0
  190. data/tracks/java/exercises/robot-simulator/build.gradle +1 -0
  191. data/tracks/java/exercises/roman-numerals/build.gradle +1 -0
  192. data/tracks/java/exercises/run-length-encoding/build.gradle +1 -0
  193. data/tracks/java/exercises/saddle-points/build.gradle +1 -0
  194. data/tracks/java/exercises/scrabble-score/build.gradle +1 -0
  195. data/tracks/java/exercises/secret-handshake/build.gradle +1 -0
  196. data/tracks/java/exercises/series/build.gradle +1 -0
  197. data/tracks/java/exercises/settings.gradle +1 -0
  198. data/tracks/java/exercises/sieve/build.gradle +1 -0
  199. data/tracks/java/exercises/simple-cipher/build.gradle +1 -0
  200. data/tracks/java/exercises/simple-linked-list/build.gradle +1 -0
  201. data/tracks/java/exercises/space-age/build.gradle +1 -0
  202. data/tracks/java/exercises/strain/build.gradle +1 -0
  203. data/tracks/java/exercises/sublist/build.gradle +1 -0
  204. data/tracks/java/exercises/sum-of-multiples/build.gradle +1 -0
  205. data/tracks/java/exercises/triangle/build.gradle +1 -0
  206. data/tracks/java/exercises/trinary/build.gradle +1 -0
  207. data/tracks/java/exercises/twelve-days/build.gradle +2 -1
  208. data/tracks/java/exercises/word-count/build.gradle +1 -0
  209. data/tracks/java/exercises/wordy/build.gradle +1 -0
  210. data/tracks/javascript/LICENSE +2 -2
  211. data/tracks/javascript/README.md +0 -5
  212. data/tracks/julia/LICENSE +2 -2
  213. data/tracks/kotlin/LICENSE +2 -2
  214. data/tracks/kotlin/README.md +0 -7
  215. data/tracks/kotlin/TRACK_HINTS.md +1 -0
  216. data/tracks/kotlin/exercises/phone-number/src/example/kotlin/PhoneNumber.kt +1 -1
  217. data/tracks/kotlin/exercises/phone-number/src/test/kotlin/PhoneNumberTest.kt +7 -8
  218. data/tracks/kotlin/exercises/rna-transcription/src/test/kotlin/RnaTranscriptionTest.kt +6 -6
  219. data/tracks/lfe/LICENSE +2 -2
  220. data/tracks/lfe/README.md +0 -5
  221. data/tracks/lisp/LICENSE +2 -2
  222. data/tracks/lisp/README.md +0 -5
  223. data/tracks/lua/LICENSE +2 -2
  224. data/tracks/lua/README.md +0 -5
  225. data/tracks/mips/LICENSE +2 -2
  226. data/tracks/mips/README.md +0 -5
  227. data/tracks/objective-c/LICENSE +2 -2
  228. data/tracks/objective-c/README.md +0 -5
  229. data/tracks/ocaml/LICENSE +2 -2
  230. data/tracks/ocaml/README.md +0 -5
  231. data/tracks/ocaml/config.json +54 -25
  232. data/tracks/ocaml/exercises/forth/.merlin +5 -0
  233. data/tracks/ocaml/exercises/forth/Makefile +11 -0
  234. data/tracks/ocaml/exercises/forth/example.ml +89 -0
  235. data/tracks/ocaml/exercises/forth/forth.mli +1 -0
  236. data/tracks/ocaml/exercises/forth/test.ml +147 -0
  237. data/tracks/ocaml/exercises/react/.merlin +5 -0
  238. data/tracks/ocaml/exercises/react/HINT.md +3 -0
  239. data/tracks/ocaml/exercises/react/Makefile +11 -0
  240. data/tracks/ocaml/exercises/react/example.ml +106 -0
  241. data/tracks/ocaml/exercises/react/react.mli +26 -0
  242. data/tracks/ocaml/exercises/react/test.ml +157 -0
  243. data/tracks/ocaml/tools/test-generator/src/special_cases.ml +5 -2
  244. data/tracks/ocaml/tools/test-generator/templates/forth/template.ml +114 -0
  245. data/tracks/perl5/LICENSE +2 -2
  246. data/tracks/perl6/LICENSE +2 -2
  247. data/tracks/perl6/README.md +0 -5
  248. data/tracks/perl6/config.json +5 -0
  249. data/tracks/perl6/exercises/clock/Example.pm6 +2 -2
  250. data/tracks/perl6/exercises/flatten-array/Example.pm6 +13 -0
  251. data/tracks/perl6/exercises/flatten-array/FlattenArray.pm6 +4 -0
  252. data/tracks/perl6/exercises/flatten-array/example.yaml +6 -0
  253. data/tracks/perl6/exercises/flatten-array/flatten-array.t +80 -0
  254. data/tracks/php/LICENSE +2 -2
  255. data/tracks/php/README.md +0 -5
  256. data/tracks/powershell/.travis.yml +1 -0
  257. data/tracks/python/LICENSE +2 -2
  258. data/tracks/python/README.md +0 -5
  259. data/tracks/python/config.json +8 -0
  260. data/tracks/python/exercises/protein-translation/example.py +25 -0
  261. data/tracks/python/exercises/protein-translation/protein_translation.py +6 -0
  262. data/tracks/python/exercises/protein-translation/protein_translation_test.py +59 -0
  263. data/tracks/r/LICENSE +2 -2
  264. data/tracks/r/README.md +0 -5
  265. data/tracks/racket/LICENSE +2 -2
  266. data/tracks/racket/README.md +0 -5
  267. data/tracks/racket/config.json +5 -0
  268. data/tracks/racket/exercises/acronym/acronym-test.rkt +40 -0
  269. data/tracks/racket/exercises/acronym/acronym.rkt +3 -0
  270. data/tracks/racket/exercises/acronym/example.rkt +25 -0
  271. data/tracks/racket/exercises/grep/example.rkt +60 -26
  272. data/tracks/racket/exercises/grep/grep-test.rkt +154 -17
  273. data/tracks/racket/exercises/grep/grep.rkt +1 -18
  274. data/tracks/racket/exercises/grep/iliad.txt +9 -0
  275. data/tracks/racket/exercises/grep/midsummer-night.txt +7 -0
  276. data/tracks/racket/exercises/grep/paradise-lost.txt +8 -0
  277. data/tracks/ruby/README.md +4 -1
  278. data/tracks/ruby/exercises/acronym/.meta/.version +1 -1
  279. data/tracks/ruby/exercises/acronym/.meta/solutions/acronym.rb +1 -1
  280. data/tracks/ruby/exercises/acronym/acronym_test.rb +2 -7
  281. data/tracks/ruby/exercises/anagram/.meta/generator/anagram_case.rb +1 -1
  282. data/tracks/ruby/exercises/beer-song/.meta/generator/beer_song_case.rb +1 -1
  283. data/tracks/ruby/exercises/clock/.meta/generator/clock_case.rb +1 -1
  284. data/tracks/ruby/exercises/connect/.meta/generator/connect_case.rb +0 -3
  285. data/tracks/ruby/exercises/connect/.meta/generator/test_template.erb +1 -1
  286. data/tracks/ruby/exercises/difference-of-squares/.meta/.version +1 -1
  287. data/tracks/ruby/exercises/difference-of-squares/.meta/solutions/difference_of_squares.rb +1 -1
  288. data/tracks/ruby/exercises/difference-of-squares/difference_of_squares_test.rb +12 -17
  289. data/tracks/ruby/exercises/triangle/.meta/generator/triangle_case.rb +10 -2
  290. data/tracks/ruby/exercises/triangle/triangle_test.rb +17 -17
  291. data/tracks/ruby/exercises/wordy/.meta/generator/wordy_case.rb +1 -1
  292. data/tracks/ruby/lib/generator/case_values.rb +1 -1
  293. data/tracks/ruby/lib/generator/exercise_case.rb +16 -2
  294. data/tracks/ruby/lib/generator/exercise_case/assertion.rb +4 -4
  295. data/tracks/ruby/test/fixtures/xruby/exercises/alpha/.meta/generator/alpha_case.rb +1 -1
  296. data/tracks/ruby/test/generator/case_values_test.rb +28 -7
  297. data/tracks/ruby/test/generator/exercise_case/assertion_test.rb +7 -7
  298. data/tracks/ruby/test/generator/exercise_case_test.rb +21 -25
  299. data/tracks/ruby/test/wordy_cases_test.rb +4 -4
  300. data/tracks/rust/LICENSE +2 -2
  301. data/tracks/rust/README.md +0 -5
  302. data/tracks/rust/config.json +1 -0
  303. data/tracks/rust/exercises/etl/Cargo.toml +1 -1
  304. data/tracks/rust/exercises/etl/example.rs +2 -2
  305. data/tracks/rust/exercises/etl/tests/etl.rs +26 -32
  306. data/tracks/rust/exercises/forth/tests/forth.rs +20 -22
  307. data/tracks/rust/exercises/minesweeper/Cargo.toml +1 -1
  308. data/tracks/rust/exercises/minesweeper/example.rs +3 -0
  309. data/tracks/rust/exercises/minesweeper/tests/minesweeper.rs +44 -46
  310. data/tracks/rust/exercises/raindrops/Cargo.toml +1 -1
  311. data/tracks/rust/exercises/raindrops/tests/raindrops.rs +12 -0
  312. data/tracks/rust/exercises/rna-transcription/Cargo.toml +1 -1
  313. data/tracks/rust/exercises/rna-transcription/example.rs +13 -9
  314. data/tracks/rust/exercises/rna-transcription/tests/rna-transcription.rs +23 -5
  315. data/tracks/scala/LICENSE +2 -2
  316. data/tracks/scala/README.md +0 -5
  317. data/tracks/scheme/LICENSE +2 -2
  318. data/tracks/scheme/README.org +0 -6
  319. data/tracks/swift/Dangerfile +1 -1
  320. data/tracks/swift/LICENSE +2 -2
  321. data/tracks/swift/README.md +0 -6
  322. data/tracks/vbnet/.travis.yml +1 -0
  323. data/tracks/vimscript/.travis.yml +4 -0
  324. data/tracks/vimscript/.vintrc.yaml +5 -0
  325. data/tracks/vimscript/TRACK_HINTS.md +19 -1
  326. data/tracks/vimscript/bin/pre-push +18 -0
  327. data/tracks/vimscript/config.json +8 -1
  328. data/tracks/vimscript/docs/ABOUT.md +7 -6
  329. data/tracks/vimscript/docs/TESTS.md +4 -4
  330. data/tracks/vimscript/exercises/allergies/allergies.vader +68 -0
  331. data/tracks/vimscript/exercises/allergies/allergies.vim +29 -0
  332. data/tracks/vimscript/exercises/allergies/example.vim +23 -0
  333. data/tracks/vimscript/lib/generate.vim +89 -0
  334. metadata +81 -6
  335. data/tracks/java/exercises/difference-of-squares/src/main/java/DifferenceOfSquaresCalculator.java +0 -15
  336. data/tracks/ocaml/.vscode/launch.json +0 -13
@@ -0,0 +1,18 @@
1
+ #!/bin/sh
2
+
3
+ # Only run vint when the commits touched any .vim files.
4
+ #
5
+ # This script is meant to be used as a git pre-push hook:
6
+ #
7
+ # $ cp bin/pre-push .git/hooks/
8
+ #
9
+ # It assumes that the git remote is called "origin".
10
+
11
+ if git diff --name-only origin/master..HEAD | grep -q '\.vim$'; then
12
+ if ! command -v vint 1>/dev/null; then
13
+ echo 'Install "vint" first: pip3 install vim-vint'
14
+ exit 1
15
+ fi
16
+ echo '[pre-push] Found .vim files. Running vint...'
17
+ vint .
18
+ fi
@@ -69,13 +69,20 @@
69
69
  "slug": "nucleotide-count",
70
70
  "difficulty": 1,
71
71
  "topics": []
72
+ },
73
+ {
74
+ "slug": "allergies",
75
+ "difficulty": 1,
76
+ "topics": [
77
+ ]
72
78
  }
73
79
  ],
74
80
  "deprecated": [],
75
81
  "ignored": [
76
82
  "bin",
83
+ "docs",
77
84
  "img",
78
- "docs"
85
+ "lib"
79
86
  ],
80
87
  "foregone": []
81
88
  }
@@ -11,17 +11,18 @@ commands, and so on. This sounds complicated, but you quickly get used to it.
11
11
  The biggest difference to other editors is Vim's modal interface. If you use
12
12
  Vim, you don't use complicated shortcuts, you speak a language.
13
13
 
14
- E.g. when you hit `d` in normal mode, you initiate a delete action. Then you
15
- have to choose the region to act upon. E.g. `dw` deletes until the end of the
16
- current word. `dd` deletes the current line. If the cursor is anywhere in a
17
- double quote, you can use `ci"` to change this quote.
14
+ E.g. when you hit `d` in normal mode, you initiate a delete action. Then
15
+ you have to choose the region (or other object) to act upon. E.g. `dw`
16
+ deletes until the end of the current word. `dd` deletes the current
17
+ line. If the cursor is anywhere in a double quote, you can use `ci"` to
18
+ change this quote.
18
19
 
19
20
  You reduce the risk of
20
21
  [carpal tunnel syndrome](https://en.wikipedia.org/wiki/Carpal_tunnel_syndrome)
21
22
  by not hitting several keys at once, but by pressing single keys in sequence.
22
23
 
23
- For convenience, often used keys at put on the homerow or near it, so you don't
24
- have to move your hands back and forth all the time.
24
+ For convenience, often used keys are put on the homerow or near it, so
25
+ you don't have to move your hands back and forth all the time.
25
26
 
26
27
  Yes, there's a lot to learn at first, but when you get it, you can edit text
27
28
  faster and more precisely than with most other editors. There is a reason people
@@ -28,8 +28,8 @@ If you want a convenient shortcut to the above steps, put this in your vimrc:
28
28
  ```vim
29
29
  function! s:exercism_tests()
30
30
  if expand('%:e') == 'vim'
31
- let testfile = printf('%s/%s.vader', expand('%:h'),
32
- \ tr(expand('%:h:t'), '-', '_'))
31
+ let testfile = printf('%s/%s.vader', expand('%:p:h'),
32
+ \ tr(expand('%:p:h:t'), '-', '_'))
33
33
  if !filereadable(testfile)
34
34
  echoerr 'File does not exist: '. testfile
35
35
  return
@@ -37,8 +37,8 @@ function! s:exercism_tests()
37
37
  source %
38
38
  execute 'Vader' testfile
39
39
  else
40
- let sourcefile = printf('%s/%s.vim', expand('%:h'),
41
- \ tr(expand('%:h:t'), '-', '_'))
40
+ let sourcefile = printf('%s/%s.vim', expand('%:p:h'),
41
+ \ tr(expand('%:p:h:t'), '-', '_'))
42
42
  if !filereadable(sourcefile)
43
43
  echoerr 'File does not exist: '. sourcefile
44
44
  return
@@ -0,0 +1,68 @@
1
+ "
2
+ " Version: 1.0.0
3
+ "
4
+
5
+ Before:
6
+ unlet! input expected
7
+
8
+ Execute (no allergies means not allergic):
9
+ let input = 0
10
+ AssertEqual 0, AllergicTo(input, 'peanuts')
11
+ AssertEqual 0, AllergicTo(input, 'cats')
12
+ AssertEqual 0, AllergicTo(input, 'strawberries')
13
+
14
+ Execute (is allergic to eggs):
15
+ let input = 1
16
+ AssertEqual 1, AllergicTo(input, 'eggs')
17
+
18
+ Execute (allergic to eggs in addition to other stuff):
19
+ let input = 5
20
+ AssertEqual 1, AllergicTo(input, 'eggs')
21
+ AssertEqual 1, AllergicTo(input, 'shellfish')
22
+ AssertEqual 0, AllergicTo(input, 'strawberries')
23
+
24
+ Execute (no allergies at all):
25
+ let input = 0
26
+ let expected = []
27
+ AssertEqual expected, List(input)
28
+
29
+ Execute (allergic to just eggs):
30
+ let input = 1
31
+ let expected = ['eggs']
32
+ AssertEqual expected, List(input)
33
+
34
+ Execute (allergic to just peanuts):
35
+ let input = 2
36
+ let expected = ['peanuts']
37
+ AssertEqual expected, List(input)
38
+
39
+ Execute (allergic to just strawberries):
40
+ let input = 8
41
+ let expected = ['strawberries']
42
+ AssertEqual expected, List(input)
43
+
44
+ Execute (allergic to eggs and peanuts):
45
+ let input = 3
46
+ let expected = ['eggs', 'peanuts']
47
+ AssertEqual expected, List(input)
48
+
49
+ Execute (allergic to more than eggs but not peanuts):
50
+ let input = 5
51
+ let expected = ['eggs', 'shellfish']
52
+ AssertEqual expected, List(input)
53
+
54
+ Execute (allergic to lots of stuff):
55
+ let input = 248
56
+ let expected = ['strawberries', 'tomatoes', 'chocolate', 'pollen', 'cats']
57
+ AssertEqual expected, List(input)
58
+
59
+ Execute (allergic to everything):
60
+ let input = 255
61
+ let expected = ['eggs', 'peanuts', 'shellfish', 'strawberries', 'tomatoes', 'chocolate', 'pollen', 'cats']
62
+ AssertEqual expected, List(input)
63
+
64
+ Execute (ignore non allergen score parts):
65
+ let input = 509
66
+ let expected = ['eggs', 'shellfish', 'strawberries', 'tomatoes', 'chocolate', 'pollen', 'cats']
67
+ AssertEqual expected, List(input)
68
+
@@ -0,0 +1,29 @@
1
+ "
2
+ " Given a person's allergy score, determine whether or not they're allergic to
3
+ " a given item, and their full list of allergies.
4
+ "
5
+ " eggs 1
6
+ " peanuts 2
7
+ " shellfish 4
8
+ " strawberries 8
9
+ " tomatoes 16
10
+ " chocolate 32
11
+ " pollen 64
12
+ " cats 128
13
+ "
14
+ " Examples:
15
+ "
16
+ " :echo AllergicTo(5, 'shellfish')
17
+ " 1
18
+ "
19
+ " :echo List(5)
20
+ " ['eggs', 'shellfish']
21
+ "
22
+
23
+ function! AllergicTo(score, allergy) abort
24
+ " your code goes here
25
+ endfunction
26
+
27
+ function! List(score) abort
28
+ " your code goes here
29
+ endfunction
@@ -0,0 +1,23 @@
1
+ let s:allergy_map = {
2
+ \ 'eggs': 1,
3
+ \ 'peanuts': 2,
4
+ \ 'shellfish': 4,
5
+ \ 'strawberries': 8,
6
+ \ 'tomatoes': 16,
7
+ \ 'chocolate': 32,
8
+ \ 'pollen': 64,
9
+ \ 'cats': 128,
10
+ \ }
11
+
12
+ function! AllergicTo(score, allergy) abort
13
+ return and(a:score, s:allergy_map[a:allergy]) != 0
14
+ endfunction
15
+
16
+ function! List(score) abort
17
+ return filter(map(sort(items(s:allergy_map), 's:valsort'),
18
+ \ 'v:val[0]'), 'AllergicTo(a:score, v:val)')
19
+ endfunction
20
+
21
+ function! s:valsort(a, b) abort
22
+ return a:a[1] - a:b[1]
23
+ endfunction
@@ -0,0 +1,89 @@
1
+ "
2
+ " This Vim script fetches the canonical test data for an
3
+ " exercise from GitHub and converts it to a Vader file.
4
+ "
5
+ " :source %
6
+ " :Generate word-count
7
+ "
8
+
9
+ function! s:data_url(slug) abort
10
+ return printf('https://raw.githubusercontent.com/exercism/x-common/master/exercises/%s/canonical-data.json', a:slug)
11
+ endfunction
12
+
13
+ function! s:generate_header(data)
14
+ call append(0, [
15
+ \ '"',
16
+ \ '" Version: '. a:data.version,
17
+ \ '"',
18
+ \ '',
19
+ \ 'Before:',
20
+ \ ' unlet! input expected',
21
+ \ ])
22
+ endfunction
23
+
24
+ function! s:generate_variable(name, value)
25
+ let value = a:value
26
+ if type(a:value) == type('')
27
+ let value = '"'. value .'"'
28
+ endif
29
+ return printf(' let %s = %s', a:name, value)
30
+ endfunction
31
+
32
+ function! s:generate_assert(property) abort
33
+ let funcname = toupper(a:property[0]) . a:property[1:]
34
+ return printf(' AssertEqual expected, %s(input)', funcname)
35
+ endfunction
36
+
37
+ function! s:get_input_value(test) abort
38
+ let t = copy(a:test)
39
+ if has_key(t, 'comments') | call remove(t, 'comments') | endif
40
+ if has_key(t, 'description') | call remove(t, 'description') | endif
41
+ if has_key(t, 'expected') | call remove(t, 'expected') | endif
42
+ if has_key(t, 'property') | call remove(t, 'property') | endif
43
+ return items(t)[0][1]
44
+ endfunction
45
+
46
+ function! s:generate_tests(tests) abort
47
+ for test in a:tests
48
+ if has_key(test, 'cases')
49
+ call s:generate_tests(test.cases)
50
+ else
51
+ call append(line('$'), printf('Execute (%s):', test.description))
52
+ call append(line('$'), s:generate_variable('input', s:get_input_value(test)))
53
+ call append(line('$'), s:generate_variable('expected', test.expected))
54
+ call append(line('$'), [s:generate_assert(test.property), ''])
55
+ endif
56
+ endfor
57
+ endfunction
58
+
59
+ function! s:replace_types() abort
60
+ silent %substitute/v:true/1/eg
61
+ silent %substitute/v:false/0/eg
62
+ silent %substitute/v:null/''/eg
63
+ endfunction
64
+
65
+ function! s:generate(slug) abort
66
+ execute 'silent edit' s:data_url(a:slug)
67
+ if getline(1) ==# '404: Not Found'
68
+ silent bwipeout!
69
+ redraw!
70
+ echomsg '404: Not Found'
71
+ return
72
+ elseif line2byte('$') == -1
73
+ silent bwipeout!
74
+ echomsg 'Got empty buffer. Have you disabled the netrw plugin?'
75
+ return
76
+ endif
77
+ %yank x
78
+ let data = json_decode(substitute(@x, '\\', '\\\\', 'g'))
79
+ bwipeout!
80
+ enew!
81
+ setfiletype vader
82
+ call s:generate_header(data)
83
+ call s:generate_tests(data.cases)
84
+ call s:replace_types()
85
+ set nomodified
86
+ redraw!
87
+ endfunction
88
+
89
+ command! -nargs=1 Generate call s:generate(<f-args>)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trackler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0.24
4
+ version: 2.1.0.25
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katrina Owen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-29 00:00:00.000000000 Z
11
+ date: 2017-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -170,6 +170,9 @@ files:
170
170
  - common/exercises/clock/canonical-data.json
171
171
  - common/exercises/clock/description.md
172
172
  - common/exercises/clock/metadata.yml
173
+ - common/exercises/collatz-conjecture/canonical-data.json
174
+ - common/exercises/collatz-conjecture/description.md
175
+ - common/exercises/collatz-conjecture/metadata.yml
173
176
  - common/exercises/connect/canonical-data.json
174
177
  - common/exercises/connect/description.md
175
178
  - common/exercises/connect/metadata.yml
@@ -412,6 +415,9 @@ files:
412
415
  - common/exercises/two-bucket/canonical-data.json
413
416
  - common/exercises/two-bucket/description.md
414
417
  - common/exercises/two-bucket/metadata.yml
418
+ - common/exercises/two-fer/canonical-data.json
419
+ - common/exercises/two-fer/description.md
420
+ - common/exercises/two-fer/metadata.yml
415
421
  - common/exercises/variable-length-quantity/canonical-data.json
416
422
  - common/exercises/variable-length-quantity/description.md
417
423
  - common/exercises/variable-length-quantity/metadata.yml
@@ -531,6 +537,8 @@ files:
531
537
  - lib/trackler/path.rb
532
538
  - lib/trackler/problem.rb
533
539
  - lib/trackler/problems.rb
540
+ - lib/trackler/specification.rb
541
+ - lib/trackler/specifications.rb
534
542
  - lib/trackler/track.rb
535
543
  - lib/trackler/tracks.rb
536
544
  - lib/trackler/version.rb
@@ -538,6 +546,7 @@ files:
538
546
  - tracks/bash/.git
539
547
  - tracks/bash/.gitignore
540
548
  - tracks/bash/.travis.yml
549
+ - tracks/bash/LICENSE
541
550
  - tracks/bash/README.md
542
551
  - tracks/bash/SETUP.md
543
552
  - tracks/bash/bin/fetch-configlet
@@ -566,6 +575,7 @@ files:
566
575
  - tracks/c/.github/stale.yml
567
576
  - tracks/c/.gitignore
568
577
  - tracks/c/.travis.yml
578
+ - tracks/c/LICENSE
569
579
  - tracks/c/README.md
570
580
  - tracks/c/SETUP.md
571
581
  - tracks/c/bin/fetch-configlet
@@ -1060,6 +1070,10 @@ files:
1060
1070
  - tracks/clojure/exercises/strain/project.clj
1061
1071
  - tracks/clojure/exercises/strain/src/example.clj
1062
1072
  - tracks/clojure/exercises/strain/test/strain_test.clj
1073
+ - tracks/clojure/exercises/sublist/project.clj
1074
+ - tracks/clojure/exercises/sublist/src/example.clj
1075
+ - tracks/clojure/exercises/sublist/sublist.mustache
1076
+ - tracks/clojure/exercises/sublist/test/sublist_test.clj
1063
1077
  - tracks/clojure/exercises/sum-of-multiples/project.clj
1064
1078
  - tracks/clojure/exercises/sum-of-multiples/src/example.clj
1065
1079
  - tracks/clojure/exercises/sum-of-multiples/test/sum_of_multiples_test.clj
@@ -2340,6 +2354,7 @@ files:
2340
2354
  - tracks/elisp/README.org
2341
2355
  - tracks/elisp/SETUP.org
2342
2356
  - tracks/elisp/bin/fetch-configlet
2357
+ - tracks/elisp/bin/test-examples
2343
2358
  - tracks/elisp/config.json
2344
2359
  - tracks/elisp/docs/ABOUT.org
2345
2360
  - tracks/elisp/docs/INSTALLATION.org
@@ -2371,6 +2386,9 @@ files:
2371
2386
  - tracks/elisp/exercises/gigasecond/example.el
2372
2387
  - tracks/elisp/exercises/gigasecond/gigasecond-test.el
2373
2388
  - tracks/elisp/exercises/gigasecond/gigasecond.el
2389
+ - tracks/elisp/exercises/grains/example.el
2390
+ - tracks/elisp/exercises/grains/grains-test.el
2391
+ - tracks/elisp/exercises/grains/grains.el
2374
2392
  - tracks/elisp/exercises/hamming/example.el
2375
2393
  - tracks/elisp/exercises/hamming/hamming-test.el
2376
2394
  - tracks/elisp/exercises/hamming/hamming.el
@@ -2386,6 +2404,9 @@ files:
2386
2404
  - tracks/elisp/exercises/perfect-numbers/example.el
2387
2405
  - tracks/elisp/exercises/perfect-numbers/perfect-numbers-test.el
2388
2406
  - tracks/elisp/exercises/perfect-numbers/perfect-numbers.el
2407
+ - tracks/elisp/exercises/phone-number/example.el
2408
+ - tracks/elisp/exercises/phone-number/phone-number-test.el
2409
+ - tracks/elisp/exercises/phone-number/phone-number.el
2389
2410
  - tracks/elisp/exercises/raindrops/example.el
2390
2411
  - tracks/elisp/exercises/raindrops/raindrops-test.el
2391
2412
  - tracks/elisp/exercises/raindrops/raindrops.el
@@ -3107,6 +3128,26 @@ files:
3107
3128
  - tracks/factor/exercises/leap/leap-example.factor
3108
3129
  - tracks/factor/exercises/leap/leap-tests.factor
3109
3130
  - tracks/factor/img/icon.png
3131
+ - tracks/fortran/.git
3132
+ - tracks/fortran/.github/PULL_REQUEST_TEMPLATE.md
3133
+ - tracks/fortran/.gitignore
3134
+ - tracks/fortran/.travis.yml
3135
+ - tracks/fortran/LICENSE
3136
+ - tracks/fortran/Makefile
3137
+ - tracks/fortran/README.md
3138
+ - tracks/fortran/bin/fetch-configlet
3139
+ - tracks/fortran/config.json
3140
+ - tracks/fortran/docs/ABOUT.md
3141
+ - tracks/fortran/docs/INSTALLATION.md
3142
+ - tracks/fortran/docs/LEARNING.md
3143
+ - tracks/fortran/docs/RESOURCES.md
3144
+ - tracks/fortran/docs/TESTS.md
3145
+ - tracks/fortran/exercises/TRACK_HINTS.md
3146
+ - tracks/fortran/exercises/bob/bob.fun
3147
+ - tracks/fortran/exercises/bob/example.f90
3148
+ - tracks/fortran/exercises/hello_world/example.f90
3149
+ - tracks/fortran/exercises/hello_world/hello_world.fun
3150
+ - tracks/fortran/img/.keep
3110
3151
  - tracks/fsharp/.git
3111
3152
  - tracks/fsharp/.gitignore
3112
3153
  - tracks/fsharp/.paket/paket.bootstrapper.exe
@@ -4313,7 +4354,7 @@ files:
4313
4354
  - tracks/java/LICENSE
4314
4355
  - tracks/java/POLICIES.md
4315
4356
  - tracks/java/README.md
4316
- - tracks/java/SETUP.md
4357
+ - tracks/java/TRACK_HINTS.md
4317
4358
  - tracks/java/bin/build-jq.sh
4318
4359
  - tracks/java/bin/fetch-configlet
4319
4360
  - tracks/java/bin/journey-test.sh
@@ -4400,6 +4441,10 @@ files:
4400
4441
  - tracks/java/exercises/clock/src/test/java/ClockAddTest.java
4401
4442
  - tracks/java/exercises/clock/src/test/java/ClockCreationTest.java
4402
4443
  - tracks/java/exercises/clock/src/test/java/ClockEqualTest.java
4444
+ - tracks/java/exercises/collatz-conjecture/build.gradle
4445
+ - tracks/java/exercises/collatz-conjecture/src/example/java/CollatzCalculator.java
4446
+ - tracks/java/exercises/collatz-conjecture/src/main/java/CollatzCalculator.java
4447
+ - tracks/java/exercises/collatz-conjecture/src/test/java/CollatzCalculatorTest.java
4403
4448
  - tracks/java/exercises/crypto-square/build.gradle
4404
4449
  - tracks/java/exercises/crypto-square/src/example/java/Crypto.java
4405
4450
  - tracks/java/exercises/crypto-square/src/main/java/.keep
@@ -4414,7 +4459,7 @@ files:
4414
4459
  - tracks/java/exercises/diamond/src/test/java/DiamondPrinterTest.java
4415
4460
  - tracks/java/exercises/difference-of-squares/build.gradle
4416
4461
  - tracks/java/exercises/difference-of-squares/src/example/java/DifferenceOfSquaresCalculator.java
4417
- - tracks/java/exercises/difference-of-squares/src/main/java/DifferenceOfSquaresCalculator.java
4462
+ - tracks/java/exercises/difference-of-squares/src/main/java/.keep
4418
4463
  - tracks/java/exercises/difference-of-squares/src/test/java/DifferenceOfSquaresCalculatorTest.java
4419
4464
  - tracks/java/exercises/etl/build.gradle
4420
4465
  - tracks/java/exercises/etl/src/example/java/Etl.java
@@ -4932,7 +4977,7 @@ files:
4932
4977
  - tracks/kotlin/.travis.yml
4933
4978
  - tracks/kotlin/LICENSE
4934
4979
  - tracks/kotlin/README.md
4935
- - tracks/kotlin/SETUP.md
4980
+ - tracks/kotlin/TRACK_HINTS.md
4936
4981
  - tracks/kotlin/bin/fetch-configlet
4937
4982
  - tracks/kotlin/bin/journey-test.sh
4938
4983
  - tracks/kotlin/bin/unit-tests.sh
@@ -5894,7 +5939,6 @@ files:
5894
5939
  - tracks/ocaml/.gitignore
5895
5940
  - tracks/ocaml/.travis-ci.sh
5896
5941
  - tracks/ocaml/.travis.yml
5897
- - tracks/ocaml/.vscode/launch.json
5898
5942
  - tracks/ocaml/LICENSE
5899
5943
  - tracks/ocaml/Makefile
5900
5944
  - tracks/ocaml/README.md
@@ -5981,6 +6025,11 @@ files:
5981
6025
  - tracks/ocaml/exercises/etl/etl.mli
5982
6026
  - tracks/ocaml/exercises/etl/example.ml
5983
6027
  - tracks/ocaml/exercises/etl/test.ml
6028
+ - tracks/ocaml/exercises/forth/.merlin
6029
+ - tracks/ocaml/exercises/forth/Makefile
6030
+ - tracks/ocaml/exercises/forth/example.ml
6031
+ - tracks/ocaml/exercises/forth/forth.mli
6032
+ - tracks/ocaml/exercises/forth/test.ml
5984
6033
  - tracks/ocaml/exercises/grade-school/.merlin
5985
6034
  - tracks/ocaml/exercises/grade-school/Makefile
5986
6035
  - tracks/ocaml/exercises/grade-school/example.ml
@@ -6060,6 +6109,12 @@ files:
6060
6109
  - tracks/ocaml/exercises/raindrops/example.ml
6061
6110
  - tracks/ocaml/exercises/raindrops/raindrops.mli
6062
6111
  - tracks/ocaml/exercises/raindrops/test.ml
6112
+ - tracks/ocaml/exercises/react/.merlin
6113
+ - tracks/ocaml/exercises/react/HINT.md
6114
+ - tracks/ocaml/exercises/react/Makefile
6115
+ - tracks/ocaml/exercises/react/example.ml
6116
+ - tracks/ocaml/exercises/react/react.mli
6117
+ - tracks/ocaml/exercises/react/test.ml
6063
6118
  - tracks/ocaml/exercises/rna-transcription/.merlin
6064
6119
  - tracks/ocaml/exercises/rna-transcription/Makefile
6065
6120
  - tracks/ocaml/exercises/rna-transcription/example.ml
@@ -6140,6 +6195,7 @@ files:
6140
6195
  - tracks/ocaml/tools/test-generator/templates/difference-of-squares/template.ml
6141
6196
  - tracks/ocaml/tools/test-generator/templates/dominoes/template.ml
6142
6197
  - tracks/ocaml/tools/test-generator/templates/etl/template.ml
6198
+ - tracks/ocaml/tools/test-generator/templates/forth/template.ml
6143
6199
  - tracks/ocaml/tools/test-generator/templates/hamming/template.ml
6144
6200
  - tracks/ocaml/tools/test-generator/templates/hello-world/template.ml
6145
6201
  - tracks/ocaml/tools/test-generator/templates/leap/template.ml
@@ -6376,6 +6432,10 @@ files:
6376
6432
  - tracks/perl6/exercises/clock/Example.pm6
6377
6433
  - tracks/perl6/exercises/clock/clock.t
6378
6434
  - tracks/perl6/exercises/clock/example.yaml
6435
+ - tracks/perl6/exercises/flatten-array/Example.pm6
6436
+ - tracks/perl6/exercises/flatten-array/FlattenArray.pm6
6437
+ - tracks/perl6/exercises/flatten-array/example.yaml
6438
+ - tracks/perl6/exercises/flatten-array/flatten-array.t
6379
6439
  - tracks/perl6/exercises/grade-school/Example.pm6
6380
6440
  - tracks/perl6/exercises/grade-school/GradeSchool.pm6
6381
6441
  - tracks/perl6/exercises/grade-school/example.yaml
@@ -6979,6 +7039,9 @@ files:
6979
7039
  - tracks/python/exercises/prime-factors/example.py
6980
7040
  - tracks/python/exercises/prime-factors/prime_factors.py
6981
7041
  - tracks/python/exercises/prime-factors/prime_factors_test.py
7042
+ - tracks/python/exercises/protein-translation/example.py
7043
+ - tracks/python/exercises/protein-translation/protein_translation.py
7044
+ - tracks/python/exercises/protein-translation/protein_translation_test.py
6982
7045
  - tracks/python/exercises/proverb/example.py
6983
7046
  - tracks/python/exercises/proverb/proverb.py
6984
7047
  - tracks/python/exercises/proverb/proverb_test.py
@@ -7187,6 +7250,9 @@ files:
7187
7250
  - tracks/racket/exercises/accumulate/accumulate-test.rkt
7188
7251
  - tracks/racket/exercises/accumulate/accumulate.rkt
7189
7252
  - tracks/racket/exercises/accumulate/example.rkt
7253
+ - tracks/racket/exercises/acronym/acronym-test.rkt
7254
+ - tracks/racket/exercises/acronym/acronym.rkt
7255
+ - tracks/racket/exercises/acronym/example.rkt
7190
7256
  - tracks/racket/exercises/allergies/allergies-test.rkt
7191
7257
  - tracks/racket/exercises/allergies/example.rkt
7192
7258
  - tracks/racket/exercises/anagram/anagram-test.rkt
@@ -7210,6 +7276,9 @@ files:
7210
7276
  - tracks/racket/exercises/grep/example.rkt
7211
7277
  - tracks/racket/exercises/grep/grep-test.rkt
7212
7278
  - tracks/racket/exercises/grep/grep.rkt
7279
+ - tracks/racket/exercises/grep/iliad.txt
7280
+ - tracks/racket/exercises/grep/midsummer-night.txt
7281
+ - tracks/racket/exercises/grep/paradise-lost.txt
7213
7282
  - tracks/racket/exercises/hamming/example.rkt
7214
7283
  - tracks/racket/exercises/hamming/hamming-test.rkt
7215
7284
  - tracks/racket/exercises/hamming/hamming.rkt
@@ -9098,11 +9167,13 @@ files:
9098
9167
  - tracks/vimscript/.git
9099
9168
  - tracks/vimscript/.gitignore
9100
9169
  - tracks/vimscript/.travis.yml
9170
+ - tracks/vimscript/.vintrc.yaml
9101
9171
  - tracks/vimscript/LICENSE
9102
9172
  - tracks/vimscript/README.md
9103
9173
  - tracks/vimscript/TRACK_HINTS.md
9104
9174
  - tracks/vimscript/bin/ci
9105
9175
  - tracks/vimscript/bin/fetch-configlet
9176
+ - tracks/vimscript/bin/pre-push
9106
9177
  - tracks/vimscript/config.json
9107
9178
  - tracks/vimscript/docs/ABOUT.md
9108
9179
  - tracks/vimscript/docs/INSTALLATION.md
@@ -9110,6 +9181,9 @@ files:
9110
9181
  - tracks/vimscript/docs/RESOURCES.md
9111
9182
  - tracks/vimscript/docs/TESTS.md
9112
9183
  - tracks/vimscript/exercises/.keep
9184
+ - tracks/vimscript/exercises/allergies/allergies.vader
9185
+ - tracks/vimscript/exercises/allergies/allergies.vim
9186
+ - tracks/vimscript/exercises/allergies/example.vim
9113
9187
  - tracks/vimscript/exercises/anagram/anagram.vader
9114
9188
  - tracks/vimscript/exercises/anagram/anagram.vim
9115
9189
  - tracks/vimscript/exercises/anagram/example.vim
@@ -9150,6 +9224,7 @@ files:
9150
9224
  - tracks/vimscript/exercises/word-count/word_count.vader
9151
9225
  - tracks/vimscript/exercises/word-count/word_count.vim
9152
9226
  - tracks/vimscript/img/icon.png
9227
+ - tracks/vimscript/lib/generate.vim
9153
9228
  homepage: http://exercism.io
9154
9229
  licenses:
9155
9230
  - MIT