trackler 2.2.1.47 → 2.2.1.48
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/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
data/tracks/elixir/mix.lock
CHANGED
@@ -1 +1,4 @@
|
|
1
|
-
%{
|
1
|
+
%{
|
2
|
+
"dialyxir": {:hex, :dialyxir, "0.5.1", "b331b091720fd93e878137add264bac4f644e1ddae07a70bf7062c7862c4b952", [:mix], []},
|
3
|
+
"poison": {:hex, :poison, "1.4.0", "cd5afb9db7f0d19487572fa28185b6d4de647f14235746824e77b3139b79b725", [:mix], []},
|
4
|
+
}
|
data/tracks/erlang/README.md
CHANGED
@@ -9,6 +9,8 @@ Exercism exercises in Erlang
|
|
9
9
|
For general information about how exercism works, please see the
|
10
10
|
[contributing guide](https://github.com/exercism/x-api/blob/master/CONTRIBUTING.md#the-exercise-data).
|
11
11
|
|
12
|
+
If you create “claiming” PRs with obviously unfinished code, please provide an estimate in the PR description when you will continue to work on the PR or you think it will be finished.
|
13
|
+
|
12
14
|
### Setting up your system for local development on the track
|
13
15
|
|
14
16
|
Please make sure you have installed erlang/OTP and `rebar3` as
|
@@ -1,49 +1,29 @@
|
|
1
|
+
// This file was auto-generated based on version 1.0.0 of the canonical data.
|
2
|
+
|
1
3
|
module NthPrimeTest
|
2
4
|
|
3
|
-
open Xunit
|
4
5
|
open FsUnit.Xunit
|
6
|
+
open Xunit
|
7
|
+
|
5
8
|
open NthPrime
|
6
9
|
|
7
10
|
[<Fact>]
|
8
11
|
let ``First prime`` () =
|
9
|
-
|
12
|
+
prime 1 |> should equal (Some 2)
|
10
13
|
|
11
14
|
[<Fact(Skip = "Remove to run test")>]
|
12
15
|
let ``Second prime`` () =
|
13
|
-
|
14
|
-
|
15
|
-
[<Fact(Skip = "Remove to run test")>]
|
16
|
-
let ``Third prime`` () =
|
17
|
-
nthPrime 3 |> should equal 5
|
18
|
-
|
19
|
-
[<Fact(Skip = "Remove to run test")>]
|
20
|
-
let ``4th prime`` () =
|
21
|
-
nthPrime 4 |> should equal 7
|
16
|
+
prime 2 |> should equal (Some 3)
|
22
17
|
|
23
18
|
[<Fact(Skip = "Remove to run test")>]
|
24
|
-
let ``
|
25
|
-
|
19
|
+
let ``Sixth prime`` () =
|
20
|
+
prime 6 |> should equal (Some 13)
|
26
21
|
|
27
22
|
[<Fact(Skip = "Remove to run test")>]
|
28
|
-
let ``
|
29
|
-
|
23
|
+
let ``Big prime`` () =
|
24
|
+
prime 10001 |> should equal (Some 104743)
|
30
25
|
|
31
26
|
[<Fact(Skip = "Remove to run test")>]
|
32
|
-
let ``
|
33
|
-
|
27
|
+
let ``There is no zeroth prime`` () =
|
28
|
+
prime 0 |> should equal None
|
34
29
|
|
35
|
-
[<Fact(Skip = "Remove to run test")>]
|
36
|
-
let ``8th prime`` () =
|
37
|
-
nthPrime 8 |> should equal 19
|
38
|
-
|
39
|
-
[<Fact(Skip = "Remove to run test")>]
|
40
|
-
let ``1000th prime`` () =
|
41
|
-
nthPrime 1000 |> should equal 7919
|
42
|
-
|
43
|
-
[<Fact(Skip = "Remove to run test")>]
|
44
|
-
let ``10000th prime`` () =
|
45
|
-
nthPrime 10000 |> should equal 104729
|
46
|
-
|
47
|
-
[<Fact(Skip = "Remove to run test")>]
|
48
|
-
let ``10001th prime`` () =
|
49
|
-
nthPrime 10001 |> should equal 104743
|
@@ -1,4 +1,4 @@
|
|
1
|
-
// This file was auto-generated based on version 1.
|
1
|
+
// This file was auto-generated based on version 1.3.0 of the canonical data.
|
2
2
|
|
3
3
|
module PangramTest
|
4
4
|
|
@@ -24,8 +24,8 @@ let ``Missing character 'x'`` () =
|
|
24
24
|
isPangram "a quick movement of the enemy will jeopardize five gunboats" |> should equal false
|
25
25
|
|
26
26
|
[<Fact(Skip = "Remove to run test")>]
|
27
|
-
let ``Another missing character '
|
28
|
-
isPangram "
|
27
|
+
let ``Another missing character, e.g. 'h'`` () =
|
28
|
+
isPangram "five boxing wizards jump quickly at it" |> should equal false
|
29
29
|
|
30
30
|
[<Fact(Skip = "Remove to run test")>]
|
31
31
|
let ``Pangram with underscores`` () =
|
@@ -1,11 +1,14 @@
|
|
1
1
|
module PerfectNumbers
|
2
2
|
|
3
|
-
type Classification = Perfect | Abundant | Deficient
|
3
|
+
type Classification = Perfect | Abundant | Deficient
|
4
4
|
|
5
5
|
let sumOfFactors n = [for x in 1..n / 2 do if n % x = 0 then yield x] |> List.sum
|
6
6
|
|
7
|
-
let classify n =
|
8
|
-
match
|
9
|
-
| x when x
|
10
|
-
|
|
11
|
-
|
7
|
+
let classify n : Classification option =
|
8
|
+
match n with
|
9
|
+
| x when x <= 0 -> None
|
10
|
+
| _ ->
|
11
|
+
match sumOfFactors n with
|
12
|
+
| x when x = n -> Some Perfect
|
13
|
+
| x when x < n -> Some Deficient
|
14
|
+
| _ -> Some Abundant
|
@@ -1,27 +1,61 @@
|
|
1
|
+
// This file was auto-generated based on version 1.0.1 of the canonical data.
|
2
|
+
|
1
3
|
module PerfectNumbersTest
|
2
4
|
|
3
|
-
open Xunit
|
4
5
|
open FsUnit.Xunit
|
6
|
+
open Xunit
|
5
7
|
|
6
8
|
open PerfectNumbers
|
7
9
|
|
8
|
-
[<
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
[<
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
[<
|
25
|
-
|
26
|
-
|
27
|
-
|
10
|
+
[<Fact>]
|
11
|
+
let ``Smallest perfect number is classified correctly`` () =
|
12
|
+
classify 6 |> should equal (Some Perfect)
|
13
|
+
|
14
|
+
[<Fact(Skip = "Remove to run test")>]
|
15
|
+
let ``Medium perfect number is classified correctly`` () =
|
16
|
+
classify 28 |> should equal (Some Perfect)
|
17
|
+
|
18
|
+
[<Fact(Skip = "Remove to run test")>]
|
19
|
+
let ``Large perfect number is classified correctly`` () =
|
20
|
+
classify 33550336 |> should equal (Some Perfect)
|
21
|
+
|
22
|
+
[<Fact(Skip = "Remove to run test")>]
|
23
|
+
let ``Smallest abundant number is classified correctly`` () =
|
24
|
+
classify 12 |> should equal (Some Abundant)
|
25
|
+
|
26
|
+
[<Fact(Skip = "Remove to run test")>]
|
27
|
+
let ``Medium abundant number is classified correctly`` () =
|
28
|
+
classify 30 |> should equal (Some Abundant)
|
29
|
+
|
30
|
+
[<Fact(Skip = "Remove to run test")>]
|
31
|
+
let ``Large abundant number is classified correctly`` () =
|
32
|
+
classify 33550335 |> should equal (Some Abundant)
|
33
|
+
|
34
|
+
[<Fact(Skip = "Remove to run test")>]
|
35
|
+
let ``Smallest prime deficient number is classified correctly`` () =
|
36
|
+
classify 2 |> should equal (Some Deficient)
|
37
|
+
|
38
|
+
[<Fact(Skip = "Remove to run test")>]
|
39
|
+
let ``Smallest non-prime deficient number is classified correctly`` () =
|
40
|
+
classify 4 |> should equal (Some Deficient)
|
41
|
+
|
42
|
+
[<Fact(Skip = "Remove to run test")>]
|
43
|
+
let ``Medium deficient number is classified correctly`` () =
|
44
|
+
classify 32 |> should equal (Some Deficient)
|
45
|
+
|
46
|
+
[<Fact(Skip = "Remove to run test")>]
|
47
|
+
let ``Large deficient number is classified correctly`` () =
|
48
|
+
classify 33550337 |> should equal (Some Deficient)
|
49
|
+
|
50
|
+
[<Fact(Skip = "Remove to run test")>]
|
51
|
+
let ``Edge case (no factors other than itself) is classified correctly`` () =
|
52
|
+
classify 1 |> should equal (Some Deficient)
|
53
|
+
|
54
|
+
[<Fact(Skip = "Remove to run test")>]
|
55
|
+
let ``Zero is rejected (not a natural number)`` () =
|
56
|
+
classify 0 |> should equal None
|
57
|
+
|
58
|
+
[<Fact(Skip = "Remove to run test")>]
|
59
|
+
let ``Negative integer is rejected (not a natural number)`` () =
|
60
|
+
classify -1 |> should equal None
|
61
|
+
|
@@ -176,8 +176,26 @@ type Minesweeper() =
|
|
176
176
|
| true -> Some "string list"
|
177
177
|
| false -> None
|
178
178
|
|
179
|
+
type NthPrime() =
|
180
|
+
inherit Exercise()
|
181
|
+
|
182
|
+
override this.RenderExpected (canonicalDataCase, key, value) =
|
183
|
+
match string value with
|
184
|
+
| "False" -> "None"
|
185
|
+
| _ -> value :?> int64 |> sprintf "(Some %d)"
|
186
|
+
|
179
187
|
type Pangram() =
|
180
188
|
inherit Exercise()
|
189
|
+
|
190
|
+
type PerfectNumbers() =
|
191
|
+
inherit Exercise()
|
192
|
+
|
193
|
+
override this.RenderExpected (canonicalDataCase, key, value) =
|
194
|
+
match value |> string with
|
195
|
+
| "perfect" -> "(Some Perfect)"
|
196
|
+
| "abundant" -> "(Some Abundant)"
|
197
|
+
| "deficient" -> "(Some Deficient)"
|
198
|
+
| _ -> "None"
|
181
199
|
|
182
200
|
type PhoneNumber() =
|
183
201
|
inherit Exercise()
|
data/tracks/gnu-apl/config.json
CHANGED
@@ -17,6 +17,27 @@
|
|
17
17
|
"core": true,
|
18
18
|
"difficulty": 1,
|
19
19
|
"topics": ["conditions", "dates"]
|
20
|
+
},
|
21
|
+
{
|
22
|
+
"uuid": "bc2c01ff-0e38-b280-5047-2014e184502c67074c0",
|
23
|
+
"slug": "hamming",
|
24
|
+
"core": true,
|
25
|
+
"difficulty": 1,
|
26
|
+
"topics": ["strings", "arrays", "differences"]
|
27
|
+
},
|
28
|
+
{
|
29
|
+
"uuid": "05764380-02d5-2a80-0741-3baa1e10b36b61333ec",
|
30
|
+
"slug": "rna-transcription",
|
31
|
+
"core": true,
|
32
|
+
"difficulty": 1,
|
33
|
+
"topics": ["strings", "arrays", "substitution", "error handling"]
|
34
|
+
},
|
35
|
+
{
|
36
|
+
"uuid": "17c7a5fc-0666-8780-a4f6-fe32a590bb970725b2e",
|
37
|
+
"slug": "raindrops",
|
38
|
+
"core": true,
|
39
|
+
"difficulty": 1,
|
40
|
+
"topics": ["strings", "residue", "conditions"]
|
20
41
|
}
|
21
42
|
],
|
22
43
|
"deprecated": [
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# Hamming
|
2
|
+
|
3
|
+
Calculate the Hamming difference between two DNA strands.
|
4
|
+
|
5
|
+
A mutation is simply a mistake that occurs during the creation or
|
6
|
+
copying of a nucleic acid, in particular DNA. Because nucleic acids are
|
7
|
+
vital to cellular functions, mutations tend to cause a ripple effect
|
8
|
+
throughout the cell. Although mutations are technically mistakes, a very
|
9
|
+
rare mutation may equip the cell with a beneficial attribute. In fact,
|
10
|
+
the macro effects of evolution are attributable by the accumulated
|
11
|
+
result of beneficial microscopic mutations over many generations.
|
12
|
+
|
13
|
+
The simplest and most common type of nucleic acid mutation is a point
|
14
|
+
mutation, which replaces one base with another at a single nucleotide.
|
15
|
+
|
16
|
+
By counting the number of differences between two homologous DNA strands
|
17
|
+
taken from different genomes with a common ancestor, we get a measure of
|
18
|
+
the minimum number of point mutations that could have occurred on the
|
19
|
+
evolutionary path between the two strands.
|
20
|
+
|
21
|
+
This is called the 'Hamming distance'.
|
22
|
+
|
23
|
+
It is found by comparing two DNA strands and counting how many of the
|
24
|
+
nucleotides are different from their equivalent in the other string.
|
25
|
+
|
26
|
+
GAGCCTACTAACGGGAT
|
27
|
+
CATCGTAATGACGGCCT
|
28
|
+
^ ^ ^ ^ ^ ^^
|
29
|
+
|
30
|
+
The Hamming distance between these two DNA strands is 7.
|
31
|
+
|
32
|
+
# Implementation notes
|
33
|
+
|
34
|
+
The Hamming distance is only defined for sequences of equal length. This means
|
35
|
+
that based on the definition, each language could deal with getting sequences
|
36
|
+
of equal length differently.
|
37
|
+
## Source
|
38
|
+
|
39
|
+
The Calculating Point Mutations problem at Rosalind [http://rosalind.info/problems/hamm/](http://rosalind.info/problems/hamm/)
|
40
|
+
|
41
|
+
## Submitting Incomplete Solutions
|
42
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,75 @@
|
|
1
|
+
log←'./hamming.tc.log'
|
2
|
+
⍎ ')COPY ',(⎕FIO 30),'/../../test.apl'
|
3
|
+
|
4
|
+
test∆copy_relative 'hamming.apl'
|
5
|
+
test∆clear_log log
|
6
|
+
|
7
|
+
⍝ ∇distance
|
8
|
+
|
9
|
+
⍝ empty strands
|
10
|
+
1⎕CR '' distance ''
|
11
|
+
0
|
12
|
+
|
13
|
+
⍝ identical strands
|
14
|
+
1⎕CR 'A' distance 'A'
|
15
|
+
0
|
16
|
+
|
17
|
+
⍝ long identical strands
|
18
|
+
1⎕CR 'GGACTGA' distance 'GGACTGA'
|
19
|
+
0
|
20
|
+
|
21
|
+
⍝ complete distance in single-nucleotide strands
|
22
|
+
1⎕CR 'A' distance 'G'
|
23
|
+
1
|
24
|
+
|
25
|
+
⍝ complete distance in small strands
|
26
|
+
'AG' distance 'CT'
|
27
|
+
2
|
28
|
+
|
29
|
+
⍝ small distance in small strands
|
30
|
+
'AT' distance 'CT'
|
31
|
+
1
|
32
|
+
|
33
|
+
⍝ small distance
|
34
|
+
'GGACG' distance 'GGTCG'
|
35
|
+
1
|
36
|
+
|
37
|
+
⍝ small distance in long strands
|
38
|
+
'ACCAGGG' distance 'ACTATGG'
|
39
|
+
2
|
40
|
+
|
41
|
+
⍝ non-unique character in first strand
|
42
|
+
'AGA' distance 'AGG'
|
43
|
+
1
|
44
|
+
|
45
|
+
⍝ non-unique character in second strand
|
46
|
+
'AGG' distance 'AGA'
|
47
|
+
1
|
48
|
+
|
49
|
+
⍝ same nucleotides in different positions
|
50
|
+
'TAG' distance 'GAT'
|
51
|
+
2
|
52
|
+
|
53
|
+
⍝ large distance
|
54
|
+
'GATACA' distance 'GCATAA'
|
55
|
+
4
|
56
|
+
|
57
|
+
⍝ large distance in off-by-one strand
|
58
|
+
'GGACGGATTCTG' distance 'AGGACGGATTCT'
|
59
|
+
9
|
60
|
+
|
61
|
+
⍝ disallow first strand longer
|
62
|
+
1⎕CR test∆try '''AATG'' distance ''AAA'''
|
63
|
+
1 'LENGTH ERROR'
|
64
|
+
|
65
|
+
⍝ disallow single vs. multiple letters
|
66
|
+
1⎕CR test∆try '''AATG'' distance ''A'''
|
67
|
+
1 'LENGTH ERROR'
|
68
|
+
1⎕CR test∆try '''A'' distance ''AAA'''
|
69
|
+
1 'LENGTH ERROR'
|
70
|
+
|
71
|
+
⍝ disallow second strand longer
|
72
|
+
1⎕CR test∆try '''ATA'' distance ''AGTG'''
|
73
|
+
1 'LENGTH ERROR'
|
74
|
+
|
75
|
+
test∆show_log log
|
@@ -1,5 +1,21 @@
|
|
1
|
-
#
|
1
|
+
# Hello World
|
2
2
|
|
3
|
+
The classical introductory exercise. Just say "Hello, World!".
|
4
|
+
|
5
|
+
["Hello, World!"](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program) is
|
6
|
+
the traditional first program for beginning programming in a new language
|
7
|
+
or environment.
|
8
|
+
|
9
|
+
The objectives are simple:
|
10
|
+
|
11
|
+
- Write a function that returns the string "Hello, World!".
|
12
|
+
- Run the test suite and make sure that it succeeds.
|
13
|
+
- Submit your solution and check it at the website.
|
14
|
+
|
15
|
+
If everything goes well, you will be ready to fetch your first real exercise.
|
16
|
+
## Source
|
17
|
+
|
18
|
+
This is an exercise to introduce users to using Exercism [http://en.wikipedia.org/wiki/%22Hello,_world!%22_program](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program)
|
3
19
|
|
4
20
|
## Submitting Incomplete Solutions
|
5
21
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# Leap
|
2
|
+
|
3
|
+
Given a year, report if it is a leap year.
|
4
|
+
|
5
|
+
The tricky thing here is that a leap year in the Gregorian calendar occurs:
|
6
|
+
|
7
|
+
```plain
|
8
|
+
on every year that is evenly divisible by 4
|
9
|
+
except every year that is evenly divisible by 100
|
10
|
+
unless the year is also evenly divisible by 400
|
11
|
+
```
|
12
|
+
|
13
|
+
For example, 1997 is not a leap year, but 1996 is. 1900 is not a leap
|
14
|
+
year, but 2000 is.
|
15
|
+
|
16
|
+
If your language provides a method in the standard library that does
|
17
|
+
this look-up, pretend it doesn't exist and implement it yourself.
|
18
|
+
|
19
|
+
## Notes
|
20
|
+
|
21
|
+
Though our exercise adopts some very simple rules, there is more to
|
22
|
+
learn!
|
23
|
+
|
24
|
+
For a delightful, four minute explanation of the whole leap year
|
25
|
+
phenomenon, go watch [this youtube video][video].
|
26
|
+
|
27
|
+
[video]: http://www.youtube.com/watch?v=xX96xng7sAE
|
28
|
+
## Source
|
29
|
+
|
30
|
+
JavaRanch Cattle Drive, exercise 3 [http://www.javaranch.com/leap.jsp](http://www.javaranch.com/leap.jsp)
|
31
|
+
|
32
|
+
## Submitting Incomplete Solutions
|
33
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|