trackler 2.2.1.47 → 2.2.1.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/problem-specifications/exercises/pangram/canonical-data.json +3 -3
- data/tracks/common-lisp/.travis.yml +2 -9
- data/tracks/common-lisp/docs/TESTS.md +43 -9
- data/tracks/delphi/exercises/nucleotide-count/uNucleotideCountTest.pas +2 -2
- data/tracks/elixir/.travis.yml +4 -7
- data/tracks/elixir/README.md +2 -6
- data/tracks/elixir/bin/dialyzer_check.sh +2 -13
- data/tracks/elixir/exercises/allergies/example.exs +3 -2
- data/tracks/elixir/exercises/atbash-cipher/example.exs +5 -5
- data/tracks/elixir/exercises/bank-account/example.exs +11 -11
- data/tracks/elixir/exercises/bob/example.exs +4 -4
- data/tracks/elixir/exercises/forth/example.exs +66 -48
- data/tracks/elixir/exercises/minesweeper/example.exs +31 -18
- data/tracks/elixir/exercises/pangram/example.exs +4 -4
- data/tracks/elixir/exercises/queen-attack/queen_attack_test.exs +68 -53
- data/tracks/elixir/exercises/say/example.exs +33 -31
- data/tracks/elixir/exercises/scrabble-score/example.exs +12 -11
- data/tracks/elixir/mix.exs +10 -7
- data/tracks/elixir/mix.lock +4 -1
- data/tracks/erlang/README.md +2 -0
- data/tracks/fsharp/exercises/nth-prime/Example.fs +4 -1
- data/tracks/fsharp/exercises/nth-prime/NthPrime.fs +1 -1
- data/tracks/fsharp/exercises/nth-prime/NthPrimeTest.fs +12 -32
- data/tracks/fsharp/exercises/pangram/PangramTest.fs +3 -3
- data/tracks/fsharp/exercises/perfect-numbers/Example.fs +9 -6
- data/tracks/fsharp/exercises/perfect-numbers/PerfectNumbers.fs +1 -1
- data/tracks/fsharp/exercises/perfect-numbers/PerfectNumbersTest.fs +55 -21
- data/tracks/fsharp/generators/Generators.fs +18 -0
- data/tracks/gnu-apl/config.json +21 -0
- data/tracks/gnu-apl/exercises/hamming/README.md +42 -0
- data/tracks/gnu-apl/exercises/hamming/hamming-example.apl +5 -0
- data/tracks/gnu-apl/exercises/hamming/hamming.tc +75 -0
- data/tracks/gnu-apl/exercises/hello-world/README.md +17 -1
- data/tracks/gnu-apl/exercises/leap/README.md +33 -0
- data/tracks/gnu-apl/exercises/raindrops/README.md +24 -0
- data/tracks/gnu-apl/exercises/raindrops/raindrops-example.apl +8 -0
- data/tracks/gnu-apl/exercises/raindrops/raindrops.tc +60 -0
- data/tracks/gnu-apl/exercises/rna-transcription/README.md +25 -0
- data/tracks/gnu-apl/exercises/rna-transcription/rna-transcription-example.apl +7 -0
- data/tracks/gnu-apl/exercises/rna-transcription/rna-transcription.tc +41 -0
- data/tracks/gnu-apl/test.apl +13 -0
- data/tracks/haskell/config.json +9 -0
- data/tracks/haskell/exercises/rotational-cipher/README.md +91 -0
- data/tracks/haskell/exercises/rotational-cipher/examples/success-standard/package.yaml +16 -0
- data/tracks/haskell/exercises/rotational-cipher/examples/success-standard/src/RotationalCipher.hs +9 -0
- data/tracks/haskell/exercises/rotational-cipher/package.yaml +20 -0
- data/tracks/haskell/exercises/rotational-cipher/src/RotationalCipher.hs +4 -0
- data/tracks/haskell/exercises/rotational-cipher/stack.yaml +1 -0
- data/tracks/haskell/exercises/rotational-cipher/test/Tests.hs +77 -0
- data/tracks/java/config.json +23 -14
- data/tracks/java/config/exercise-readme-insert.md +3 -3
- data/tracks/java/config/exercise_readme.go.tmpl +3 -0
- data/tracks/java/exercises/accumulate/README.md +4 -3
- data/tracks/java/exercises/acronym/.meta/{.version → version} +0 -0
- data/tracks/java/exercises/acronym/README.md +4 -3
- data/tracks/java/exercises/all-your-base/.meta/{.version → version} +0 -0
- data/tracks/java/exercises/all-your-base/README.md +4 -3
- data/tracks/java/exercises/allergies/README.md +4 -3
- data/tracks/java/exercises/anagram/README.md +4 -3
- data/tracks/java/exercises/atbash-cipher/README.md +4 -3
- data/tracks/java/exercises/bank-account/README.md +6 -3
- data/tracks/java/exercises/beer-song/README.md +4 -3
- data/tracks/java/exercises/binary-search-tree/.meta/src/reference/java/BinarySearchTree.java +38 -44
- data/tracks/java/exercises/binary-search-tree/README.md +4 -3
- data/tracks/java/exercises/binary-search-tree/src/main/java/BinarySearchTree.java +35 -0
- data/tracks/java/exercises/binary-search-tree/src/test/java/BinarySearchTreeTest.java +46 -40
- data/tracks/java/exercises/binary-search/.meta/hints.md +25 -0
- data/tracks/java/exercises/binary-search/.meta/src/reference/java/BinarySearch.java +3 -7
- data/tracks/java/exercises/binary-search/README.md +33 -3
- data/tracks/java/exercises/binary-search/src/test/java/BinarySearchTest.java +11 -11
- data/tracks/java/exercises/binary/README.md +4 -3
- data/tracks/java/exercises/bob/README.md +4 -3
- data/tracks/java/exercises/book-store/README.md +4 -3
- data/tracks/java/exercises/bowling/README.md +4 -3
- data/tracks/java/exercises/bracket-push/README.md +4 -3
- data/tracks/java/exercises/change/.meta/{.version → version} +0 -0
- data/tracks/java/exercises/change/README.md +4 -3
- data/tracks/java/exercises/circular-buffer/README.md +4 -3
- data/tracks/java/exercises/clock/.meta/{.version → version} +0 -0
- data/tracks/java/exercises/clock/README.md +6 -3
- data/tracks/java/exercises/collatz-conjecture/.meta/{.version → version} +0 -0
- data/tracks/java/exercises/collatz-conjecture/README.md +4 -3
- data/tracks/java/exercises/complex-numbers/README.md +4 -3
- data/tracks/java/exercises/crypto-square/README.md +4 -3
- data/tracks/java/exercises/{rna-transcription/.meta/.version → custom-set/.meta/version} +0 -0
- data/tracks/java/exercises/custom-set/README.md +4 -3
- data/tracks/java/exercises/custom-set/src/test/java/CustomSetTest.java +103 -251
- data/tracks/java/exercises/diamond/.meta/{.version → version} +0 -0
- data/tracks/java/exercises/diamond/README.md +4 -3
- data/tracks/java/exercises/difference-of-squares/.meta/{.version → version} +0 -0
- data/tracks/java/exercises/difference-of-squares/README.md +4 -3
- data/tracks/java/exercises/etl/README.md +4 -3
- data/tracks/java/exercises/flatten-array/.meta/{.version → version} +0 -0
- data/tracks/java/exercises/flatten-array/README.md +4 -3
- data/tracks/java/exercises/food-chain/README.md +4 -3
- data/tracks/java/exercises/forth/.meta/{.version → version} +0 -0
- data/tracks/java/exercises/forth/README.md +3 -3
- data/tracks/java/exercises/gigasecond/README.md +4 -3
- data/tracks/java/exercises/grade-school/README.md +4 -3
- data/tracks/java/exercises/hamming/.meta/{.version → version} +0 -0
- data/tracks/java/exercises/hamming/README.md +6 -3
- data/tracks/java/exercises/hello-world/README.md +6 -3
- data/tracks/java/exercises/hexadecimal/README.md +4 -3
- data/tracks/java/exercises/house/README.md +4 -3
- data/tracks/java/exercises/isogram/README.md +6 -3
- data/tracks/java/exercises/kindergarten-garden/README.md +4 -3
- data/tracks/java/exercises/largest-series-product/README.md +4 -3
- data/tracks/java/exercises/linked-list/README.md +4 -3
- data/tracks/java/exercises/list-ops/.meta/{.version → version} +0 -0
- data/tracks/java/exercises/list-ops/README.md +6 -3
- data/tracks/java/exercises/luhn/README.md +4 -3
- data/tracks/java/exercises/matrix/README.md +4 -3
- data/tracks/java/exercises/meetup/README.md +4 -3
- data/tracks/java/exercises/minesweeper/.meta/{.version → version} +0 -0
- data/tracks/java/exercises/minesweeper/README.md +4 -3
- data/tracks/java/exercises/nth-prime/README.md +4 -3
- data/tracks/java/exercises/nucleotide-count/README.md +4 -3
- data/tracks/java/exercises/ocr-numbers/README.md +4 -3
- data/tracks/java/exercises/octal/README.md +4 -3
- data/tracks/java/exercises/palindrome-products/README.md +4 -3
- data/tracks/java/exercises/pangram/.meta/{.version → version} +0 -0
- data/tracks/java/exercises/pangram/README.md +4 -3
- data/tracks/java/exercises/pascals-triangle/.meta/{.version → version} +0 -0
- data/tracks/java/exercises/pascals-triangle/README.md +4 -3
- data/tracks/java/exercises/perfect-numbers/.meta/{.version → version} +0 -0
- data/tracks/java/exercises/perfect-numbers/README.md +4 -3
- data/tracks/java/exercises/phone-number/README.md +4 -3
- data/tracks/java/exercises/pig-latin/README.md +4 -3
- data/tracks/java/exercises/poker/README.md +4 -3
- data/tracks/java/exercises/prime-factors/README.md +4 -3
- data/tracks/java/exercises/pythagorean-triplet/README.md +4 -3
- data/tracks/java/exercises/queen-attack/README.md +4 -3
- data/tracks/java/exercises/raindrops/README.md +4 -3
- data/tracks/java/exercises/rectangles/README.md +4 -3
- data/tracks/java/exercises/rna-transcription/.meta/version +1 -0
- data/tracks/java/exercises/rna-transcription/README.md +4 -3
- data/tracks/java/exercises/robot-name/README.md +4 -3
- data/tracks/java/exercises/robot-simulator/README.md +4 -3
- data/tracks/java/exercises/roman-numerals/README.md +4 -3
- data/tracks/java/exercises/rotational-cipher/README.md +4 -3
- data/tracks/java/exercises/run-length-encoding/README.md +4 -3
- data/tracks/java/exercises/saddle-points/.meta/{.version → version} +0 -0
- data/tracks/java/exercises/saddle-points/README.md +4 -3
- data/tracks/java/exercises/scrabble-score/.meta/{.version → version} +0 -0
- data/tracks/java/exercises/scrabble-score/README.md +4 -3
- data/tracks/java/exercises/secret-handshake/README.md +4 -3
- data/tracks/java/exercises/series/README.md +4 -3
- data/tracks/java/exercises/sieve/README.md +4 -3
- data/tracks/java/exercises/simple-cipher/README.md +6 -3
- data/tracks/java/exercises/simple-linked-list/README.md +4 -3
- data/tracks/java/exercises/space-age/README.md +4 -3
- data/tracks/java/exercises/spiral-matrix/.meta/{.version → version} +0 -0
- data/tracks/java/exercises/spiral-matrix/README.md +4 -3
- data/tracks/java/exercises/strain/README.md +4 -3
- data/tracks/java/exercises/sublist/README.md +4 -3
- data/tracks/java/exercises/sum-of-multiples/README.md +4 -3
- data/tracks/java/exercises/tournament/README.md +4 -3
- data/tracks/java/exercises/transpose/README.md +4 -3
- data/tracks/java/exercises/triangle/.meta/{.version → version} +0 -0
- data/tracks/java/exercises/triangle/README.md +4 -3
- data/tracks/java/exercises/trinary/README.md +4 -3
- data/tracks/java/exercises/twelve-days/README.md +4 -3
- data/tracks/java/exercises/two-fer/README.md +6 -3
- data/tracks/java/exercises/word-count/README.md +4 -3
- data/tracks/java/exercises/word-search/.meta/{.version → version} +0 -0
- data/tracks/java/exercises/word-search/README.md +4 -3
- data/tracks/java/exercises/wordy/README.md +4 -3
- data/tracks/julia/config.json +13 -0
- data/tracks/julia/exercises/phone-number/README.md +36 -0
- data/tracks/julia/exercises/phone-number/example.jl +18 -0
- data/tracks/julia/exercises/phone-number/phone-number.jl +3 -0
- data/tracks/julia/exercises/phone-number/runtests.jl +49 -0
- data/tracks/lua/config.json +505 -494
- data/tracks/lua/config/maintainers.json +16 -16
- data/tracks/lua/exercises/acronym/README.md +0 -1
- data/tracks/lua/exercises/all-your-base/README.md +1 -1
- data/tracks/lua/exercises/allergies/README.md +0 -1
- data/tracks/lua/exercises/alphametics/README.md +2 -2
- data/tracks/lua/exercises/atbash-cipher/README.md +2 -1
- data/tracks/lua/exercises/beer-song/README.md +1 -1
- data/tracks/lua/exercises/binary/README.md +2 -0
- data/tracks/lua/exercises/bowling/README.md +20 -6
- data/tracks/lua/exercises/change/README.md +1 -1
- data/tracks/lua/exercises/circular-buffer/README.md +13 -6
- data/tracks/lua/exercises/crypto-square/README.md +4 -4
- data/tracks/lua/exercises/diamond/README.md +6 -6
- data/tracks/lua/exercises/etl/README.md +2 -0
- data/tracks/lua/exercises/flatten-array/README.md +1 -2
- data/tracks/lua/exercises/food-chain/README.md +1 -1
- data/tracks/lua/exercises/grade-school/README.md +0 -1
- data/tracks/lua/exercises/grains/README.md +0 -1
- data/tracks/lua/exercises/house/README.md +1 -2
- data/tracks/lua/exercises/isogram/README.md +2 -1
- data/tracks/lua/exercises/kindergarten-garden/README.md +13 -13
- data/tracks/lua/exercises/leap/README.md +1 -1
- data/tracks/lua/exercises/linked-list/README.md +10 -10
- data/tracks/lua/exercises/luhn/README.md +7 -7
- data/tracks/lua/exercises/matrix/README.md +6 -4
- data/tracks/lua/exercises/meetup/README.md +1 -2
- data/tracks/lua/exercises/nucleotide-count/README.md +8 -22
- data/tracks/lua/exercises/ocr-numbers/README.md +5 -5
- data/tracks/lua/exercises/octal/README.md +6 -2
- data/tracks/lua/exercises/pangram/README.md +1 -1
- data/tracks/lua/exercises/pascals-triangle/README.md +1 -1
- data/tracks/lua/exercises/perfect-numbers/README.md +2 -2
- data/tracks/lua/exercises/phone-number/README.md +3 -2
- data/tracks/lua/exercises/pov/README.md +2 -2
- data/tracks/lua/exercises/protein-translation/README.md +4 -5
- data/tracks/lua/exercises/pythagorean-triplet/README.md +3 -3
- data/tracks/lua/exercises/rail-fence-cipher/README.md +12 -7
- data/tracks/lua/exercises/react/README.md +29 -0
- data/tracks/lua/exercises/react/example.lua +108 -0
- data/tracks/lua/exercises/react/react_spec.lua +160 -0
- data/tracks/lua/exercises/rectangles/README.md +7 -7
- data/tracks/lua/exercises/roman-numerals/README.md +1 -1
- data/tracks/lua/exercises/run-length-encoding/README.md +4 -4
- data/tracks/lua/exercises/scrabble-score/README.md +3 -1
- data/tracks/lua/exercises/secret-handshake/README.md +1 -1
- data/tracks/lua/exercises/space-age/README.md +2 -1
- data/tracks/lua/exercises/sum-of-multiples/README.md +0 -3
- data/tracks/lua/exercises/tournament/README.md +5 -5
- data/tracks/lua/exercises/transpose/README.md +7 -7
- data/tracks/lua/exercises/triangle/README.md +9 -6
- data/tracks/lua/exercises/variable-length-quantity/README.md +6 -7
- data/tracks/lua/exercises/word-count/README.md +1 -2
- data/tracks/lua/exercises/word-search/README.md +1 -1
- data/tracks/perl6/exercises/leap/Example.pm6 +1 -1
- data/tracks/perl6/exercises/leap/Leap.pm6 +1 -1
- data/tracks/perl6/exercises/leap/example.yaml +1 -1
- data/tracks/perl6/exercises/leap/leap.t +3 -3
- data/tracks/php/exercises/transpose/example.php +37 -15
- data/tracks/php/exercises/transpose/transpose_test.php +205 -45
- data/tracks/purescript/config.json +11 -0
- data/tracks/purescript/exercises/collatz-conjecture/README.md +33 -0
- data/tracks/purescript/exercises/collatz-conjecture/bower.json +26 -0
- data/tracks/purescript/exercises/collatz-conjecture/examples/src/CollatzConjecture.purs +15 -0
- data/tracks/purescript/exercises/collatz-conjecture/src/CollatzConjecture.purs +3 -0
- data/tracks/purescript/exercises/collatz-conjecture/test/Main.purs +43 -0
- data/tracks/python/config.json +10 -2
- data/tracks/racket/README.md +38 -33
- data/tracks/racket/config.json +10 -0
- data/tracks/racket/exercises/collatz-conjecture/README.md +58 -0
- data/tracks/racket/exercises/collatz-conjecture/collatz-conjecture-test.rkt +34 -0
- data/tracks/racket/exercises/collatz-conjecture/collatz-conjecture.rkt +6 -0
- data/tracks/racket/exercises/collatz-conjecture/example.rkt +20 -0
- data/tracks/ruby/exercises/allergies/.meta/.version +1 -0
- data/tracks/ruby/exercises/allergies/.meta/generator/allergies_case.rb +33 -0
- data/tracks/ruby/exercises/allergies/.meta/solutions/allergies.rb +4 -0
- data/tracks/ruby/exercises/allergies/allergies_test.rb +42 -9
- data/tracks/typescript/config.json +46 -0
- data/tracks/typescript/exercises/circular-buffer/README.md +74 -0
- data/tracks/typescript/exercises/circular-buffer/circular-buffer.example.ts +51 -0
- data/tracks/typescript/exercises/circular-buffer/circular-buffer.test.ts +103 -0
- data/tracks/typescript/exercises/circular-buffer/circular-buffer.ts +0 -0
- data/tracks/typescript/exercises/circular-buffer/package.json +36 -0
- data/tracks/typescript/exercises/circular-buffer/tsconfig.json +22 -0
- data/tracks/typescript/exercises/circular-buffer/tslint.json +127 -0
- data/tracks/typescript/exercises/circular-buffer/yarn.lock +2305 -0
- data/tracks/typescript/exercises/largest-series-product/README.md +51 -0
- data/tracks/typescript/exercises/largest-series-product/largest-series-product.example.ts +52 -0
- data/tracks/typescript/exercises/largest-series-product/largest-series-product.test.ts +68 -0
- data/tracks/typescript/exercises/largest-series-product/largest-series-product.ts +0 -0
- data/tracks/typescript/exercises/largest-series-product/package.json +36 -0
- data/tracks/typescript/exercises/largest-series-product/tsconfig.json +22 -0
- data/tracks/typescript/exercises/largest-series-product/tslint.json +127 -0
- data/tracks/typescript/exercises/largest-series-product/yarn.lock +2305 -0
- data/tracks/typescript/exercises/robot-simulator/README.md +58 -0
- data/tracks/typescript/exercises/robot-simulator/package.json +36 -0
- data/tracks/typescript/exercises/robot-simulator/robot-simulator.example.ts +74 -0
- data/tracks/typescript/exercises/robot-simulator/robot-simulator.test.ts +150 -0
- data/tracks/typescript/exercises/robot-simulator/robot-simulator.ts +0 -0
- data/tracks/typescript/exercises/robot-simulator/tsconfig.json +22 -0
- data/tracks/typescript/exercises/robot-simulator/tslint.json +127 -0
- data/tracks/typescript/exercises/robot-simulator/yarn.lock +2305 -0
- metadata +85 -23
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Raindrops
|
|
2
|
+
|
|
3
|
+
Convert a number to a string, the contents of which depend on the number's factors.
|
|
4
|
+
|
|
5
|
+
- If the number has 3 as a factor, output 'Pling'.
|
|
6
|
+
- If the number has 5 as a factor, output 'Plang'.
|
|
7
|
+
- If the number has 7 as a factor, output 'Plong'.
|
|
8
|
+
- If the number does not have 3, 5, or 7 as a factor,
|
|
9
|
+
just pass the number's digits straight through.
|
|
10
|
+
|
|
11
|
+
## Examples
|
|
12
|
+
|
|
13
|
+
- 28's factors are 1, 2, 4, **7**, 14, 28.
|
|
14
|
+
- In raindrop-speak, this would be a simple "Plong".
|
|
15
|
+
- 30's factors are 1, 2, **3**, **5**, 6, 10, 15, 30.
|
|
16
|
+
- In raindrop-speak, this would be a "PlingPlang".
|
|
17
|
+
- 34 has four factors: 1, 2, 17, and 34.
|
|
18
|
+
- In raindrop-speak, this would be "34".
|
|
19
|
+
## Source
|
|
20
|
+
|
|
21
|
+
A variation on a famous interview question intended to weed out potential candidates. [http://jumpstartlab.com](http://jumpstartlab.com)
|
|
22
|
+
|
|
23
|
+
## Submitting Incomplete Solutions
|
|
24
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
log←'./raindrops.tc.log'
|
|
2
|
+
⍎ ')COPY ',(⎕FIO 30),'/../../test.apl'
|
|
3
|
+
|
|
4
|
+
test∆copy_relative 'raindrops.apl'
|
|
5
|
+
test∆clear_log log
|
|
6
|
+
|
|
7
|
+
⍝ ∇convert
|
|
8
|
+
⍝ Given an integer, returns a string representation of that integer's "raindrop sound", based on its prime factors.
|
|
9
|
+
|
|
10
|
+
⍝ the sound for 1 is '1'
|
|
11
|
+
1⎕CR convert 1
|
|
12
|
+
'1'
|
|
13
|
+
|
|
14
|
+
⍝ the sound for multiples of 3 is 'Pling'
|
|
15
|
+
convert 3
|
|
16
|
+
Pling
|
|
17
|
+
convert 6
|
|
18
|
+
Pling
|
|
19
|
+
|
|
20
|
+
⍝ the sound for multiples of 5 is 'Plang'
|
|
21
|
+
convert 5
|
|
22
|
+
Plang
|
|
23
|
+
convert 10
|
|
24
|
+
Plang
|
|
25
|
+
|
|
26
|
+
⍝ the sound for multiples of 7 is 'Plong'
|
|
27
|
+
convert 7
|
|
28
|
+
Plong
|
|
29
|
+
convert 14
|
|
30
|
+
Plong
|
|
31
|
+
|
|
32
|
+
⍝ the sound for numbers that aren't multiples of 3, 5, or 7 is the stringified number
|
|
33
|
+
1⎕CR convert 8
|
|
34
|
+
'8'
|
|
35
|
+
1⎕CR convert 52
|
|
36
|
+
'52'
|
|
37
|
+
|
|
38
|
+
⍝ the sound for numbers that have multiple raindrop factors is the combination of all the sounds
|
|
39
|
+
convert 15 ⍝ 3×5
|
|
40
|
+
PlingPlang
|
|
41
|
+
convert 21 ⍝ 3×7
|
|
42
|
+
PlingPlong
|
|
43
|
+
convert 35 ⍝ 5×7
|
|
44
|
+
PlangPlong
|
|
45
|
+
1⎕CR convert 105 ⍝ 3×5×7
|
|
46
|
+
'PlingPlangPlong'
|
|
47
|
+
|
|
48
|
+
⍝ the sound for squares of a raindrop factor is only the single sound
|
|
49
|
+
convert 9 ⍝ 3×3
|
|
50
|
+
Pling
|
|
51
|
+
convert 25 ⍝ 5×5
|
|
52
|
+
Plang
|
|
53
|
+
convert 49 ⍝ 7×7
|
|
54
|
+
Plong
|
|
55
|
+
convert 27 ⍝ 3*3
|
|
56
|
+
Pling
|
|
57
|
+
convert 3125 ⍝ 5*5
|
|
58
|
+
Plang
|
|
59
|
+
|
|
60
|
+
test∆show_log log
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Rna Transcription
|
|
2
|
+
|
|
3
|
+
Given a DNA strand, return its RNA complement (per RNA transcription).
|
|
4
|
+
|
|
5
|
+
Both DNA and RNA strands are a sequence of nucleotides.
|
|
6
|
+
|
|
7
|
+
The four nucleotides found in DNA are adenine (**A**), cytosine (**C**),
|
|
8
|
+
guanine (**G**) and thymine (**T**).
|
|
9
|
+
|
|
10
|
+
The four nucleotides found in RNA are adenine (**A**), cytosine (**C**),
|
|
11
|
+
guanine (**G**) and uracil (**U**).
|
|
12
|
+
|
|
13
|
+
Given a DNA strand, its transcribed RNA strand is formed by replacing
|
|
14
|
+
each nucleotide with its complement:
|
|
15
|
+
|
|
16
|
+
* `G` -> `C`
|
|
17
|
+
* `C` -> `G`
|
|
18
|
+
* `T` -> `A`
|
|
19
|
+
* `A` -> `U`
|
|
20
|
+
## Source
|
|
21
|
+
|
|
22
|
+
Rosalind [http://rosalind.info/problems/rna](http://rosalind.info/problems/rna)
|
|
23
|
+
|
|
24
|
+
## Submitting Incomplete Solutions
|
|
25
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
log←'./rna-transcription.tc.log'
|
|
2
|
+
⍎ ')COPY ',(⎕FIO 30),'/../../test.apl'
|
|
3
|
+
|
|
4
|
+
test∆copy_relative 'rna-transcription.apl'
|
|
5
|
+
test∆clear_log log
|
|
6
|
+
|
|
7
|
+
⍝ ∇to_rna
|
|
8
|
+
|
|
9
|
+
⍝ RNA complement of cytosine is guanine
|
|
10
|
+
1⎕CR to_rna 'C'
|
|
11
|
+
'G'
|
|
12
|
+
|
|
13
|
+
⍝ RNA complement of guanine is cytosine
|
|
14
|
+
to_rna 'G'
|
|
15
|
+
C
|
|
16
|
+
|
|
17
|
+
⍝ RNA complement of thymine is adenine
|
|
18
|
+
to_rna 'T'
|
|
19
|
+
A
|
|
20
|
+
|
|
21
|
+
⍝ RNA complement of adenine is uracil
|
|
22
|
+
to_rna 'A'
|
|
23
|
+
U
|
|
24
|
+
|
|
25
|
+
⍝ RNA complement of entire string
|
|
26
|
+
1⎕CR to_rna 'ACGTGGTCTTAA'
|
|
27
|
+
'UGCACCAGAAUU'
|
|
28
|
+
|
|
29
|
+
⍝ invalid input (RNA instead of DNA) throws domain error
|
|
30
|
+
1⎕CR test∆try 'to_rna "U"'
|
|
31
|
+
1 'DOMAIN ERROR'
|
|
32
|
+
|
|
33
|
+
⍝ completely invalid DNA input throws domain error
|
|
34
|
+
1⎕CR test∆try 'to_rna "XXX"'
|
|
35
|
+
1 'DOMAIN ERROR'
|
|
36
|
+
|
|
37
|
+
⍝ partially invalid DNA input throws domain error
|
|
38
|
+
1⎕CR test∆try 'to_rna "ACGTXXXCTTAA"'
|
|
39
|
+
1 'DOMAIN ERROR'
|
|
40
|
+
|
|
41
|
+
test∆show_log log
|
data/tracks/gnu-apl/test.apl
CHANGED
|
@@ -18,6 +18,19 @@
|
|
|
18
18
|
test¯warn test¯read_unicode filename
|
|
19
19
|
∇
|
|
20
20
|
|
|
21
|
+
⍝ Evaluate APL code (as string).
|
|
22
|
+
⍝ Returns 2-element vector:
|
|
23
|
+
⍝ [1] Boolean (1 if error, 0 if not).
|
|
24
|
+
⍝ [2] Error message if error; original result if not.
|
|
25
|
+
∇z←test∆try apl_string;response;is_error;result
|
|
26
|
+
response←⎕EC apl_string
|
|
27
|
+
is_error←0=1⊃response
|
|
28
|
+
result←3⊃response
|
|
29
|
+
→(~is_error)/return
|
|
30
|
+
result←result[1;]
|
|
31
|
+
return: z←is_error result
|
|
32
|
+
∇
|
|
33
|
+
|
|
21
34
|
⍝ private
|
|
22
35
|
|
|
23
36
|
⍝ Return current directory as a string.
|
data/tracks/haskell/config.json
CHANGED
|
@@ -77,6 +77,15 @@
|
|
|
77
77
|
"topics": [
|
|
78
78
|
]
|
|
79
79
|
},
|
|
80
|
+
{
|
|
81
|
+
"uuid": "cd5ce9ad-b627-46e3-b6d8-872baf476bf1",
|
|
82
|
+
"slug": "rotational-cipher",
|
|
83
|
+
"core": false,
|
|
84
|
+
"unlocked_by": null,
|
|
85
|
+
"difficulty": 1,
|
|
86
|
+
"topics": [
|
|
87
|
+
]
|
|
88
|
+
},
|
|
80
89
|
{
|
|
81
90
|
"uuid": "85d77b8e-9b87-4d02-9fba-81f843bd66f1",
|
|
82
91
|
"slug": "rna-transcription",
|
|
@@ -0,0 +1,91 @@
|
|
|
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
|
+
|
|
34
|
+
## Getting Started
|
|
35
|
+
|
|
36
|
+
For installation and learning resources, refer to the
|
|
37
|
+
[exercism help page](http://exercism.io/languages/haskell).
|
|
38
|
+
|
|
39
|
+
## Running the tests
|
|
40
|
+
|
|
41
|
+
To run the test suite, execute the following command:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
stack test
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
#### If you get an error message like this...
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
No .cabal file found in directory
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
You are probably running an old stack version and need
|
|
54
|
+
to upgrade it.
|
|
55
|
+
|
|
56
|
+
#### Otherwise, if you get an error message like this...
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
No compiler found, expected minor version match with...
|
|
60
|
+
Try running "stack setup" to install the correct GHC...
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Just do as it says and it will download and install
|
|
64
|
+
the correct compiler version:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
stack setup
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Running *GHCi*
|
|
71
|
+
|
|
72
|
+
If you want to play with your solution in GHCi, just run the command:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
stack ghci
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Feedback, Issues, Pull Requests
|
|
79
|
+
|
|
80
|
+
The [exercism/haskell](https://github.com/exercism/haskell) repository on
|
|
81
|
+
GitHub is the home for all of the Haskell exercises.
|
|
82
|
+
|
|
83
|
+
If you have feedback about an exercise, or want to help implementing a new
|
|
84
|
+
one, head over there and create an issue. We'll do our best to help you!
|
|
85
|
+
|
|
86
|
+
## Source
|
|
87
|
+
|
|
88
|
+
Wikipedia [https://en.wikipedia.org/wiki/Caesar_cipher](https://en.wikipedia.org/wiki/Caesar_cipher)
|
|
89
|
+
|
|
90
|
+
## Submitting Incomplete Solutions
|
|
91
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
name: rotational-cipher
|
|
2
|
+
version: 1.1.0.1
|
|
3
|
+
|
|
4
|
+
dependencies:
|
|
5
|
+
- base
|
|
6
|
+
|
|
7
|
+
library:
|
|
8
|
+
exposed-modules: RotationalCipher
|
|
9
|
+
source-dirs: src
|
|
10
|
+
dependencies:
|
|
11
|
+
# - foo # List here the packages you
|
|
12
|
+
# - bar # want to use in your solution.
|
|
13
|
+
|
|
14
|
+
tests:
|
|
15
|
+
test:
|
|
16
|
+
main: Tests.hs
|
|
17
|
+
source-dirs: test
|
|
18
|
+
dependencies:
|
|
19
|
+
- rotational-cipher
|
|
20
|
+
- hspec
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
resolver: lts-8.21
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{-# LANGUAGE RecordWildCards #-}
|
|
2
|
+
|
|
3
|
+
import Data.Foldable (for_)
|
|
4
|
+
import Test.Hspec (Spec, describe, it, shouldBe)
|
|
5
|
+
import Test.Hspec.Runner (configFastFail, defaultConfig, hspecWith)
|
|
6
|
+
|
|
7
|
+
import RotationalCipher (rotate)
|
|
8
|
+
|
|
9
|
+
main :: IO ()
|
|
10
|
+
main = hspecWith defaultConfig {configFastFail = True} specs
|
|
11
|
+
|
|
12
|
+
specs :: Spec
|
|
13
|
+
specs = describe "rotate" $ for_ cases test
|
|
14
|
+
where
|
|
15
|
+
|
|
16
|
+
test Case{..} = it description assertion
|
|
17
|
+
where
|
|
18
|
+
assertion = rotate number phrase `shouldBe` expected
|
|
19
|
+
|
|
20
|
+
data Case = Case { description :: String
|
|
21
|
+
, number :: Int
|
|
22
|
+
, phrase :: String
|
|
23
|
+
, expected :: String
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
cases :: [Case]
|
|
27
|
+
cases = [ Case { description = "rotate a by 0, same output as input"
|
|
28
|
+
, number = 0
|
|
29
|
+
, phrase = "a"
|
|
30
|
+
, expected = "a"
|
|
31
|
+
}
|
|
32
|
+
, Case { description = "rotate a by 1"
|
|
33
|
+
, number = 1
|
|
34
|
+
, phrase = "a"
|
|
35
|
+
, expected = "b"
|
|
36
|
+
}
|
|
37
|
+
, Case { description = "rotate a by 26, same output as input"
|
|
38
|
+
, number = 26
|
|
39
|
+
, phrase = "a"
|
|
40
|
+
, expected = "a"
|
|
41
|
+
}
|
|
42
|
+
, Case { description = "rotate m by 13"
|
|
43
|
+
, number = 13
|
|
44
|
+
, phrase = "m"
|
|
45
|
+
, expected = "z"
|
|
46
|
+
}
|
|
47
|
+
, Case { description = "rotate n by 13 with wrap around alphabet"
|
|
48
|
+
, number = 13
|
|
49
|
+
, phrase = "n"
|
|
50
|
+
, expected = "a"
|
|
51
|
+
}
|
|
52
|
+
, Case { description = "rotate capital letters"
|
|
53
|
+
, number = 5
|
|
54
|
+
, phrase = "OMG"
|
|
55
|
+
, expected = "TRL"
|
|
56
|
+
}
|
|
57
|
+
, Case { description = "rotate spaces"
|
|
58
|
+
, number = 5
|
|
59
|
+
, phrase = "O M G"
|
|
60
|
+
, expected = "T R L"
|
|
61
|
+
}
|
|
62
|
+
, Case { description = "rotate numbers"
|
|
63
|
+
, number = 4
|
|
64
|
+
, phrase = "Testing 1 2 3 testing"
|
|
65
|
+
, expected = "Xiwxmrk 1 2 3 xiwxmrk"
|
|
66
|
+
}
|
|
67
|
+
, Case { description = "rotate punctuation"
|
|
68
|
+
, number = 21
|
|
69
|
+
, phrase = "Let's eat, Grandma!"
|
|
70
|
+
, expected = "Gzo'n zvo, Bmviyhv!"
|
|
71
|
+
}
|
|
72
|
+
, Case { description = "rotate all letters"
|
|
73
|
+
, number = 13
|
|
74
|
+
, phrase = "The quick brown fox jumps over the lazy dog."
|
|
75
|
+
, expected = "Gur dhvpx oebja sbk whzcf bire gur ynml qbt."
|
|
76
|
+
}
|
|
77
|
+
]
|
data/tracks/java/config.json
CHANGED
|
@@ -214,7 +214,12 @@
|
|
|
214
214
|
"core": true,
|
|
215
215
|
"difficulty": 4,
|
|
216
216
|
"slug": "triangle",
|
|
217
|
-
"topics":
|
|
217
|
+
"topics": [
|
|
218
|
+
"booleans",
|
|
219
|
+
"classes",
|
|
220
|
+
"exception_handling",
|
|
221
|
+
"mathematics"
|
|
222
|
+
],
|
|
218
223
|
"unlocked_by": null,
|
|
219
224
|
"uuid": "ec268d8e-997b-4553-8c67-8bdfa1ecb888"
|
|
220
225
|
},
|
|
@@ -654,18 +659,6 @@
|
|
|
654
659
|
"unlocked_by": "word-count",
|
|
655
660
|
"uuid": "76d28d97-75d3-47eb-bb77-3d347b76f1b6"
|
|
656
661
|
},
|
|
657
|
-
{
|
|
658
|
-
"core": true,
|
|
659
|
-
"difficulty": 6,
|
|
660
|
-
"slug": "linked-list",
|
|
661
|
-
"topics": [
|
|
662
|
-
"algorithms",
|
|
663
|
-
"lists",
|
|
664
|
-
"generics"
|
|
665
|
-
],
|
|
666
|
-
"unlocked_by": null,
|
|
667
|
-
"uuid": "7ba5084d-3b75-4406-a0d7-87c26387f9c0"
|
|
668
|
-
},
|
|
669
662
|
{
|
|
670
663
|
"core": false,
|
|
671
664
|
"difficulty": 6,
|
|
@@ -752,7 +745,11 @@
|
|
|
752
745
|
"core": true,
|
|
753
746
|
"difficulty": 6,
|
|
754
747
|
"slug": "bank-account",
|
|
755
|
-
"topics":
|
|
748
|
+
"topics": [
|
|
749
|
+
"concurrency",
|
|
750
|
+
"exception_handling",
|
|
751
|
+
"integers"
|
|
752
|
+
],
|
|
756
753
|
"unlocked_by": null,
|
|
757
754
|
"uuid": "a242efc5-159d-492b-861d-12a1459fb334"
|
|
758
755
|
},
|
|
@@ -764,6 +761,18 @@
|
|
|
764
761
|
"unlocked_by": "scrabble-score",
|
|
765
762
|
"uuid": "4b3f7771-c642-4278-a3d9-2fb958f26361"
|
|
766
763
|
},
|
|
764
|
+
{
|
|
765
|
+
"core": true,
|
|
766
|
+
"difficulty": 6,
|
|
767
|
+
"slug": "linked-list",
|
|
768
|
+
"topics": [
|
|
769
|
+
"algorithms",
|
|
770
|
+
"lists",
|
|
771
|
+
"generics"
|
|
772
|
+
],
|
|
773
|
+
"unlocked_by": null,
|
|
774
|
+
"uuid": "7ba5084d-3b75-4406-a0d7-87c26387f9c0"
|
|
775
|
+
},
|
|
767
776
|
{
|
|
768
777
|
"core": false,
|
|
769
778
|
"difficulty": 6,
|