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
|
@@ -4,7 +4,7 @@ Given a year, report if it is a leap year.
|
|
|
4
4
|
|
|
5
5
|
The tricky thing here is that a leap year in the Gregorian calendar occurs:
|
|
6
6
|
|
|
7
|
-
```
|
|
7
|
+
```text
|
|
8
8
|
on every year that is evenly divisible by 4
|
|
9
9
|
except every year that is evenly divisible by 100
|
|
10
10
|
unless the year is also evenly divisible by 400
|
|
@@ -2,18 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
Implement a doubly linked list.
|
|
4
4
|
|
|
5
|
-
Like an array, a linked list is a simple linear data structure. Several
|
|
6
|
-
common data types can be implemented using linked lists, like queues,
|
|
5
|
+
Like an array, a linked list is a simple linear data structure. Several
|
|
6
|
+
common data types can be implemented using linked lists, like queues,
|
|
7
7
|
stacks, and associative arrays.
|
|
8
8
|
|
|
9
|
-
A linked list is a collection of data elements called *nodes*. In a
|
|
10
|
-
*singly linked list* each node holds a value and a link to the next node.
|
|
11
|
-
In a *doubly linked list* each node also holds a link to the previous
|
|
9
|
+
A linked list is a collection of data elements called *nodes*. In a
|
|
10
|
+
*singly linked list* each node holds a value and a link to the next node.
|
|
11
|
+
In a *doubly linked list* each node also holds a link to the previous
|
|
12
12
|
node.
|
|
13
13
|
|
|
14
|
-
You will write an implementation of a doubly linked list. Implement a
|
|
15
|
-
Node to hold a value and pointers to the next and previous nodes. Then
|
|
16
|
-
implement a List which holds references to the first and last node and
|
|
14
|
+
You will write an implementation of a doubly linked list. Implement a
|
|
15
|
+
Node to hold a value and pointers to the next and previous nodes. Then
|
|
16
|
+
implement a List which holds references to the first and last node and
|
|
17
17
|
offers an array-like interface for adding and removing items:
|
|
18
18
|
|
|
19
19
|
* `push` (*insert value at back*);
|
|
@@ -21,8 +21,8 @@ offers an array-like interface for adding and removing items:
|
|
|
21
21
|
* `shift` (*remove value at front*).
|
|
22
22
|
* `unshift` (*insert value at front*);
|
|
23
23
|
|
|
24
|
-
To keep your implementation simple, the tests will not cover error
|
|
25
|
-
conditions. Specifically: `pop` or `shift` will never be called on an
|
|
24
|
+
To keep your implementation simple, the tests will not cover error
|
|
25
|
+
conditions. Specifically: `pop` or `shift` will never be called on an
|
|
26
26
|
empty list.
|
|
27
27
|
|
|
28
28
|
If you want to know more about linked lists, check [Wikipedia](https://en.wikipedia.org/wiki/Linked_list).
|
|
@@ -18,27 +18,27 @@ are disallowed.
|
|
|
18
18
|
|
|
19
19
|
## Example 1: valid credit card number
|
|
20
20
|
|
|
21
|
-
```
|
|
21
|
+
```text
|
|
22
22
|
4539 1488 0343 6467
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
The first step of the Luhn algorithm is to double every second digit,
|
|
26
26
|
starting from the right. We will be doubling
|
|
27
27
|
|
|
28
|
-
```
|
|
28
|
+
```text
|
|
29
29
|
4_3_ 1_8_ 0_4_ 6_6_
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
If doubling the number results in a number greater than 9 then subtract 9
|
|
33
33
|
from the product. The results of our doubling:
|
|
34
34
|
|
|
35
|
-
```
|
|
35
|
+
```text
|
|
36
36
|
8569 2478 0383 3437
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
Then sum all of the digits:
|
|
40
40
|
|
|
41
|
-
```
|
|
41
|
+
```text
|
|
42
42
|
8+5+6+9+2+4+7+8+0+3+8+3+3+4+3+7 = 80
|
|
43
43
|
```
|
|
44
44
|
|
|
@@ -46,19 +46,19 @@ If the sum is evenly divisible by 10, then the number is valid. This number is v
|
|
|
46
46
|
|
|
47
47
|
## Example 2: invalid credit card number
|
|
48
48
|
|
|
49
|
-
```
|
|
49
|
+
```text
|
|
50
50
|
8273 1232 7352 0569
|
|
51
51
|
```
|
|
52
52
|
|
|
53
53
|
Double the second digits, starting from the right
|
|
54
54
|
|
|
55
|
-
```
|
|
55
|
+
```text
|
|
56
56
|
7253 2262 5312 0539
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
Sum the digits
|
|
60
60
|
|
|
61
|
-
```
|
|
61
|
+
```text
|
|
62
62
|
7+2+5+3+2+2+6+2+5+3+1+2+0+5+3+9 = 57
|
|
63
63
|
```
|
|
64
64
|
|
|
@@ -18,10 +18,9 @@ end in '-teenth'. Therefore, one is guaranteed that each day of the week
|
|
|
18
18
|
(Monday, Tuesday, ...) will have exactly one date that is named with '-teenth'
|
|
19
19
|
in every month.
|
|
20
20
|
|
|
21
|
-
Given examples of a meetup dates, each containing a month, day, year, and descriptor
|
|
21
|
+
Given examples of a meetup dates, each containing a month, day, year, and descriptor
|
|
22
22
|
(first, second, teenth, etc), calculate the date of the actual meetup.
|
|
23
23
|
For example, if given "First Monday of January 2017", the correct meetup date is 2017/1/2
|
|
24
|
-
|
|
25
24
|
|
|
26
25
|
## Running the tests
|
|
27
26
|
|
|
@@ -1,30 +1,16 @@
|
|
|
1
1
|
# Nucleotide Count
|
|
2
2
|
|
|
3
|
-
Given a DNA string, compute how many times each nucleotide occurs in the string.
|
|
3
|
+
Given a single stranded DNA string, compute how many times each nucleotide occurs in the string.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Each symbol represents a nucleotide, which is a fancy name for the
|
|
9
|
-
particular molecules that happen to make up a large part of DNA.
|
|
10
|
-
|
|
11
|
-
Shortest intro to biochemistry EVAR:
|
|
5
|
+
The genetic language of every living thing on the planet is DNA.
|
|
6
|
+
DNA is a large molecule that is built from an extremely long sequence of individual elements called nucleotides.
|
|
7
|
+
4 types exist in DNA and these differ only slightly and can be represented as the following symbols: 'A' for adenine, 'C' for cytosine, 'G' for guanine, and 'T' thymine.
|
|
12
8
|
|
|
9
|
+
Here is an analogy:
|
|
13
10
|
- twigs are to birds nests as
|
|
14
|
-
- nucleotides are to DNA
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
- oh crap lipids
|
|
18
|
-
|
|
19
|
-
I'm not going to talk about lipids because they're crazy complex.
|
|
20
|
-
|
|
21
|
-
So back to nucleotides.
|
|
22
|
-
|
|
23
|
-
DNA contains four types of them: adenine (`A`), cytosine (`C`), guanine
|
|
24
|
-
(`G`), and thymine (`T`).
|
|
25
|
-
|
|
26
|
-
RNA contains a slightly different set of nucleotides, but we don't care
|
|
27
|
-
about that for now.
|
|
11
|
+
- nucleotides are to DNA as
|
|
12
|
+
- legos are to lego houses as
|
|
13
|
+
- words are to sentences as...
|
|
28
14
|
|
|
29
15
|
## Running the tests
|
|
30
16
|
|
|
@@ -9,7 +9,7 @@ To begin with, convert a simple binary font to a string containing 0 or 1.
|
|
|
9
9
|
|
|
10
10
|
The binary font uses pipes and underscores, four rows high and three columns wide.
|
|
11
11
|
|
|
12
|
-
```
|
|
12
|
+
```text
|
|
13
13
|
_ #
|
|
14
14
|
| | # zero.
|
|
15
15
|
|_| #
|
|
@@ -18,7 +18,7 @@ The binary font uses pipes and underscores, four rows high and three columns wid
|
|
|
18
18
|
|
|
19
19
|
Is converted to "0"
|
|
20
20
|
|
|
21
|
-
```
|
|
21
|
+
```text
|
|
22
22
|
#
|
|
23
23
|
| # one.
|
|
24
24
|
| #
|
|
@@ -39,7 +39,7 @@ Update your program to recognize multi-character binary strings, replacing garbl
|
|
|
39
39
|
|
|
40
40
|
Update your program to recognize all numbers 0 through 9, both individually and as part of a larger string.
|
|
41
41
|
|
|
42
|
-
```
|
|
42
|
+
```text
|
|
43
43
|
_
|
|
44
44
|
_|
|
|
45
45
|
|_
|
|
@@ -48,7 +48,7 @@ Update your program to recognize all numbers 0 through 9, both individually and
|
|
|
48
48
|
|
|
49
49
|
Is converted to "2"
|
|
50
50
|
|
|
51
|
-
```
|
|
51
|
+
```text
|
|
52
52
|
_ _ _ _ _ _ _ _ #
|
|
53
53
|
| _| _||_||_ |_ ||_||_|| | # decimal numbers.
|
|
54
54
|
||_ _| | _||_| ||_| _||_| #
|
|
@@ -61,7 +61,7 @@ Is converted to "1234567890"
|
|
|
61
61
|
|
|
62
62
|
Update your program to handle multiple numbers, one per line. When converting several lines, join the lines with commas.
|
|
63
63
|
|
|
64
|
-
```
|
|
64
|
+
```text
|
|
65
65
|
_ _
|
|
66
66
|
| _| _|
|
|
67
67
|
||_ _|
|
|
@@ -8,11 +8,13 @@ Implement octal to decimal conversion. Given an octal input
|
|
|
8
8
|
string, your program should produce a decimal output.
|
|
9
9
|
|
|
10
10
|
## Note
|
|
11
|
+
|
|
11
12
|
- Implement the conversion yourself.
|
|
12
13
|
Do not use something else to perform the conversion for you.
|
|
13
14
|
- Treat invalid input as octal 0.
|
|
14
15
|
|
|
15
16
|
## About Octal (Base-8)
|
|
17
|
+
|
|
16
18
|
Decimal is a base-10 system.
|
|
17
19
|
|
|
18
20
|
A number 233 in base 10 notation can be understood
|
|
@@ -25,7 +27,8 @@ as a linear combination of powers of 10:
|
|
|
25
27
|
- All these values are summed.
|
|
26
28
|
|
|
27
29
|
So:
|
|
28
|
-
|
|
30
|
+
|
|
31
|
+
```text
|
|
29
32
|
233 # decimal
|
|
30
33
|
= 2*10^2 + 3*10^1 + 3*10^0
|
|
31
34
|
= 2*100 + 3*10 + 3*1
|
|
@@ -34,7 +37,8 @@ So:
|
|
|
34
37
|
Octal is similar, but uses powers of 8 rather than powers of 10.
|
|
35
38
|
|
|
36
39
|
So:
|
|
37
|
-
|
|
40
|
+
|
|
41
|
+
```text
|
|
38
42
|
233 # octal
|
|
39
43
|
= 2*8^2 + 3*8^1 + 3*8^0
|
|
40
44
|
= 2*64 + 3*8 + 3*1
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Determine if a sentence is a pangram. A pangram (Greek: παν γράμμα, pan gramma,
|
|
4
4
|
"every letter") is a sentence using every letter of the alphabet at least once.
|
|
5
|
-
The best known English pangram is:
|
|
5
|
+
The best known English pangram is:
|
|
6
6
|
> The quick brown fox jumps over the lazy dog.
|
|
7
7
|
|
|
8
8
|
The alphabet used consists of ASCII letters `a` to `z`, inclusive, and is case
|
|
@@ -5,7 +5,7 @@ Nicomachus' (60 - 120 CE) classification scheme for natural numbers.
|
|
|
5
5
|
|
|
6
6
|
The Greek mathematician [Nicomachus](https://en.wikipedia.org/wiki/Nicomachus) devised a classification scheme for natural numbers, identifying each as belonging uniquely to the categories of **perfect**, **abundant**, or **deficient** based on their [aliquot sum](https://en.wikipedia.org/wiki/Aliquot_sum). The aliquot sum is defined as the sum of the factors of a number not including the number itself. For example, the aliquot sum of 15 is (1 + 3 + 5) = 9
|
|
7
7
|
|
|
8
|
-
- **Perfect**: aliquot sum = number
|
|
8
|
+
- **Perfect**: aliquot sum = number
|
|
9
9
|
- 6 is a perfect number because (1 + 2 + 3) = 6
|
|
10
10
|
- 28 is a perfect number because (1 + 2 + 4 + 7 + 14) = 28
|
|
11
11
|
- **Abundant**: aliquot sum > number
|
|
@@ -14,7 +14,7 @@ The Greek mathematician [Nicomachus](https://en.wikipedia.org/wiki/Nicomachus) d
|
|
|
14
14
|
- **Deficient**: aliquot sum < number
|
|
15
15
|
- 8 is a deficient number because (1 + 2 + 4) = 7
|
|
16
16
|
- Prime numbers are deficient
|
|
17
|
-
|
|
17
|
+
|
|
18
18
|
Implement a way to determine whether a given number is **perfect**. Depending on your language track, you may also need to implement a way to determine whether a given number is **abundant** or **deficient**.
|
|
19
19
|
|
|
20
20
|
## Running the tests
|
|
@@ -6,11 +6,12 @@ The **North American Numbering Plan (NANP)** is a telephone numbering system use
|
|
|
6
6
|
|
|
7
7
|
NANP numbers are ten-digit numbers consisting of a three-digit Numbering Plan Area code, commonly known as *area code*, followed by a seven-digit local number. The first three digits of the local number represent the *exchange code*, followed by the unique four-digit number which is the *subscriber number*.
|
|
8
8
|
|
|
9
|
-
|
|
10
9
|
The format is usually represented as
|
|
11
|
-
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
12
|
(NXX)-NXX-XXXX
|
|
13
13
|
```
|
|
14
|
+
|
|
14
15
|
where `N` is any digit from 2 through 9 and `X` is any digit from 0 through 9.
|
|
15
16
|
|
|
16
17
|
Your task is to clean up differently formated telephone numbers by removing punctuation and the country code (1) if present.
|
|
@@ -8,7 +8,7 @@ This exercise is all about re-orientating a graph to see things from a different
|
|
|
8
8
|
point of view. For example family trees are usually presented from the
|
|
9
9
|
ancestor's perspective:
|
|
10
10
|
|
|
11
|
-
```
|
|
11
|
+
```text
|
|
12
12
|
+------0------+
|
|
13
13
|
| | |
|
|
14
14
|
+-1-+ +-2-+ +-3-+
|
|
@@ -20,7 +20,7 @@ But the same information can be presented from the perspective of any other node
|
|
|
20
20
|
in the graph, by pulling it up to the root and dragging its relationships along
|
|
21
21
|
with it. So the same graph from 6's perspective would look like:
|
|
22
22
|
|
|
23
|
-
```
|
|
23
|
+
```text
|
|
24
24
|
6
|
|
25
25
|
|
|
|
26
26
|
+-----2-----+
|
|
@@ -10,17 +10,17 @@ Codons: `"AUG", "UUU", "UCU"`
|
|
|
10
10
|
=> which become a polypeptide with the following sequence =>
|
|
11
11
|
|
|
12
12
|
Protein: `"Methionine", "Phenylalanine", "Serine"`
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
There are 64 codons which in turn correspond to 20 amino acids; however, all of the codon sequences and resulting amino acids are not important in this exercise. If it works for one codon, the program should work for all of them.
|
|
15
|
-
However, feel free to expand the list in the test suite to include them all.
|
|
15
|
+
However, feel free to expand the list in the test suite to include them all.
|
|
16
16
|
|
|
17
|
-
There are also
|
|
17
|
+
There are also three terminating codons (also known as 'STOP' codons); if any of these codons are encountered (by the ribosome), all translation ends and the protein is terminated.
|
|
18
18
|
|
|
19
19
|
All subsequent codons after are ignored, like this:
|
|
20
20
|
|
|
21
21
|
RNA: `"AUGUUUUCUUAAAUG"` =>
|
|
22
22
|
|
|
23
|
-
Codons: `"AUG", "UUU", "UCU", "UAG", "AUG"` =>
|
|
23
|
+
Codons: `"AUG", "UUU", "UCU", "UAG", "AUG"` =>
|
|
24
24
|
|
|
25
25
|
Protein: `"Methionine", "Phenylalanine", "Serine"`
|
|
26
26
|
|
|
@@ -39,7 +39,6 @@ UGU, UGC | Cysteine
|
|
|
39
39
|
UGG | Tryptophan
|
|
40
40
|
UAA, UAG, UGA | STOP
|
|
41
41
|
|
|
42
|
-
|
|
43
42
|
Learn more about [protein translation on Wikipedia](http://en.wikipedia.org/wiki/Translation_(biology))
|
|
44
43
|
|
|
45
44
|
## Running the tests
|
|
@@ -11,41 +11,46 @@ Finally the message is then read off in rows.
|
|
|
11
11
|
|
|
12
12
|
For example, using three "rails" and the message "WE ARE DISCOVERED FLEE AT ONCE",
|
|
13
13
|
the cipherer writes out:
|
|
14
|
-
|
|
14
|
+
|
|
15
|
+
```text
|
|
15
16
|
W . . . E . . . C . . . R . . . L . . . T . . . E
|
|
16
17
|
. E . R . D . S . O . E . E . F . E . A . O . C .
|
|
17
18
|
. . A . . . I . . . V . . . D . . . E . . . N . .
|
|
18
19
|
```
|
|
19
20
|
|
|
20
21
|
Then reads off:
|
|
21
|
-
|
|
22
|
+
|
|
23
|
+
```text
|
|
22
24
|
WECRLTEERDSOEEFEAOCAIVDEN
|
|
23
25
|
```
|
|
24
26
|
|
|
25
|
-
|
|
26
27
|
To decrypt a message you take the zig-zag shape and fill the ciphertext along the rows.
|
|
27
|
-
|
|
28
|
+
|
|
29
|
+
```text
|
|
28
30
|
? . . . ? . . . ? . . . ? . . . ? . . . ? . . . ?
|
|
29
31
|
. ? . ? . ? . ? . ? . ? . ? . ? . ? . ? . ? . ? .
|
|
30
32
|
. . ? . . . ? . . . ? . . . ? . . . ? . . . ? . .
|
|
31
33
|
```
|
|
32
34
|
|
|
33
35
|
The first row has seven spots that can be filled with "WECRLTE".
|
|
34
|
-
|
|
36
|
+
|
|
37
|
+
```text
|
|
35
38
|
W . . . E . . . C . . . R . . . L . . . T . . . E
|
|
36
39
|
. ? . ? . ? . ? . ? . ? . ? . ? . ? . ? . ? . ? .
|
|
37
40
|
. . ? . . . ? . . . ? . . . ? . . . ? . . . ? . .
|
|
38
41
|
```
|
|
39
42
|
|
|
40
43
|
Now the 2nd row takes "ERDSOEEFEAOC".
|
|
41
|
-
|
|
44
|
+
|
|
45
|
+
```text
|
|
42
46
|
W . . . E . . . C . . . R . . . L . . . T . . . E
|
|
43
47
|
. E . R . D . S . O . E . E . F . E . A . O . C .
|
|
44
48
|
. . ? . . . ? . . . ? . . . ? . . . ? . . . ? . .
|
|
45
49
|
```
|
|
46
50
|
|
|
47
51
|
Leaving "AIVDEN" for the last row.
|
|
48
|
-
|
|
52
|
+
|
|
53
|
+
```text
|
|
49
54
|
W . . . E . . . C . . . R . . . L . . . T . . . E
|
|
50
55
|
. E . R . D . S . O . E . E . F . E . A . O . C .
|
|
51
56
|
. . A . . . I . . . V . . . D . . . E . . . N . .
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# React
|
|
2
|
+
|
|
3
|
+
Implement a basic reactive system.
|
|
4
|
+
|
|
5
|
+
Reactive programming is a programming paradigm that focuses on how values
|
|
6
|
+
are computed in terms of each other to allow a change to one value to
|
|
7
|
+
automatically propagate to other values, like in a spreadsheet.
|
|
8
|
+
|
|
9
|
+
Implement a basic reactive system with cells with settable values ("input"
|
|
10
|
+
cells) and cells with values computed in terms of other cells ("compute"
|
|
11
|
+
cells). Implement updates so that when an input value is changed, values
|
|
12
|
+
propagate to reach a new stable system state.
|
|
13
|
+
|
|
14
|
+
In addition, compute cells should allow for registering change notification
|
|
15
|
+
callbacks. Call a cell’s callbacks when the cell’s value in a new stable
|
|
16
|
+
state has changed from the previous stable state.
|
|
17
|
+
|
|
18
|
+
## Running the tests
|
|
19
|
+
|
|
20
|
+
To run the tests, run the command `busted .` from within the exercise directory.
|
|
21
|
+
|
|
22
|
+
## Further information
|
|
23
|
+
|
|
24
|
+
For more detailed information about the Lua track, including how to get help if
|
|
25
|
+
you're having trouble, please visit the exercism.io [Lua language page](http://exercism.io/languages/lua/about).
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
## Submitting Incomplete Solutions
|
|
29
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|