trackler 2.2.1.103 → 2.2.1.104
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/problem-specifications/exercises/all-your-base/canonical-data.json +43 -43
- data/tracks/bash/.github/PULL_REQUEST_TEMPLATE.md +10 -0
- data/tracks/cfml/tasks/exercise_template/.meta/hints.md +1 -0
- data/tracks/csharp/config/exercise_readme.go.tmpl +4 -4
- data/tracks/csharp/exercises/accumulate/README.md +1 -5
- data/tracks/csharp/exercises/acronym/README.md +1 -3
- data/tracks/csharp/exercises/all-your-base/README.md +2 -4
- data/tracks/csharp/exercises/allergies/README.md +1 -3
- data/tracks/csharp/exercises/alphametics/README.md +3 -5
- data/tracks/csharp/exercises/anagram/README.md +1 -2
- data/tracks/csharp/exercises/armstrong-numbers/README.md +14 -1
- data/tracks/csharp/exercises/atbash-cipher/README.md +3 -3
- data/tracks/csharp/exercises/bank-account/README.md +1 -3
- data/tracks/csharp/exercises/beer-song/README.md +3 -4
- data/tracks/csharp/exercises/binary-search-tree/README.md +1 -2
- data/tracks/csharp/exercises/binary-search/README.md +1 -2
- data/tracks/csharp/exercises/binary/README.md +3 -2
- data/tracks/csharp/exercises/bob/README.md +3 -3
- data/tracks/csharp/exercises/book-store/README.md +6 -7
- data/tracks/csharp/exercises/bowling/README.md +21 -8
- data/tracks/csharp/exercises/bracket-push/README.md +1 -2
- data/tracks/csharp/exercises/change/README.md +2 -3
- data/tracks/csharp/exercises/circular-buffer/README.md +14 -8
- data/tracks/csharp/exercises/clock/README.md +1 -2
- data/tracks/csharp/exercises/collatz-conjecture/README.md +4 -4
- data/tracks/csharp/exercises/complex-numbers/README.md +1 -2
- data/tracks/csharp/exercises/connect/README.md +2 -4
- data/tracks/csharp/exercises/crypto-square/README.md +11 -10
- data/tracks/csharp/exercises/custom-set/README.md +1 -3
- data/tracks/csharp/exercises/diamond/README.md +10 -9
- data/tracks/csharp/exercises/difference-of-squares/README.md +1 -2
- data/tracks/csharp/exercises/diffie-hellman/README.md +1 -2
- data/tracks/csharp/exercises/dominoes/README.md +10 -3
- data/tracks/csharp/exercises/dot-dsl/README.md +2 -4
- data/tracks/csharp/exercises/error-handling/README.md +1 -3
- data/tracks/csharp/exercises/etl/README.md +4 -3
- data/tracks/csharp/exercises/flatten-array/README.md +2 -4
- data/tracks/csharp/exercises/food-chain/README.md +2 -3
- data/tracks/csharp/exercises/forth/README.md +1 -3
- data/tracks/csharp/exercises/gigasecond/README.md +1 -2
- data/tracks/csharp/exercises/go-counting/README.md +2 -4
- data/tracks/csharp/exercises/grade-school/README.md +1 -3
- data/tracks/csharp/exercises/grains/README.md +1 -3
- data/tracks/csharp/exercises/grep/README.md +13 -14
- data/tracks/csharp/exercises/hamming/README.md +1 -2
- data/tracks/csharp/exercises/hangman/README.md +1 -3
- data/tracks/csharp/exercises/hello-world/README.md +1 -2
- data/tracks/csharp/exercises/hexadecimal/README.md +1 -2
- data/tracks/csharp/exercises/house/README.md +3 -5
- data/tracks/csharp/exercises/isbn-verifier/README.md +34 -22
- data/tracks/csharp/exercises/isogram/README.md +3 -3
- data/tracks/csharp/exercises/kindergarten-garden/README.md +14 -15
- data/tracks/csharp/exercises/largest-series-product/README.md +1 -2
- data/tracks/csharp/exercises/leap/README.md +2 -3
- data/tracks/csharp/exercises/ledger/README.md +1 -3
- data/tracks/csharp/exercises/linked-list/README.md +11 -12
- data/tracks/csharp/exercises/list-ops/README.md +1 -3
- data/tracks/csharp/exercises/luhn/README.md +8 -9
- data/tracks/csharp/exercises/markdown/README.md +1 -3
- data/tracks/csharp/exercises/matrix/README.md +7 -6
- data/tracks/csharp/exercises/meetup/README.md +17 -15
- data/tracks/csharp/exercises/minesweeper/README.md +1 -3
- data/tracks/csharp/exercises/nth-prime/README.md +1 -2
- data/tracks/csharp/exercises/nucleotide-count/README.md +9 -24
- data/tracks/csharp/exercises/ocr-numbers/README.md +7 -8
- data/tracks/csharp/exercises/octal/README.md +7 -4
- data/tracks/csharp/exercises/palindrome-products/README.md +16 -18
- data/tracks/csharp/exercises/pangram/README.md +2 -3
- data/tracks/csharp/exercises/parallel-letter-frequency/README.md +1 -3
- data/tracks/csharp/exercises/pascals-triangle/README.md +3 -4
- data/tracks/csharp/exercises/perfect-numbers/README.md +3 -4
- data/tracks/csharp/exercises/phone-number/README.md +5 -5
- data/tracks/csharp/exercises/pig-latin/README.md +1 -2
- data/tracks/csharp/exercises/poker/README.md +1 -2
- data/tracks/csharp/exercises/pov/README.md +4 -7
- data/tracks/csharp/exercises/prime-factors/README.md +1 -2
- data/tracks/csharp/exercises/protein-translation/README.md +6 -8
- data/tracks/csharp/exercises/proverb/README.md +15 -11
- data/tracks/csharp/exercises/pythagorean-triplet/README.md +4 -5
- data/tracks/csharp/exercises/queen-attack/README.md +2 -3
- data/tracks/csharp/exercises/rail-fence-cipher/README.md +13 -9
- data/tracks/csharp/exercises/raindrops/README.md +1 -2
- data/tracks/csharp/exercises/react/README.md +1 -3
- data/tracks/csharp/exercises/rectangles/README.md +17 -19
- data/tracks/csharp/exercises/reverse-string/README.md +16 -1
- data/tracks/csharp/exercises/rna-transcription/README.md +3 -4
- data/tracks/csharp/exercises/robot-name/README.md +1 -2
- data/tracks/csharp/exercises/robot-simulator/README.md +1 -2
- data/tracks/csharp/exercises/roman-numerals/README.md +2 -3
- data/tracks/csharp/exercises/rotational-cipher/README.md +3 -3
- data/tracks/csharp/exercises/run-length-encoding/README.md +5 -6
- data/tracks/csharp/exercises/saddle-points/README.md +3 -4
- data/tracks/csharp/exercises/say/README.md +1 -2
- data/tracks/csharp/exercises/scale-generator/README.md +1 -4
- data/tracks/csharp/exercises/scrabble-score/README.md +4 -3
- data/tracks/csharp/exercises/secret-handshake/README.md +2 -3
- data/tracks/csharp/exercises/series/README.md +1 -2
- data/tracks/csharp/exercises/sgf-parsing/README.md +5 -7
- data/tracks/csharp/exercises/sieve/README.md +1 -2
- data/tracks/csharp/exercises/simple-cipher/README.md +6 -9
- data/tracks/csharp/exercises/simple-linked-list/README.md +1 -2
- data/tracks/csharp/exercises/space-age/README.md +2 -3
- data/tracks/csharp/exercises/spiral-matrix/README.md +7 -8
- data/tracks/csharp/exercises/strain/README.md +1 -2
- data/tracks/csharp/exercises/sublist/README.md +1 -3
- data/tracks/csharp/exercises/sum-of-multiples/README.md +4 -8
- data/tracks/csharp/exercises/tournament/README.md +6 -8
- data/tracks/csharp/exercises/transpose/README.md +8 -9
- data/tracks/csharp/exercises/tree-building/README.md +4 -6
- data/tracks/csharp/exercises/triangle/README.md +10 -8
- data/tracks/csharp/exercises/trinary/README.md +2 -3
- data/tracks/csharp/exercises/twelve-days/README.md +2 -3
- data/tracks/csharp/exercises/two-bucket/README.md +11 -12
- data/tracks/csharp/exercises/two-fer/README.md +8 -9
- data/tracks/csharp/exercises/variable-length-quantity/README.md +7 -9
- data/tracks/csharp/exercises/word-count/README.md +2 -4
- data/tracks/csharp/exercises/word-search/README.md +2 -4
- data/tracks/csharp/exercises/wordy/README.md +1 -7
- data/tracks/csharp/exercises/zebra-puzzle/README.md +1 -2
- data/tracks/csharp/exercises/zipper/README.md +2 -4
- data/tracks/dart/config.json +2 -2
- data/tracks/go/config/exercise_readme.go.tmpl +17 -4
- data/tracks/go/exercises/acronym/README.md +0 -1
- data/tracks/go/exercises/all-your-base/README.md +0 -1
- data/tracks/go/exercises/allergies/README.md +0 -1
- data/tracks/go/exercises/alphametics/README.md +0 -1
- data/tracks/go/exercises/atbash-cipher/README.md +2 -1
- data/tracks/go/exercises/bank-account/README.md +0 -1
- data/tracks/go/exercises/beer-song/README.md +2 -2
- data/tracks/go/exercises/binary/README.md +2 -0
- data/tracks/go/exercises/bowling/README.md +20 -6
- data/tracks/go/exercises/change/README.md +1 -1
- data/tracks/go/exercises/circular-buffer/README.md +13 -6
- data/tracks/go/exercises/collatz-conjecture/README.md +1 -1
- data/tracks/go/exercises/connect/README.md +1 -2
- data/tracks/go/exercises/counter/README.md +0 -1
- data/tracks/go/exercises/crypto-square/README.md +10 -8
- data/tracks/go/exercises/custom-set/README.md +0 -1
- data/tracks/go/exercises/diamond/README.md +6 -6
- data/tracks/go/exercises/dominoes/README.md +0 -1
- data/tracks/go/exercises/error-handling/README.md +0 -1
- data/tracks/go/exercises/etl/README.md +3 -1
- data/tracks/go/exercises/food-chain/README.md +1 -1
- data/tracks/go/exercises/forth/README.md +0 -1
- data/tracks/go/exercises/grade-school/README.md +0 -1
- data/tracks/go/exercises/grains/README.md +0 -1
- data/tracks/go/exercises/house/README.md +2 -3
- data/tracks/go/exercises/isbn-verifier/README.md +26 -21
- data/tracks/go/exercises/isogram/README.md +2 -1
- data/tracks/go/exercises/kindergarten-garden/README.md +13 -13
- data/tracks/go/exercises/leap/README.md +1 -1
- data/tracks/go/exercises/ledger/README.md +0 -1
- data/tracks/go/exercises/luhn/README.md +7 -7
- data/tracks/go/exercises/matrix/README.md +6 -4
- data/tracks/go/exercises/meetup/README.md +16 -13
- data/tracks/go/exercises/minesweeper/README.md +0 -1
- data/tracks/go/exercises/nucleotide-count/README.md +25 -17
- data/tracks/go/exercises/ocr-numbers/README.md +6 -6
- data/tracks/go/exercises/octal/README.md +6 -2
- data/tracks/go/exercises/palindrome-products/README.md +15 -16
- data/tracks/go/exercises/pangram/README.md +1 -1
- data/tracks/go/exercises/parallel-letter-frequency/README.md +0 -1
- data/tracks/go/exercises/pascals-triangle/README.md +2 -2
- data/tracks/go/exercises/pov/README.md +3 -5
- data/tracks/go/exercises/protein-translation/README.md +5 -6
- data/tracks/go/exercises/pythagorean-triplet/README.md +3 -3
- data/tracks/go/exercises/queen-attack/README.md +1 -1
- data/tracks/go/exercises/react/README.md +0 -1
- data/tracks/go/exercises/reverse-string/README.md +1 -1
- data/tracks/go/exercises/rna-transcription/README.md +2 -2
- data/tracks/go/exercises/robot-name/README.md +15 -0
- data/tracks/go/exercises/roman-numerals/README.md +1 -1
- data/tracks/go/exercises/rotational-cipher/README.md +0 -1
- data/tracks/go/exercises/run-length-encoding/README.md +21 -4
- data/tracks/go/exercises/saddle-points/README.md +2 -2
- data/tracks/go/exercises/scrabble-score/README.md +3 -1
- data/tracks/go/exercises/secret-handshake/README.md +1 -1
- data/tracks/go/exercises/simple-linked-list/README.md +1 -2
- data/tracks/go/exercises/space-age/README.md +1 -2
- data/tracks/go/exercises/spiral-matrix/README.md +1 -1
- data/tracks/go/exercises/sublist/README.md +0 -1
- data/tracks/go/exercises/sum-of-multiples/README.md +3 -6
- data/tracks/go/exercises/tournament/README.md +5 -6
- data/tracks/go/exercises/transpose/README.md +7 -7
- data/tracks/go/exercises/tree-building/README.md +3 -4
- data/tracks/go/exercises/triangle/README.md +21 -6
- data/tracks/go/exercises/trinary/README.md +1 -1
- data/tracks/go/exercises/twelve-days/README.md +2 -3
- data/tracks/go/exercises/two-fer/README.md +2 -31
- data/tracks/go/exercises/variable-length-quantity/README.md +6 -7
- data/tracks/go/exercises/word-count/README.md +1 -2
- data/tracks/go/exercises/word-search/README.md +1 -2
- data/tracks/go/exercises/wordy/README.md +0 -5
- data/tracks/groovy/config.json +11 -0
- data/tracks/groovy/exercises/rotational-cipher/Example.groovy +38 -0
- data/tracks/groovy/exercises/rotational-cipher/README.md +49 -0
- data/tracks/groovy/exercises/rotational-cipher/RotationalCipher.groovy +11 -0
- data/tracks/groovy/exercises/rotational-cipher/RotationalCipherSpec.groovy +68 -0
- data/tracks/haskell/exercises/acronym/package.yaml +1 -1
- data/tracks/haskell/exercises/acronym/test/Tests.hs +2 -6
- data/tracks/haskell/exercises/anagram/package.yaml +1 -1
- data/tracks/haskell/exercises/anagram/test/Tests.hs +0 -20
- data/tracks/haskell/exercises/clock/package.yaml +1 -1
- data/tracks/haskell/exercises/clock/test/Tests.hs +16 -9
- data/tracks/haskell/exercises/complex-numbers/package.yaml +1 -1
- data/tracks/haskell/exercises/custom-set/package.yaml +1 -1
- data/tracks/haskell/exercises/hamming/package.yaml +1 -1
- data/tracks/haskell/exercises/kindergarten-garden/package.yaml +1 -1
- data/tracks/haskell/exercises/matrix/package.yaml +1 -1
- data/tracks/haskell/exercises/matrix/test/Tests.hs +25 -13
- data/tracks/haskell/exercises/ocr-numbers/package.yaml +1 -1
- data/tracks/haskell/exercises/prime-factors/package.yaml +1 -1
- data/tracks/haskell/exercises/queen-attack/package.yaml +1 -1
- data/tracks/haskell/exercises/rail-fence-cipher/package.yaml +1 -1
- data/tracks/haskell/exercises/raindrops/package.yaml +1 -1
- data/tracks/haskell/exercises/robot-simulator/package.yaml +1 -1
- data/tracks/haskell/exercises/roman-numerals/package.yaml +1 -1
- data/tracks/haskell/exercises/roman-numerals/test/Tests.hs +4 -0
- data/tracks/haskell/exercises/run-length-encoding/package.yaml +1 -1
- data/tracks/haskell/exercises/word-count/package.yaml +1 -1
- data/tracks/java/config.json +0 -1
- data/tracks/java/exercises/forth/README.md +1 -1
- data/tracks/objective-c/config/exercise_readme.go.tmpl +22 -4
- data/tracks/objective-c/exercises/acronym/README.md +8 -3
- data/tracks/objective-c/exercises/all-your-base/README.md +8 -3
- data/tracks/objective-c/exercises/allergies/README.md +8 -3
- data/tracks/objective-c/exercises/anagram/README.md +8 -2
- data/tracks/objective-c/exercises/atbash-cipher/README.md +10 -3
- data/tracks/objective-c/exercises/beer-song/README.md +10 -4
- data/tracks/objective-c/exercises/binary-search/README.md +8 -2
- data/tracks/objective-c/exercises/bob/.meta/description.md +10 -0
- data/tracks/objective-c/exercises/bob/README.md +8 -2
- data/tracks/objective-c/exercises/bracket-push/README.md +8 -2
- data/tracks/objective-c/exercises/clock/README.md +8 -2
- data/tracks/objective-c/exercises/collatz-conjecture/README.md +8 -2
- data/tracks/objective-c/exercises/crypto-square/README.md +18 -10
- data/tracks/objective-c/exercises/difference-of-squares/README.md +8 -2
- data/tracks/objective-c/exercises/etl/README.md +11 -3
- data/tracks/objective-c/exercises/flatten-array/README.md +9 -4
- data/tracks/objective-c/exercises/gigasecond/README.md +8 -2
- data/tracks/objective-c/exercises/grade-school/README.md +8 -3
- data/tracks/objective-c/exercises/grains/README.md +8 -2
- data/tracks/objective-c/exercises/hamming/README.md +8 -2
- data/tracks/objective-c/exercises/hello-world/README.md +8 -2
- data/tracks/objective-c/exercises/isogram/README.md +10 -3
- data/tracks/objective-c/exercises/largest-series-product/README.md +8 -2
- data/tracks/objective-c/exercises/leap/README.md +9 -3
- data/tracks/objective-c/exercises/luhn/README.md +15 -9
- data/tracks/objective-c/exercises/meetup/README.md +24 -15
- data/tracks/objective-c/exercises/nth-prime/README.md +8 -2
- data/tracks/objective-c/exercises/nucleotide-count/README.md +16 -24
- data/tracks/objective-c/exercises/pangram/README.md +9 -3
- data/tracks/objective-c/exercises/pascals-triangle/README.md +10 -4
- data/tracks/objective-c/exercises/perfect-numbers/README.md +10 -4
- data/tracks/objective-c/exercises/phone-number/README.md +12 -5
- data/tracks/objective-c/exercises/raindrops/README.md +8 -2
- data/tracks/objective-c/exercises/rna-transcription/README.md +10 -4
- data/tracks/objective-c/exercises/robot-name/README.md +8 -2
- data/tracks/objective-c/exercises/roman-numerals/README.md +9 -3
- data/tracks/objective-c/exercises/run-length-encoding/README.md +12 -6
- data/tracks/objective-c/exercises/say/README.md +8 -2
- data/tracks/objective-c/exercises/scrabble-score/README.md +11 -3
- data/tracks/objective-c/exercises/secret-handshake/README.md +10 -4
- data/tracks/objective-c/exercises/sieve/README.md +8 -2
- data/tracks/objective-c/exercises/space-age/README.md +9 -3
- data/tracks/objective-c/exercises/sublist/README.md +7 -2
- data/tracks/objective-c/exercises/sum-of-multiples/README.md +11 -8
- data/tracks/objective-c/exercises/transpose/README.md +15 -9
- data/tracks/objective-c/exercises/triangle/README.md +17 -8
- data/tracks/objective-c/exercises/two-fer/README.md +8 -2
- data/tracks/objective-c/exercises/word-count/README.md +9 -4
- data/tracks/php/.travis.yml +1 -1
- data/tracks/php/config/exercise_readme.go.tmpl +20 -4
- data/tracks/php/exercises/accumulate/README.md +9 -6
- data/tracks/php/exercises/acronym/README.md +9 -4
- data/tracks/php/exercises/all-your-base/README.md +35 -11
- data/tracks/php/exercises/allergies/README.md +9 -4
- data/tracks/php/exercises/anagram/README.md +10 -4
- data/tracks/php/exercises/atbash-cipher/README.md +12 -5
- data/tracks/php/exercises/beer-song/README.md +12 -6
- data/tracks/php/exercises/binary-search/README.md +10 -4
- data/tracks/php/exercises/binary/README.md +12 -4
- data/tracks/php/exercises/bob/.meta/description.md +10 -0
- data/tracks/php/exercises/bob/README.md +10 -4
- data/tracks/php/exercises/book-store/README.md +15 -9
- data/tracks/php/exercises/bowling/README.md +30 -10
- data/tracks/php/exercises/bracket-push/README.md +10 -4
- data/tracks/php/exercises/change/README.md +11 -5
- data/tracks/php/exercises/clock/README.md +10 -4
- data/tracks/php/exercises/collatz-conjecture/README.md +10 -4
- data/tracks/php/exercises/connect/README.md +11 -6
- data/tracks/php/exercises/crypto-square/README.md +10 -4
- data/tracks/php/exercises/difference-of-squares/README.md +10 -4
- data/tracks/php/exercises/etl/README.md +13 -5
- data/tracks/php/exercises/flatten-array/README.md +10 -4
- data/tracks/php/exercises/gigasecond/README.md +10 -4
- data/tracks/php/exercises/grade-school/README.md +10 -5
- data/tracks/php/exercises/grains/README.md +10 -5
- data/tracks/php/exercises/hamming/README.md +10 -4
- data/tracks/php/exercises/hello-world/README.md +10 -4
- data/tracks/php/exercises/isogram/README.md +12 -5
- data/tracks/php/exercises/largest-series-product/README.md +10 -4
- data/tracks/php/exercises/leap/README.md +11 -5
- data/tracks/php/exercises/luhn/README.md +17 -11
- data/tracks/php/exercises/markdown/README.md +10 -5
- data/tracks/php/exercises/meetup/README.md +45 -12
- data/tracks/php/exercises/meetup/example.php +0 -2
- data/tracks/php/exercises/meetup/meetup_test.php +0 -2
- data/tracks/php/exercises/minesweeper/README.md +10 -5
- data/tracks/php/exercises/nth-prime/README.md +10 -4
- data/tracks/php/exercises/nucleotide-count/README.md +15 -23
- data/tracks/php/exercises/ocr-numbers/README.md +16 -10
- data/tracks/php/exercises/pangram/README.md +11 -5
- data/tracks/php/exercises/pascals-triangle/README.md +12 -6
- data/tracks/php/exercises/perfect-numbers/README.md +12 -6
- data/tracks/php/exercises/phone-number/README.md +14 -7
- data/tracks/php/exercises/pig-latin/README.md +10 -4
- data/tracks/php/exercises/prime-factors/README.md +10 -4
- data/tracks/php/exercises/queen-attack/README.md +11 -5
- data/tracks/php/exercises/rail-fence-cipher/README.md +10 -4
- data/tracks/php/exercises/raindrops/README.md +10 -4
- data/tracks/php/exercises/rna-transcription/README.md +11 -5
- data/tracks/php/exercises/robot-name/README.md +10 -4
- data/tracks/php/exercises/robot-simulator/README.md +10 -4
- data/tracks/php/exercises/roman-numerals/README.md +11 -5
- data/tracks/php/exercises/run-length-encoding/README.md +13 -4
- data/tracks/php/exercises/scrabble-score/README.md +13 -5
- data/tracks/php/exercises/series/README.md +27 -0
- data/tracks/php/exercises/series/example.php +0 -2
- data/tracks/php/exercises/series/series_test.php +0 -1
- data/tracks/php/exercises/sieve/README.md +10 -4
- data/tracks/php/exercises/space-age/README.md +11 -5
- data/tracks/php/exercises/sum-of-multiples/README.md +12 -9
- data/tracks/php/exercises/transpose/README.md +10 -4
- data/tracks/php/exercises/triangle/README.md +19 -10
- data/tracks/php/exercises/trinary/README.md +11 -5
- data/tracks/php/exercises/variable-length-quantity/README.md +16 -11
- data/tracks/php/exercises/word-count/README.md +10 -5
- data/tracks/php/exercises/wordy/README.md +9 -8
- data/tracks/rust/config/exercise_readme.go.tmpl +32 -4
- data/tracks/rust/exercises/all-your-base/README.md +0 -1
- data/tracks/rust/exercises/alphametics/README.md +0 -1
- data/tracks/rust/exercises/custom-set/README.md +0 -1
- data/tracks/rust/exercises/dominoes/README.md +0 -1
- data/tracks/rust/exercises/forth/README.md +0 -1
- data/tracks/rust/exercises/isbn-verifier/README.md +1 -1
- data/tracks/rust/exercises/minesweeper/README.md +0 -1
- data/tracks/rust/exercises/nucleotide-codons/README.md +0 -1
- data/tracks/rust/exercises/parallel-letter-frequency/README.md +0 -1
- data/tracks/rust/exercises/protein-translation/README.md +2 -2
- data/tracks/rust/exercises/react/README.md +0 -1
- data/tracks/rust/exercises/rectangles/README.md +0 -1
- data/tracks/rust/exercises/reverse-string/README.md +1 -1
- data/tracks/rust/exercises/rna-transcription/.meta/hints.md +9 -0
- data/tracks/rust/exercises/rna-transcription/README.md +12 -1
- data/tracks/rust/exercises/rna-transcription/example.rs +66 -27
- data/tracks/rust/exercises/rna-transcription/tests/rna-transcription.rs +52 -19
- data/tracks/rust/exercises/sublist/README.md +0 -1
- data/tracks/rust/exercises/tournament/README.md +0 -1
- data/tracks/swift/config/exercise_readme.go.tmpl +7 -4
- data/tracks/swift/exercises/accumulate/README.md +0 -3
- data/tracks/swift/exercises/acronym/README.md +0 -1
- data/tracks/swift/exercises/all-your-base/README.md +1 -2
- data/tracks/swift/exercises/allergies/README.md +0 -1
- data/tracks/swift/exercises/atbash-cipher/README.md +2 -1
- data/tracks/swift/exercises/beer-song/README.md +2 -2
- data/tracks/swift/exercises/binary/README.md +2 -0
- data/tracks/swift/exercises/bob/.meta/description.md +10 -0
- data/tracks/swift/exercises/bowling/README.md +20 -6
- data/tracks/swift/exercises/circular-buffer/README.md +21 -13
- data/tracks/swift/exercises/collatz-conjecture/README.md +1 -1
- data/tracks/swift/exercises/crypto-square/README.md +10 -8
- data/tracks/swift/exercises/custom-set/README.md +0 -1
- data/tracks/swift/exercises/diamond/README.md +3 -0
- data/tracks/swift/exercises/dominoes/README.md +3 -4
- data/tracks/swift/exercises/etl/README.md +3 -1
- data/tracks/swift/exercises/flatten-array/README.md +1 -2
- data/tracks/swift/exercises/food-chain/README.md +1 -1
- data/tracks/swift/exercises/grade-school/README.md +0 -1
- data/tracks/swift/exercises/grains/README.md +0 -1
- data/tracks/swift/exercises/house/README.md +2 -3
- data/tracks/swift/exercises/isbn-verifier/README.md +32 -16
- data/tracks/swift/exercises/isogram/README.md +2 -1
- data/tracks/swift/exercises/kindergarten-garden/README.md +13 -13
- data/tracks/swift/exercises/leap/README.md +1 -1
- data/tracks/swift/exercises/linked-list/README.md +10 -10
- data/tracks/swift/exercises/list-ops/README.md +1 -0
- data/tracks/swift/exercises/luhn/README.md +7 -7
- data/tracks/swift/exercises/matrix/README.md +6 -4
- data/tracks/swift/exercises/meetup/README.md +16 -13
- data/tracks/swift/exercises/minesweeper/README.md +0 -1
- data/tracks/swift/exercises/nucleotide-count/README.md +8 -22
- data/tracks/swift/exercises/ocr-numbers/README.md +6 -6
- data/tracks/swift/exercises/octal/README.md +6 -2
- data/tracks/swift/exercises/palindrome-products/README.md +15 -16
- data/tracks/swift/exercises/pangram/README.md +1 -1
- data/tracks/swift/exercises/pascals-triangle/README.md +2 -2
- data/tracks/swift/exercises/perfect-numbers/README.md +2 -2
- data/tracks/swift/exercises/phone-number/README.md +4 -3
- data/tracks/swift/exercises/protein-translation/README.md +4 -4
- data/tracks/swift/exercises/pythagorean-triplet/README.md +3 -3
- data/tracks/swift/exercises/queen-attack/README.md +1 -1
- data/tracks/swift/exercises/rna-transcription/README.md +2 -2
- data/tracks/swift/exercises/roman-numerals/README.md +1 -1
- data/tracks/swift/exercises/run-length-encoding/README.md +4 -4
- data/tracks/swift/exercises/saddle-points/README.md +2 -2
- data/tracks/swift/exercises/say/README.md +1 -1
- data/tracks/swift/exercises/scrabble-score/README.md +3 -1
- data/tracks/swift/exercises/secret-handshake/README.md +2 -2
- data/tracks/swift/exercises/simple-cipher/README.md +5 -7
- data/tracks/swift/exercises/space-age/README.md +1 -1
- data/tracks/swift/exercises/sublist/README.md +0 -1
- data/tracks/swift/exercises/sum-of-multiples/README.md +3 -6
- data/tracks/swift/exercises/tournament/README.md +5 -6
- data/tracks/swift/exercises/transpose/README.md +7 -7
- data/tracks/swift/exercises/triangle/README.md +9 -6
- data/tracks/swift/exercises/trinary/README.md +1 -1
- data/tracks/swift/exercises/twelve-days/README.md +1 -1
- data/tracks/swift/exercises/two-fer/README.md +2 -29
- data/tracks/swift/exercises/word-count/README.md +1 -2
- data/tracks/swift/exercises/wordy/README.md +0 -5
- metadata +12 -10
- data/tracks/cfml/tasks/exercise_template/.meta/HINTS.md +0 -0
- data/tracks/csharp/docs/EXERCISE_README_INSERT.md +0 -5
- data/tracks/go/docs/EXERCISE_README_INSERT.md +0 -16
- data/tracks/java/exercises/forth/.meta/readme.go.tmpl +0 -17
- data/tracks/objective-c/docs/EXERCISE_README_INSERT.md +0 -15
- data/tracks/php/docs/EXERCISE_README_INSERT.md +0 -13
- data/tracks/rust/config/exercise-readme-insert.md +0 -31
- data/tracks/swift/docs/EXERCISE_README_INSERT.md +0 -6
@@ -4,14 +4,14 @@ Given an input text output it transposed.
|
|
4
4
|
|
5
5
|
Roughly explained, the transpose of a matrix:
|
6
6
|
|
7
|
-
```
|
7
|
+
```text
|
8
8
|
ABC
|
9
9
|
DEF
|
10
10
|
```
|
11
11
|
|
12
12
|
is given by:
|
13
13
|
|
14
|
-
```
|
14
|
+
```text
|
15
15
|
AD
|
16
16
|
BE
|
17
17
|
CF
|
@@ -26,14 +26,14 @@ If the input has rows of different lengths, this is to be solved as follows:
|
|
26
26
|
|
27
27
|
Therefore, transposing this matrix:
|
28
28
|
|
29
|
-
```
|
29
|
+
```text
|
30
30
|
ABC
|
31
31
|
DE
|
32
32
|
```
|
33
33
|
|
34
34
|
results in:
|
35
35
|
|
36
|
-
```
|
36
|
+
```text
|
37
37
|
AD
|
38
38
|
BE
|
39
39
|
C
|
@@ -41,21 +41,21 @@ C
|
|
41
41
|
|
42
42
|
And transposing:
|
43
43
|
|
44
|
-
```
|
44
|
+
```text
|
45
45
|
AB
|
46
46
|
DEF
|
47
47
|
```
|
48
48
|
|
49
49
|
results in:
|
50
50
|
|
51
|
-
```
|
51
|
+
```text
|
52
52
|
AD
|
53
53
|
BE
|
54
54
|
F
|
55
55
|
```
|
56
56
|
|
57
57
|
In general, all characters from the input should also be present in the transposed output.
|
58
|
-
That means that if a column in the input text contains only spaces on its bottom-most row(s),
|
58
|
+
That means that if a column in the input text contains only spaces on its bottom-most row(s),
|
59
59
|
the corresponding output row should contain the spaces in its right-most column(s).
|
60
60
|
|
61
61
|
## Running the tests
|
@@ -11,12 +11,12 @@ Your job will be to refactor a working but slow and ugly piece of code that
|
|
11
11
|
implements the tree building logic for highly abstracted records. The records
|
12
12
|
only contain an ID number and a parent ID number. The ID number is always
|
13
13
|
between 0 (inclusive) and the length of the record list (exclusive). All records
|
14
|
-
have a parent ID lower than their own ID, except for the root record, which has
|
14
|
+
have a parent ID lower than their own ID, except for the root record, which has
|
15
15
|
a parent ID that's equal to its own ID.
|
16
16
|
|
17
17
|
An example tree:
|
18
18
|
|
19
|
-
|
19
|
+
```text
|
20
20
|
root (ID: 0, parent ID: 0)
|
21
21
|
|-- child1 (ID: 1, parent ID: 0)
|
22
22
|
| |-- grandchild1 (ID: 2, parent ID: 1)
|
@@ -24,7 +24,7 @@ root (ID: 0, parent ID: 0)
|
|
24
24
|
+-- child2 (ID: 3, parent ID: 0)
|
25
25
|
| +-- grandchild3 (ID: 6, parent ID: 3)
|
26
26
|
+-- child3 (ID: 5, parent ID: 0)
|
27
|
-
|
27
|
+
```
|
28
28
|
|
29
29
|
## Running the tests
|
30
30
|
|
@@ -43,6 +43,5 @@ different specs, so the results from these benchmark tests may vary.
|
|
43
43
|
For more detailed information about the Go track, including how to get help if
|
44
44
|
you're having trouble, please visit the exercism.io [Go language page](http://exercism.io/languages/go/about).
|
45
45
|
|
46
|
-
|
47
46
|
## Submitting Incomplete Solutions
|
48
47
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -2,23 +2,38 @@
|
|
2
2
|
|
3
3
|
Determine if a triangle is equilateral, isosceles, or scalene.
|
4
4
|
|
5
|
-
An _equilateral_ triangle has all three sides the same length
|
5
|
+
An _equilateral_ triangle has all three sides the same length.
|
6
|
+
|
6
7
|
An _isosceles_ triangle has at least two sides the same length. (It is sometimes
|
7
8
|
specified as having exactly two sides the same length, but for the purposes of
|
8
|
-
this exercise we'll say at least two.)
|
9
|
+
this exercise we'll say at least two.)
|
10
|
+
|
9
11
|
A _scalene_ triangle has all sides of different lengths.
|
10
12
|
|
11
13
|
## Note
|
12
14
|
|
13
|
-
For a shape to be a triangle at all, all sides have to be of length > 0, and
|
14
|
-
the sum of the lengths of any two sides must be greater than or equal to the
|
15
|
+
For a shape to be a triangle at all, all sides have to be of length > 0, and
|
16
|
+
the sum of the lengths of any two sides must be greater than or equal to the
|
15
17
|
length of the third side. See [Triangle Inequality](https://en.wikipedia.org/wiki/Triangle_inequality).
|
16
18
|
|
17
19
|
## Dig Deeper
|
18
20
|
|
19
|
-
The case where the sum of the lengths of two sides _equals_ that of the
|
20
|
-
third is known as a _degenerate_ triangle - it has zero area and looks like
|
21
|
+
The case where the sum of the lengths of two sides _equals_ that of the
|
22
|
+
third is known as a _degenerate_ triangle - it has zero area and looks like
|
21
23
|
a single line. Feel free to add your own code/tests to check for degenerate triangles.
|
24
|
+
|
25
|
+
## Constant Declarations
|
26
|
+
|
27
|
+
In this exercise you are asked to declare a series of constants used to identify
|
28
|
+
different types of triangles. Pick the data type you think works best for this
|
29
|
+
and get the tests passing.
|
30
|
+
|
31
|
+
Afterwards, it may be worth reading about Go's
|
32
|
+
predeclared identifier [iota](https://golang.org/ref/spec#Iota). There's an
|
33
|
+
excellent write up about it
|
34
|
+
[here](https://splice.com/blog/iota-elegant-constants-golang/).
|
35
|
+
|
36
|
+
|
22
37
|
## Running the tests
|
23
38
|
|
24
39
|
To run the tests run the command `go test` from within the exercise directory.
|
@@ -11,7 +11,7 @@ Trinary numbers contain three symbols: 0, 1, and 2.
|
|
11
11
|
The last place in a trinary number is the 1's place. The second to last
|
12
12
|
is the 3's place, the third to last is the 9's place, etc.
|
13
13
|
|
14
|
-
```
|
14
|
+
```shell
|
15
15
|
# "102012"
|
16
16
|
1 0 2 0 1 2 # the number
|
17
17
|
1*3^5 + 0*3^4 + 2*3^3 + 0*3^2 + 1*3^1 + 2*3^0 # the value
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Output the lyrics to 'The Twelve Days of Christmas'.
|
4
4
|
|
5
|
-
```
|
5
|
+
```text
|
6
6
|
On the first day of Christmas my true love gave to me, a Partridge in a Pear Tree.
|
7
7
|
|
8
8
|
On the second day of Christmas my true love gave to me, two Turtle Doves, and a Partridge in a Pear Tree.
|
@@ -47,8 +47,7 @@ you're having trouble, please visit the exercism.io [Go language page](http://ex
|
|
47
47
|
|
48
48
|
## Source
|
49
49
|
|
50
|
-
Wikipedia [http://en.wikipedia.org/wiki/
|
50
|
+
Wikipedia [http://en.wikipedia.org/wiki/The_Twelve_Days_of_Christmas_(song)](http://en.wikipedia.org/wiki/The_Twelve_Days_of_Christmas_(song))
|
51
51
|
|
52
52
|
## Submitting Incomplete Solutions
|
53
|
-
|
54
53
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
`Two-fer` or `2-fer` is short for two for one. One for you and one for me.
|
4
4
|
|
5
|
-
```
|
5
|
+
```text
|
6
6
|
"One for X, one for me."
|
7
7
|
```
|
8
8
|
|
@@ -12,35 +12,6 @@ If the given name is "Alice", the result should be "One for Alice, one for me."
|
|
12
12
|
If no name is given, the result should be "One for you, one for me."
|
13
13
|
|
14
14
|
|
15
|
-
## Test-Driven Development
|
16
|
-
|
17
|
-
As programmers mature, they eventually want to test their code.
|
18
|
-
|
19
|
-
Here at Exercism we simulate [Test-Driven
|
20
|
-
Development](http://en.wikipedia.org/wiki/Test-driven_development) (TDD), where
|
21
|
-
you write your tests before writing any functionality. The simulation comes in
|
22
|
-
the form of a pre-written test suite, which will signal that you have solved
|
23
|
-
the problem.
|
24
|
-
|
25
|
-
It will also provide you with a safety net to explore other solutions without
|
26
|
-
breaking the functionality.
|
27
|
-
|
28
|
-
### A typical TDD workflow on Exercism:
|
29
|
-
|
30
|
-
1. Run the test file and pick one test that's failing.
|
31
|
-
2. Write some code to fix the test you picked.
|
32
|
-
3. Re-run the tests to confirm the test is now passing.
|
33
|
-
4. Repeat from step 1.
|
34
|
-
5. Submit your solution (`exercism submit /path/to/file`)
|
35
|
-
|
36
|
-
## Instructions
|
37
|
-
|
38
|
-
Submissions are encouraged to be general, within reason. Having said that, it's
|
39
|
-
also important not to over-engineer a solution.
|
40
|
-
|
41
|
-
It's important to remember that the goal is to make code as expressive and
|
42
|
-
readable as we can.
|
43
|
-
|
44
15
|
## Running the tests
|
45
16
|
|
46
17
|
To run the tests run the command `go test` from within the exercise directory.
|
@@ -60,7 +31,7 @@ you're having trouble, please visit the exercism.io [Go language page](http://ex
|
|
60
31
|
|
61
32
|
## Source
|
62
33
|
|
63
|
-
|
34
|
+
[https://en.wikipedia.org/wiki/Two-fer](https://en.wikipedia.org/wiki/Two-fer)
|
64
35
|
|
65
36
|
## Submitting Incomplete Solutions
|
66
37
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -5,18 +5,17 @@ Implement variable length quantity encoding and decoding.
|
|
5
5
|
The goal of this exercise is to implement [VLQ](https://en.wikipedia.org/wiki/Variable-length_quantity) encoding/decoding.
|
6
6
|
|
7
7
|
In short, the goal of this encoding is to encode integer values in a way that would save bytes.
|
8
|
-
Only the first 7 bits of each byte is significant (right-justified; sort of like an ASCII byte).
|
9
|
-
So, if you have a 32-bit value, you have to unpack it into a series of 7-bit bytes.
|
10
|
-
Of course, you will have a variable number of bytes depending upon your integer.
|
8
|
+
Only the first 7 bits of each byte is significant (right-justified; sort of like an ASCII byte).
|
9
|
+
So, if you have a 32-bit value, you have to unpack it into a series of 7-bit bytes.
|
10
|
+
Of course, you will have a variable number of bytes depending upon your integer.
|
11
11
|
To indicate which is the last byte of the series, you leave bit #7 clear.
|
12
|
-
In all of the preceding bytes, you set bit #7.
|
12
|
+
In all of the preceding bytes, you set bit #7.
|
13
13
|
|
14
|
-
So, if an integer is between `0-127`, it can be represented as one byte.
|
14
|
+
So, if an integer is between `0-127`, it can be represented as one byte.
|
15
15
|
Although VLQ can deal with numbers of arbitrary sizes, for this exercise we will restrict ourselves to only numbers that fit in a 32-bit unsigned integer.
|
16
16
|
Here are examples of integers as 32-bit values, and the variable length quantities that they translate to:
|
17
17
|
|
18
|
-
|
19
|
-
```
|
18
|
+
```text
|
20
19
|
NUMBER VARIABLE QUANTITY
|
21
20
|
00000000 00
|
22
21
|
00000040 40
|
@@ -4,14 +4,13 @@ Given a phrase, count the occurrences of each word in that phrase.
|
|
4
4
|
|
5
5
|
For example for the input `"olly olly in come free"`
|
6
6
|
|
7
|
-
```
|
7
|
+
```text
|
8
8
|
olly: 2
|
9
9
|
in: 1
|
10
10
|
come: 1
|
11
11
|
free: 1
|
12
12
|
```
|
13
13
|
|
14
|
-
|
15
14
|
## Running the tests
|
16
15
|
|
17
16
|
To run the tests run the command `go test` from within the exercise directory.
|
@@ -5,7 +5,7 @@ words in them.
|
|
5
5
|
|
6
6
|
For example:
|
7
7
|
|
8
|
-
```
|
8
|
+
```text
|
9
9
|
jefblpepre
|
10
10
|
camdcimgtc
|
11
11
|
oivokprjsm
|
@@ -43,6 +43,5 @@ different specs, so the results from these benchmark tests may vary.
|
|
43
43
|
For more detailed information about the Go track, including how to get help if
|
44
44
|
you're having trouble, please visit the exercism.io [Go language page](http://exercism.io/languages/go/about).
|
45
45
|
|
46
|
-
|
47
46
|
## Submitting Incomplete Solutions
|
48
47
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
Parse and evaluate simple math word problems returning the answer as an integer.
|
4
4
|
|
5
|
-
|
6
5
|
## Iteration 1 — Addition
|
7
6
|
|
8
7
|
Add two numbers together.
|
@@ -13,7 +12,6 @@ Evaluates to 18.
|
|
13
12
|
|
14
13
|
Handle large numbers and negative numbers.
|
15
14
|
|
16
|
-
|
17
15
|
## Iteration 2 — Subtraction, Multiplication and Division
|
18
16
|
|
19
17
|
Now, perform the other three operations.
|
@@ -30,7 +28,6 @@ Now, perform the other three operations.
|
|
30
28
|
|
31
29
|
5
|
32
30
|
|
33
|
-
|
34
31
|
## Iteration 3 — Multiple Operations
|
35
32
|
|
36
33
|
Handle a set of operations, in sequence.
|
@@ -46,7 +43,6 @@ left-to-right, _ignoring the typical order of operations._
|
|
46
43
|
|
47
44
|
15 (i.e. not 9)
|
48
45
|
|
49
|
-
|
50
46
|
## Bonus — Exponentials
|
51
47
|
|
52
48
|
If you'd like, handle exponentials.
|
@@ -55,7 +51,6 @@ If you'd like, handle exponentials.
|
|
55
51
|
|
56
52
|
32
|
57
53
|
|
58
|
-
|
59
54
|
## Running the tests
|
60
55
|
|
61
56
|
To run the tests run the command `go test` from within the exercise directory.
|
data/tracks/groovy/config.json
CHANGED
@@ -195,6 +195,17 @@
|
|
195
195
|
},
|
196
196
|
{
|
197
197
|
"core": true,
|
198
|
+
"difficulty": 4,
|
199
|
+
"slug": "rotational-cipher",
|
200
|
+
"topics": [
|
201
|
+
"cryptography",
|
202
|
+
"integers",
|
203
|
+
"strings"
|
204
|
+
],
|
205
|
+
"unlocked_by": null,
|
206
|
+
"uuid": "449fc372-ba30-4c45-99b4-8053e9cdf502"
|
207
|
+
},
|
208
|
+
{
|
198
209
|
"difficulty": 5,
|
199
210
|
"slug": "flatten-array",
|
200
211
|
"topics": [
|
@@ -0,0 +1,38 @@
|
|
1
|
+
public class RotationalCipher {
|
2
|
+
private int key
|
3
|
+
|
4
|
+
public RotationalCipher(int key) {
|
5
|
+
this.key = key
|
6
|
+
}
|
7
|
+
|
8
|
+
public String rotate(String cipherText) {
|
9
|
+
StringBuilder ret = new StringBuilder()
|
10
|
+
cipherText.each { c -> ret.append(convert(c)) }
|
11
|
+
ret.toString()
|
12
|
+
}
|
13
|
+
|
14
|
+
/*
|
15
|
+
* 'a' == 97
|
16
|
+
* 'z' == 122
|
17
|
+
* 'A' == 65
|
18
|
+
* 'Z' == 90
|
19
|
+
* For reference, see http://www.asciitable.com
|
20
|
+
*/
|
21
|
+
private char convert(String s) {
|
22
|
+
char c = s as Character
|
23
|
+
int cInt = c as Integer
|
24
|
+
int convertedInt = cInt + key
|
25
|
+
if(c.isLetter()) {
|
26
|
+
if(c.isLowerCase() && convertedInt > 122) {
|
27
|
+
(96 + (convertedInt % 122)) as Character
|
28
|
+
} else if (c.isUpperCase() && convertedInt > 90){
|
29
|
+
(64 + (convertedInt % 90)) as Character
|
30
|
+
} else {
|
31
|
+
convertedInt as Character
|
32
|
+
}
|
33
|
+
} else {
|
34
|
+
c
|
35
|
+
}
|
36
|
+
|
37
|
+
}
|
38
|
+
}
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# Rotational Cipher
|
2
|
+
|
3
|
+
Create an implementation of the rotational cipher, also sometimes called the Caesar cipher.
|
4
|
+
|
5
|
+
The Caesar cipher is a simple shift cipher that relies on
|
6
|
+
transposing all the letters in the alphabet using an integer key
|
7
|
+
between `0` and `26`. Using a key of `0` or `26` will always yield
|
8
|
+
the same output due to modular arithmetic. The letter is shifted
|
9
|
+
for as many values as the value of the key.
|
10
|
+
|
11
|
+
The general notation for rotational ciphers is `ROT + <key>`.
|
12
|
+
The most commonly used rotational cipher is `ROT13`.
|
13
|
+
|
14
|
+
A `ROT13` on the Latin alphabet would be as follows:
|
15
|
+
|
16
|
+
```text
|
17
|
+
Plain: abcdefghijklmnopqrstuvwxyz
|
18
|
+
Cipher: nopqrstuvwxyzabcdefghijklm
|
19
|
+
```
|
20
|
+
|
21
|
+
It is stronger than the Atbash cipher because it has 27 possible keys, and 25 usable keys.
|
22
|
+
|
23
|
+
Ciphertext is written out in the same formatting as the input including spaces and punctuation.
|
24
|
+
|
25
|
+
## Examples
|
26
|
+
|
27
|
+
- ROT5 `omg` gives `trl`
|
28
|
+
- ROT0 `c` gives `c`
|
29
|
+
- ROT26 `Cool` gives `Cool`
|
30
|
+
- ROT13 `The quick brown fox jumps over the lazy dog.` gives `Gur dhvpx oebja sbk whzcf bire gur ynml qbt.`
|
31
|
+
- ROT13 `Gur dhvpx oebja sbk whzcf bire gur ynml qbt.` gives `The quick brown fox jumps over the lazy dog.`
|
32
|
+
|
33
|
+
# Running the tests
|
34
|
+
|
35
|
+
You can run all the tests for an exercise by entering
|
36
|
+
|
37
|
+
```sh
|
38
|
+
$ groovy ./RotationalCipherSpec.groovy
|
39
|
+
```
|
40
|
+
|
41
|
+
in your terminal.
|
42
|
+
|
43
|
+
## Source
|
44
|
+
|
45
|
+
Wikipedia [https://en.wikipedia.org/wiki/Caesar_cipher](https://en.wikipedia.org/wiki/Caesar_cipher)
|
46
|
+
|
47
|
+
## Submitting Incomplete Solutions
|
48
|
+
|
49
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,68 @@
|
|
1
|
+
@Grab('org.spockframework:spock-core:1.0-groovy-2.4')
|
2
|
+
import spock.lang.*
|
3
|
+
|
4
|
+
class RotationalCipherSpec extends Specification {
|
5
|
+
private RotationalCipher
|
6
|
+
private RotationalCipher rotationalCipher
|
7
|
+
|
8
|
+
def 'rotate single character by 1'() {
|
9
|
+
rotationalCipher = new RotationalCipher(1)
|
10
|
+
expect: rotationalCipher.rotate("a") == "b"
|
11
|
+
}
|
12
|
+
|
13
|
+
@Ignore
|
14
|
+
def 'rotate single character by 26'() {
|
15
|
+
rotationalCipher = new RotationalCipher(26)
|
16
|
+
expect: rotationalCipher.rotate("a") == "a"
|
17
|
+
}
|
18
|
+
|
19
|
+
@Ignore
|
20
|
+
def 'rotate single character by 0'() {
|
21
|
+
rotationalCipher = new RotationalCipher(0)
|
22
|
+
expect: rotationalCipher.rotate("a") == "a"
|
23
|
+
}
|
24
|
+
|
25
|
+
@Ignore
|
26
|
+
def 'rotate single character with wrap around'() {
|
27
|
+
rotationalCipher = new RotationalCipher(13)
|
28
|
+
expect: rotationalCipher.rotate("n") == "a"
|
29
|
+
}
|
30
|
+
|
31
|
+
@Ignore
|
32
|
+
def 'rotate capital letters'() {
|
33
|
+
rotationalCipher = new RotationalCipher(5)
|
34
|
+
expect: rotationalCipher.rotate("OMG") == "TRL"
|
35
|
+
}
|
36
|
+
|
37
|
+
@Ignore
|
38
|
+
def 'rotate spaces'() {
|
39
|
+
rotationalCipher = new RotationalCipher(5)
|
40
|
+
expect: rotationalCipher.rotate("O M G") == "T R L"
|
41
|
+
}
|
42
|
+
|
43
|
+
@Ignore
|
44
|
+
def 'rotate numbers'() {
|
45
|
+
rotationalCipher = new RotationalCipher(4)
|
46
|
+
expect:
|
47
|
+
rotationalCipher.rotate("Testing 1 2 3 testing") ==
|
48
|
+
"Xiwxmrk 1 2 3 xiwxmrk"
|
49
|
+
}
|
50
|
+
|
51
|
+
@Ignore
|
52
|
+
def 'rotate punctuation'() {
|
53
|
+
rotationalCipher = new RotationalCipher(21)
|
54
|
+
expect:
|
55
|
+
rotationalCipher.rotate("Let's eat, Grandma!") ==
|
56
|
+
"Gzo'n zvo, Bmviyhv!"
|
57
|
+
}
|
58
|
+
|
59
|
+
@Ignore
|
60
|
+
def 'rotate all letters'() {
|
61
|
+
rotationalCipher = new RotationalCipher(13)
|
62
|
+
expect:
|
63
|
+
rotationalCipher.rotate(
|
64
|
+
"Gur dhvpx oebja sbk whzcf bire gur ynml qbt.") ==
|
65
|
+
"The quick brown fox jumps over the lazy dog."
|
66
|
+
}
|
67
|
+
|
68
|
+
}
|