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.
- checksums.yaml +4 -4
- data/.gitmodules +3 -0
- data/CONTRIBUTING.md +5 -8
- data/README.md +7 -7
- data/common/CONTRIBUTING.md +0 -5
- data/common/exercises/accumulate/description.md +4 -1
- data/common/exercises/acronym/description.md +1 -1
- data/common/exercises/bank-account/description.md +2 -1
- data/common/exercises/book-store/description.md +2 -5
- data/common/exercises/bracket-push/description.md +2 -4
- data/common/exercises/change/description.md +2 -5
- data/common/exercises/circular-buffer/description.md +0 -2
- data/common/exercises/clock/description.md +0 -2
- data/common/exercises/collatz-conjecture/canonical-data.json +36 -0
- data/common/exercises/collatz-conjecture/description.md +25 -0
- data/common/exercises/collatz-conjecture/metadata.yml +4 -0
- data/common/exercises/counter/description.md +1 -2
- data/common/exercises/diamond/description.md +0 -4
- data/common/exercises/flatten-array/description.md +1 -1
- data/common/exercises/grade-school/description.md +2 -1
- data/common/exercises/grains/description.md +2 -1
- data/common/exercises/grep/description.md +3 -2
- data/common/exercises/kindergarten-garden/description.md +2 -1
- data/common/exercises/largest-series-product/description.md +2 -1
- data/common/exercises/matrix/description.md +2 -1
- data/common/exercises/nucleotide-codons/description.md +2 -1
- data/common/exercises/ocr-numbers/description.md +2 -1
- data/common/exercises/octal/description.md +3 -1
- data/common/exercises/pangram/description.md +2 -1
- data/common/exercises/perfect-numbers/description.md +2 -1
- data/common/exercises/poker/description.md +0 -2
- data/common/exercises/protein-translation/description.md +3 -2
- data/common/exercises/proverb/description.md +2 -1
- data/common/exercises/pythagorean-triplet/description.md +4 -2
- data/common/exercises/queen-attack/description.md +2 -1
- data/common/exercises/rectangles/description.md +1 -3
- data/common/exercises/rotational-cipher/description.md +0 -4
- data/common/exercises/scale-generator/description.md +0 -2
- data/common/exercises/secret-handshake/description.md +2 -2
- data/common/exercises/series/description.md +2 -1
- data/common/exercises/sieve/description.md +2 -1
- data/common/exercises/space-age/description.md +0 -2
- data/common/exercises/strain/description.md +4 -5
- data/common/exercises/sublist/description.md +3 -6
- data/common/exercises/sum-of-multiples/description.md +2 -1
- data/common/exercises/tournament/description.md +4 -3
- data/common/exercises/transpose/description.md +1 -3
- data/common/exercises/trinary/description.md +2 -1
- data/common/exercises/two-bucket/description.md +1 -3
- data/common/exercises/two-fer/canonical-data.json +24 -0
- data/common/exercises/two-fer/description.md +40 -0
- data/common/exercises/two-fer/metadata.yml +4 -0
- data/common/exercises/word-search/description.md +2 -4
- data/common/exercises/zebra-puzzle/description.md +1 -1
- data/lib/trackler.rb +10 -5
- data/lib/trackler/description.rb +2 -2
- data/lib/trackler/guaranteed_file.rb +15 -15
- data/lib/trackler/implementation.rb +5 -5
- data/lib/trackler/implementations.rb +2 -2
- data/lib/trackler/metadata.rb +2 -2
- data/lib/trackler/problem.rb +2 -96
- data/lib/trackler/problems.rb +3 -48
- data/lib/trackler/specification.rb +101 -0
- data/lib/trackler/specifications.rb +52 -0
- data/lib/trackler/track.rb +6 -4
- data/lib/trackler/version.rb +1 -1
- data/tracks/bash/LICENSE +21 -0
- data/tracks/bash/README.md +0 -5
- data/tracks/c/LICENSE +21 -0
- data/tracks/c/README.md +0 -5
- data/tracks/clojure/LICENSE +2 -2
- data/tracks/clojure/README.org +0 -5
- data/tracks/clojure/config.json +5 -0
- data/tracks/clojure/exercises/sublist/project.clj +4 -0
- data/tracks/clojure/exercises/sublist/src/example.clj +19 -0
- data/tracks/clojure/exercises/sublist/sublist.mustache +9 -0
- data/tracks/clojure/exercises/sublist/test/sublist_test.clj +40 -0
- data/tracks/cpp/LICENSE +2 -2
- data/tracks/cpp/README.md +0 -5
- data/tracks/csharp/LICENSE +2 -2
- data/tracks/csharp/README.md +0 -5
- data/tracks/delphi/LICENSE +2 -2
- data/tracks/delphi/README.md +0 -5
- data/tracks/ecmascript/LICENSE +2 -2
- data/tracks/ecmascript/README.md +0 -5
- data/tracks/elisp/.travis.yml +7 -3
- data/tracks/elisp/LICENSE +2 -2
- data/tracks/elisp/README.org +3 -6
- data/tracks/elisp/bin/test-examples +27 -0
- data/tracks/elisp/config.json +10 -0
- data/tracks/elisp/docs/LEARNING.org +0 -3
- data/tracks/elisp/exercises/grains/example.el +18 -0
- data/tracks/elisp/exercises/grains/grains-test.el +38 -0
- data/tracks/elisp/exercises/grains/grains.el +10 -0
- data/tracks/elisp/exercises/phone-number/example.el +34 -0
- data/tracks/elisp/exercises/phone-number/phone-number-test.el +43 -0
- data/tracks/elisp/exercises/phone-number/phone-number.el +9 -0
- data/tracks/elixir/LICENSE +2 -2
- data/tracks/elixir/README.md +0 -5
- data/tracks/elm/LICENSE +2 -2
- data/tracks/elm/README.md +0 -5
- data/tracks/erlang/LICENSE +2 -2
- data/tracks/erlang/README.md +0 -5
- data/tracks/erlang/SETUP.md +7 -0
- data/tracks/erlang/exercises/rotational-cipher/rebar.config +5 -5
- data/tracks/erlang/exercises/rotational-cipher/test/rotational_cipher_tests.erl +18 -18
- data/tracks/factor/LICENSE +2 -2
- data/tracks/fortran/.github/PULL_REQUEST_TEMPLATE.md +23 -0
- data/tracks/fortran/.gitignore +4 -0
- data/tracks/fortran/.travis.yml +17 -0
- data/tracks/fortran/LICENSE +21 -0
- data/tracks/fortran/Makefile +40 -0
- data/tracks/fortran/README.md +72 -0
- data/tracks/fortran/bin/fetch-configlet +32 -0
- data/tracks/fortran/config.json +32 -0
- data/tracks/{kotlin/SETUP.md → fortran/docs/ABOUT.md} +0 -0
- data/tracks/fortran/docs/INSTALLATION.md +0 -0
- data/tracks/fortran/docs/LEARNING.md +0 -0
- data/tracks/fortran/docs/RESOURCES.md +0 -0
- data/tracks/fortran/docs/TESTS.md +0 -0
- data/tracks/fortran/exercises/TRACK_HINTS.md +0 -0
- data/tracks/fortran/exercises/bob/bob.fun +114 -0
- data/tracks/fortran/exercises/bob/example.f90 +61 -0
- data/tracks/fortran/exercises/hello_world/example.f90 +9 -0
- data/tracks/fortran/exercises/hello_world/hello_world.fun +10 -0
- data/tracks/fortran/img/.keep +0 -0
- data/tracks/fsharp/LICENSE +2 -2
- data/tracks/fsharp/README.md +0 -5
- data/tracks/go/LICENSE +2 -2
- data/tracks/go/README.md +0 -5
- data/tracks/haskell/LICENSE +2 -2
- data/tracks/haskell/README.md +0 -5
- data/tracks/idris/LICENSE +2 -2
- data/tracks/idris/README.md +0 -5
- data/tracks/java/LICENSE +2 -2
- data/tracks/java/README.md +0 -7
- data/tracks/java/{SETUP.md → TRACK_HINTS.md} +0 -0
- data/tracks/java/config.json +5 -0
- data/tracks/java/exercises/_template/build.gradle +1 -0
- data/tracks/java/exercises/accumulate/build.gradle +1 -0
- data/tracks/java/exercises/acronym/build.gradle +1 -0
- data/tracks/java/exercises/all-your-base/build.gradle +1 -0
- data/tracks/java/exercises/allergies/build.gradle +1 -0
- data/tracks/java/exercises/anagram/build.gradle +1 -0
- data/tracks/java/exercises/atbash-cipher/build.gradle +1 -0
- data/tracks/java/exercises/beer-song/build.gradle +1 -0
- data/tracks/java/exercises/binary-search/build.gradle +1 -0
- data/tracks/java/exercises/binary/build.gradle +1 -0
- data/tracks/java/exercises/bob/build.gradle +1 -0
- data/tracks/java/exercises/book-store/build.gradle +1 -0
- data/tracks/java/exercises/bracket-push/build.gradle +1 -0
- data/tracks/java/exercises/change/build.gradle +1 -0
- data/tracks/java/exercises/clock/build.gradle +2 -1
- data/tracks/java/exercises/collatz-conjecture/build.gradle +18 -0
- data/tracks/java/exercises/collatz-conjecture/src/example/java/CollatzCalculator.java +19 -0
- data/tracks/java/exercises/collatz-conjecture/src/main/java/CollatzCalculator.java +7 -0
- data/tracks/java/exercises/collatz-conjecture/src/test/java/CollatzCalculatorTest.java +59 -0
- data/tracks/java/exercises/crypto-square/build.gradle +1 -0
- data/tracks/java/exercises/diamond/build.gradle +1 -0
- data/tracks/java/exercises/diamond/src/example/java/DiamondPrinter.java +4 -4
- data/tracks/java/exercises/diamond/src/test/java/DiamondPrinterTest.java +6 -2
- data/tracks/java/exercises/difference-of-squares/build.gradle +1 -0
- data/tracks/java/exercises/difference-of-squares/src/main/java/.keep +0 -0
- data/tracks/java/exercises/etl/build.gradle +1 -0
- data/tracks/java/exercises/flatten-array/build.gradle +1 -0
- data/tracks/java/exercises/gigasecond/build.gradle +1 -0
- data/tracks/java/exercises/grade-school/build.gradle +1 -0
- data/tracks/java/exercises/hamming/build.gradle +1 -0
- data/tracks/java/exercises/hexadecimal/build.gradle +1 -0
- data/tracks/java/exercises/isogram/build.gradle +1 -0
- data/tracks/java/exercises/kindergarten-garden/build.gradle +1 -0
- data/tracks/java/exercises/largest-series-product/build.gradle +1 -0
- data/tracks/java/exercises/linked-list/build.gradle +1 -0
- data/tracks/java/exercises/luhn/build.gradle +1 -0
- data/tracks/java/exercises/matrix/build.gradle +2 -1
- data/tracks/java/exercises/meetup/build.gradle +1 -0
- data/tracks/java/exercises/minesweeper/build.gradle +1 -0
- data/tracks/java/exercises/nth-prime/build.gradle +1 -0
- data/tracks/java/exercises/ocr-numbers/build.gradle +1 -0
- data/tracks/java/exercises/octal/build.gradle +1 -0
- data/tracks/java/exercises/pangram/build.gradle +1 -0
- data/tracks/java/exercises/pascals-triangle/build.gradle +1 -0
- data/tracks/java/exercises/perfect-numbers/build.gradle +1 -0
- data/tracks/java/exercises/phone-number/build.gradle +1 -0
- data/tracks/java/exercises/pig-latin/build.gradle +1 -0
- data/tracks/java/exercises/queen-attack/build.gradle +1 -0
- data/tracks/java/exercises/raindrops/build.gradle +1 -0
- data/tracks/java/exercises/rectangles/build.gradle +1 -0
- data/tracks/java/exercises/rna-transcription/build.gradle +1 -0
- data/tracks/java/exercises/robot-simulator/build.gradle +1 -0
- data/tracks/java/exercises/roman-numerals/build.gradle +1 -0
- data/tracks/java/exercises/run-length-encoding/build.gradle +1 -0
- data/tracks/java/exercises/saddle-points/build.gradle +1 -0
- data/tracks/java/exercises/scrabble-score/build.gradle +1 -0
- data/tracks/java/exercises/secret-handshake/build.gradle +1 -0
- data/tracks/java/exercises/series/build.gradle +1 -0
- data/tracks/java/exercises/settings.gradle +1 -0
- data/tracks/java/exercises/sieve/build.gradle +1 -0
- data/tracks/java/exercises/simple-cipher/build.gradle +1 -0
- data/tracks/java/exercises/simple-linked-list/build.gradle +1 -0
- data/tracks/java/exercises/space-age/build.gradle +1 -0
- data/tracks/java/exercises/strain/build.gradle +1 -0
- data/tracks/java/exercises/sublist/build.gradle +1 -0
- data/tracks/java/exercises/sum-of-multiples/build.gradle +1 -0
- data/tracks/java/exercises/triangle/build.gradle +1 -0
- data/tracks/java/exercises/trinary/build.gradle +1 -0
- data/tracks/java/exercises/twelve-days/build.gradle +2 -1
- data/tracks/java/exercises/word-count/build.gradle +1 -0
- data/tracks/java/exercises/wordy/build.gradle +1 -0
- data/tracks/javascript/LICENSE +2 -2
- data/tracks/javascript/README.md +0 -5
- data/tracks/julia/LICENSE +2 -2
- data/tracks/kotlin/LICENSE +2 -2
- data/tracks/kotlin/README.md +0 -7
- data/tracks/kotlin/TRACK_HINTS.md +1 -0
- data/tracks/kotlin/exercises/phone-number/src/example/kotlin/PhoneNumber.kt +1 -1
- data/tracks/kotlin/exercises/phone-number/src/test/kotlin/PhoneNumberTest.kt +7 -8
- data/tracks/kotlin/exercises/rna-transcription/src/test/kotlin/RnaTranscriptionTest.kt +6 -6
- data/tracks/lfe/LICENSE +2 -2
- data/tracks/lfe/README.md +0 -5
- data/tracks/lisp/LICENSE +2 -2
- data/tracks/lisp/README.md +0 -5
- data/tracks/lua/LICENSE +2 -2
- data/tracks/lua/README.md +0 -5
- data/tracks/mips/LICENSE +2 -2
- data/tracks/mips/README.md +0 -5
- data/tracks/objective-c/LICENSE +2 -2
- data/tracks/objective-c/README.md +0 -5
- data/tracks/ocaml/LICENSE +2 -2
- data/tracks/ocaml/README.md +0 -5
- data/tracks/ocaml/config.json +54 -25
- data/tracks/ocaml/exercises/forth/.merlin +5 -0
- data/tracks/ocaml/exercises/forth/Makefile +11 -0
- data/tracks/ocaml/exercises/forth/example.ml +89 -0
- data/tracks/ocaml/exercises/forth/forth.mli +1 -0
- data/tracks/ocaml/exercises/forth/test.ml +147 -0
- data/tracks/ocaml/exercises/react/.merlin +5 -0
- data/tracks/ocaml/exercises/react/HINT.md +3 -0
- data/tracks/ocaml/exercises/react/Makefile +11 -0
- data/tracks/ocaml/exercises/react/example.ml +106 -0
- data/tracks/ocaml/exercises/react/react.mli +26 -0
- data/tracks/ocaml/exercises/react/test.ml +157 -0
- data/tracks/ocaml/tools/test-generator/src/special_cases.ml +5 -2
- data/tracks/ocaml/tools/test-generator/templates/forth/template.ml +114 -0
- data/tracks/perl5/LICENSE +2 -2
- data/tracks/perl6/LICENSE +2 -2
- data/tracks/perl6/README.md +0 -5
- data/tracks/perl6/config.json +5 -0
- data/tracks/perl6/exercises/clock/Example.pm6 +2 -2
- data/tracks/perl6/exercises/flatten-array/Example.pm6 +13 -0
- data/tracks/perl6/exercises/flatten-array/FlattenArray.pm6 +4 -0
- data/tracks/perl6/exercises/flatten-array/example.yaml +6 -0
- data/tracks/perl6/exercises/flatten-array/flatten-array.t +80 -0
- data/tracks/php/LICENSE +2 -2
- data/tracks/php/README.md +0 -5
- data/tracks/powershell/.travis.yml +1 -0
- data/tracks/python/LICENSE +2 -2
- data/tracks/python/README.md +0 -5
- data/tracks/python/config.json +8 -0
- data/tracks/python/exercises/protein-translation/example.py +25 -0
- data/tracks/python/exercises/protein-translation/protein_translation.py +6 -0
- data/tracks/python/exercises/protein-translation/protein_translation_test.py +59 -0
- data/tracks/r/LICENSE +2 -2
- data/tracks/r/README.md +0 -5
- data/tracks/racket/LICENSE +2 -2
- data/tracks/racket/README.md +0 -5
- data/tracks/racket/config.json +5 -0
- data/tracks/racket/exercises/acronym/acronym-test.rkt +40 -0
- data/tracks/racket/exercises/acronym/acronym.rkt +3 -0
- data/tracks/racket/exercises/acronym/example.rkt +25 -0
- data/tracks/racket/exercises/grep/example.rkt +60 -26
- data/tracks/racket/exercises/grep/grep-test.rkt +154 -17
- data/tracks/racket/exercises/grep/grep.rkt +1 -18
- data/tracks/racket/exercises/grep/iliad.txt +9 -0
- data/tracks/racket/exercises/grep/midsummer-night.txt +7 -0
- data/tracks/racket/exercises/grep/paradise-lost.txt +8 -0
- data/tracks/ruby/README.md +4 -1
- data/tracks/ruby/exercises/acronym/.meta/.version +1 -1
- data/tracks/ruby/exercises/acronym/.meta/solutions/acronym.rb +1 -1
- data/tracks/ruby/exercises/acronym/acronym_test.rb +2 -7
- data/tracks/ruby/exercises/anagram/.meta/generator/anagram_case.rb +1 -1
- data/tracks/ruby/exercises/beer-song/.meta/generator/beer_song_case.rb +1 -1
- data/tracks/ruby/exercises/clock/.meta/generator/clock_case.rb +1 -1
- data/tracks/ruby/exercises/connect/.meta/generator/connect_case.rb +0 -3
- data/tracks/ruby/exercises/connect/.meta/generator/test_template.erb +1 -1
- data/tracks/ruby/exercises/difference-of-squares/.meta/.version +1 -1
- data/tracks/ruby/exercises/difference-of-squares/.meta/solutions/difference_of_squares.rb +1 -1
- data/tracks/ruby/exercises/difference-of-squares/difference_of_squares_test.rb +12 -17
- data/tracks/ruby/exercises/triangle/.meta/generator/triangle_case.rb +10 -2
- data/tracks/ruby/exercises/triangle/triangle_test.rb +17 -17
- data/tracks/ruby/exercises/wordy/.meta/generator/wordy_case.rb +1 -1
- data/tracks/ruby/lib/generator/case_values.rb +1 -1
- data/tracks/ruby/lib/generator/exercise_case.rb +16 -2
- data/tracks/ruby/lib/generator/exercise_case/assertion.rb +4 -4
- data/tracks/ruby/test/fixtures/xruby/exercises/alpha/.meta/generator/alpha_case.rb +1 -1
- data/tracks/ruby/test/generator/case_values_test.rb +28 -7
- data/tracks/ruby/test/generator/exercise_case/assertion_test.rb +7 -7
- data/tracks/ruby/test/generator/exercise_case_test.rb +21 -25
- data/tracks/ruby/test/wordy_cases_test.rb +4 -4
- data/tracks/rust/LICENSE +2 -2
- data/tracks/rust/README.md +0 -5
- data/tracks/rust/config.json +1 -0
- data/tracks/rust/exercises/etl/Cargo.toml +1 -1
- data/tracks/rust/exercises/etl/example.rs +2 -2
- data/tracks/rust/exercises/etl/tests/etl.rs +26 -32
- data/tracks/rust/exercises/forth/tests/forth.rs +20 -22
- data/tracks/rust/exercises/minesweeper/Cargo.toml +1 -1
- data/tracks/rust/exercises/minesweeper/example.rs +3 -0
- data/tracks/rust/exercises/minesweeper/tests/minesweeper.rs +44 -46
- data/tracks/rust/exercises/raindrops/Cargo.toml +1 -1
- data/tracks/rust/exercises/raindrops/tests/raindrops.rs +12 -0
- data/tracks/rust/exercises/rna-transcription/Cargo.toml +1 -1
- data/tracks/rust/exercises/rna-transcription/example.rs +13 -9
- data/tracks/rust/exercises/rna-transcription/tests/rna-transcription.rs +23 -5
- data/tracks/scala/LICENSE +2 -2
- data/tracks/scala/README.md +0 -5
- data/tracks/scheme/LICENSE +2 -2
- data/tracks/scheme/README.org +0 -6
- data/tracks/swift/Dangerfile +1 -1
- data/tracks/swift/LICENSE +2 -2
- data/tracks/swift/README.md +0 -6
- data/tracks/vbnet/.travis.yml +1 -0
- data/tracks/vimscript/.travis.yml +4 -0
- data/tracks/vimscript/.vintrc.yaml +5 -0
- data/tracks/vimscript/TRACK_HINTS.md +19 -1
- data/tracks/vimscript/bin/pre-push +18 -0
- data/tracks/vimscript/config.json +8 -1
- data/tracks/vimscript/docs/ABOUT.md +7 -6
- data/tracks/vimscript/docs/TESTS.md +4 -4
- data/tracks/vimscript/exercises/allergies/allergies.vader +68 -0
- data/tracks/vimscript/exercises/allergies/allergies.vim +29 -0
- data/tracks/vimscript/exercises/allergies/example.vim +23 -0
- data/tracks/vimscript/lib/generate.vim +89 -0
- metadata +81 -6
- data/tracks/java/exercises/difference-of-squares/src/main/java/DifferenceOfSquaresCalculator.java +0 -15
- 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
|
-
"
|
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
|
15
|
-
have to choose the region to act upon. E.g. `dw`
|
16
|
-
current word. `dd` deletes the current
|
17
|
-
double quote, you can use `ci"` to
|
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
|
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.
|
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-
|
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/
|
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
|
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/
|
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
|