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
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
{{ .Spec.Description -}}
|
|
4
4
|
{{- with .Hints }}
|
|
5
|
+
# Java Tips
|
|
6
|
+
|
|
5
7
|
{{ . }}
|
|
6
8
|
{{ end }}
|
|
7
9
|
{{- with .TrackInsert }}
|
|
@@ -13,4 +15,5 @@
|
|
|
13
15
|
{{ . }}
|
|
14
16
|
{{ end }}
|
|
15
17
|
## Submitting Incomplete Solutions
|
|
18
|
+
|
|
16
19
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@@ -25,19 +25,20 @@ Keep your hands off that collect/map/fmap/whatchamacallit functionality
|
|
|
25
25
|
provided by your standard library!
|
|
26
26
|
Solve this one yourself using other basic tools instead.
|
|
27
27
|
|
|
28
|
+
# Running the tests
|
|
28
29
|
|
|
29
|
-
|
|
30
|
+
You can run all the tests for an exercise by entering
|
|
30
31
|
|
|
31
32
|
```sh
|
|
32
33
|
$ gradle test
|
|
33
34
|
```
|
|
34
35
|
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
in your terminal.
|
|
37
37
|
|
|
38
38
|
## Source
|
|
39
39
|
|
|
40
40
|
Conversation with James Edward Gray II [https://twitter.com/jeg2](https://twitter.com/jeg2)
|
|
41
41
|
|
|
42
42
|
## Submitting Incomplete Solutions
|
|
43
|
+
|
|
43
44
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
File without changes
|
|
@@ -7,19 +7,20 @@ Techies love their TLA (Three Letter Acronyms)!
|
|
|
7
7
|
Help generate some jargon by writing a program that converts a long name
|
|
8
8
|
like Portable Network Graphics to its acronym (PNG).
|
|
9
9
|
|
|
10
|
+
# Running the tests
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
You can run all the tests for an exercise by entering
|
|
12
13
|
|
|
13
14
|
```sh
|
|
14
15
|
$ gradle test
|
|
15
16
|
```
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
in your terminal.
|
|
19
19
|
|
|
20
20
|
## Source
|
|
21
21
|
|
|
22
22
|
Julien Vanier [https://github.com/monkbroc](https://github.com/monkbroc)
|
|
23
23
|
|
|
24
24
|
## Submitting Incomplete Solutions
|
|
25
|
+
|
|
25
26
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
File without changes
|
|
@@ -31,16 +31,17 @@ I think you got the idea!
|
|
|
31
31
|
|
|
32
32
|
*Yes. Those three numbers above are exactly the same. Congratulations!*
|
|
33
33
|
|
|
34
|
+
# Running the tests
|
|
34
35
|
|
|
35
|
-
|
|
36
|
+
You can run all the tests for an exercise by entering
|
|
36
37
|
|
|
37
38
|
```sh
|
|
38
39
|
$ gradle test
|
|
39
40
|
```
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
in your terminal.
|
|
43
43
|
|
|
44
44
|
|
|
45
45
|
## Submitting Incomplete Solutions
|
|
46
|
+
|
|
46
47
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@@ -29,19 +29,20 @@ allergens that score 256, 512, 1024, etc.). Your program should
|
|
|
29
29
|
ignore those components of the score. For example, if the allergy
|
|
30
30
|
score is 257, your program should only report the eggs (1) allergy.
|
|
31
31
|
|
|
32
|
+
# Running the tests
|
|
32
33
|
|
|
33
|
-
|
|
34
|
+
You can run all the tests for an exercise by entering
|
|
34
35
|
|
|
35
36
|
```sh
|
|
36
37
|
$ gradle test
|
|
37
38
|
```
|
|
38
39
|
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
in your terminal.
|
|
41
41
|
|
|
42
42
|
## Source
|
|
43
43
|
|
|
44
44
|
Jumpstart Lab Warm-up [http://jumpstartlab.com](http://jumpstartlab.com)
|
|
45
45
|
|
|
46
46
|
## Submitting Incomplete Solutions
|
|
47
|
+
|
|
47
48
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@@ -6,19 +6,20 @@ Given `"listen"` and a list of candidates like `"enlists" "google"
|
|
|
6
6
|
"inlets" "banana"` the program should return a list containing
|
|
7
7
|
`"inlets"`.
|
|
8
8
|
|
|
9
|
+
# Running the tests
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
You can run all the tests for an exercise by entering
|
|
11
12
|
|
|
12
13
|
```sh
|
|
13
14
|
$ gradle test
|
|
14
15
|
```
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
in your terminal.
|
|
18
18
|
|
|
19
19
|
## Source
|
|
20
20
|
|
|
21
21
|
Inspired by the Extreme Startup game [https://github.com/rchatley/extreme_startup](https://github.com/rchatley/extreme_startup)
|
|
22
22
|
|
|
23
23
|
## Submitting Incomplete Solutions
|
|
24
|
+
|
|
24
25
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@@ -28,19 +28,20 @@ things based on word boundaries.
|
|
|
28
28
|
- Decoding `gvhg` gives `test`
|
|
29
29
|
- Decoding `gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt` gives `thequickbrownfoxjumpsoverthelazydog`
|
|
30
30
|
|
|
31
|
+
# Running the tests
|
|
31
32
|
|
|
32
|
-
|
|
33
|
+
You can run all the tests for an exercise by entering
|
|
33
34
|
|
|
34
35
|
```sh
|
|
35
36
|
$ gradle test
|
|
36
37
|
```
|
|
37
38
|
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
in your terminal.
|
|
40
40
|
|
|
41
41
|
## Source
|
|
42
42
|
|
|
43
43
|
Wikipedia [http://en.wikipedia.org/wiki/Atbash](http://en.wikipedia.org/wiki/Atbash)
|
|
44
44
|
|
|
45
45
|
## Submitting Incomplete Solutions
|
|
46
|
+
|
|
46
47
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@@ -26,6 +26,8 @@ it.
|
|
|
26
26
|
|
|
27
27
|
Have fun!
|
|
28
28
|
|
|
29
|
+
# Java Tips
|
|
30
|
+
|
|
29
31
|
This exercise introduces [concurrency](https://docs.oracle.com/javase/tutorial/essential/concurrency/index.html).
|
|
30
32
|
To pass the last test you might find the
|
|
31
33
|
[`synchronized` keyword or locks](https://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html) useful.
|
|
@@ -38,16 +40,17 @@ no concurrent modification attempt. It is unlikely that this will occur several
|
|
|
38
40
|
in a row since the order the code is executed should vary every time you run the test. So if you run the last test a
|
|
39
41
|
couple of times and it passes every time then you can be reasonably sure that your implementation is correct.
|
|
40
42
|
|
|
43
|
+
# Running the tests
|
|
41
44
|
|
|
42
|
-
|
|
45
|
+
You can run all the tests for an exercise by entering
|
|
43
46
|
|
|
44
47
|
```sh
|
|
45
48
|
$ gradle test
|
|
46
49
|
```
|
|
47
50
|
|
|
48
|
-
|
|
49
|
-
|
|
51
|
+
in your terminal.
|
|
50
52
|
|
|
51
53
|
|
|
52
54
|
## Submitting Incomplete Solutions
|
|
55
|
+
|
|
53
56
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@@ -320,19 +320,20 @@ are some additional things you could try:
|
|
|
320
320
|
Then please share your thoughts in a comment on the submission. Did this
|
|
321
321
|
experiment make the code better? Worse? Did you learn anything from it?
|
|
322
322
|
|
|
323
|
+
# Running the tests
|
|
323
324
|
|
|
324
|
-
|
|
325
|
+
You can run all the tests for an exercise by entering
|
|
325
326
|
|
|
326
327
|
```sh
|
|
327
328
|
$ gradle test
|
|
328
329
|
```
|
|
329
330
|
|
|
330
|
-
|
|
331
|
-
|
|
331
|
+
in your terminal.
|
|
332
332
|
|
|
333
333
|
## Source
|
|
334
334
|
|
|
335
335
|
Learn to Program by Chris Pine [http://pine.fm/LearnToProgram/?Chapter=06](http://pine.fm/LearnToProgram/?Chapter=06)
|
|
336
336
|
|
|
337
337
|
## Submitting Incomplete Solutions
|
|
338
|
+
|
|
338
339
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
data/tracks/java/exercises/binary-search-tree/.meta/src/reference/java/BinarySearchTree.java
CHANGED
|
@@ -1,49 +1,11 @@
|
|
|
1
|
+
import java.util.*;
|
|
1
2
|
|
|
2
|
-
|
|
3
|
-
import java.util.Collections;
|
|
4
|
-
import java.util.LinkedList;
|
|
5
|
-
import java.util.List;
|
|
6
|
-
import java.util.Queue;
|
|
7
|
-
|
|
8
|
-
public class BinarySearchTree<T extends Comparable<T>> {
|
|
9
|
-
|
|
10
|
-
public static class Node<T> {
|
|
11
|
-
|
|
12
|
-
private T data;
|
|
13
|
-
private Node<T> left = null;
|
|
14
|
-
private Node<T> right = null;
|
|
15
|
-
|
|
16
|
-
public Node(T data) {
|
|
17
|
-
this.data = data;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
public Node<T> getLeft() {
|
|
21
|
-
return left;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
public void setLeft(Node<T> left) {
|
|
25
|
-
this.left = left;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
public Node<T> getRight() {
|
|
29
|
-
return right;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
public void setRight(Node<T> right) {
|
|
33
|
-
this.right = right;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
public T getData() {
|
|
37
|
-
return data;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
}
|
|
3
|
+
class BinarySearchTree<T extends Comparable<T>> {
|
|
41
4
|
|
|
42
5
|
private Node<T> root;
|
|
43
|
-
|
|
44
6
|
private int nodeCount = 0;
|
|
45
7
|
|
|
46
|
-
|
|
8
|
+
void insert(T value) {
|
|
47
9
|
if (root == null) {
|
|
48
10
|
root = new Node<>(value);
|
|
49
11
|
} else {
|
|
@@ -52,19 +14,19 @@ public class BinarySearchTree<T extends Comparable<T>> {
|
|
|
52
14
|
this.nodeCount++;
|
|
53
15
|
}
|
|
54
16
|
|
|
55
|
-
|
|
17
|
+
List<T> getAsSortedList() {
|
|
56
18
|
List<T> result = new ArrayList<>(this.nodeCount);
|
|
57
19
|
this.putInSortedOrderToList(this.root, result);
|
|
58
20
|
return Collections.unmodifiableList(result);
|
|
59
21
|
}
|
|
60
22
|
|
|
61
|
-
|
|
23
|
+
List<T> getAsLevelOrderList() {
|
|
62
24
|
List<T> result = new ArrayList<>(this.nodeCount);
|
|
63
25
|
this.putInLevelOrderToList(this.root, result);
|
|
64
26
|
return Collections.unmodifiableList(result);
|
|
65
27
|
}
|
|
66
28
|
|
|
67
|
-
|
|
29
|
+
Node<T> getRoot() {
|
|
68
30
|
return root;
|
|
69
31
|
}
|
|
70
32
|
|
|
@@ -119,4 +81,36 @@ public class BinarySearchTree<T extends Comparable<T>> {
|
|
|
119
81
|
}
|
|
120
82
|
}
|
|
121
83
|
}
|
|
84
|
+
|
|
85
|
+
static class Node<T> {
|
|
86
|
+
|
|
87
|
+
private T data;
|
|
88
|
+
private Node<T> left = null;
|
|
89
|
+
private Node<T> right = null;
|
|
90
|
+
|
|
91
|
+
Node(T data) {
|
|
92
|
+
this.data = data;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
Node<T> getLeft() {
|
|
96
|
+
return left;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
void setLeft(Node<T> left) {
|
|
100
|
+
this.left = left;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
Node<T> getRight() {
|
|
104
|
+
return right;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
void setRight(Node<T> right) {
|
|
108
|
+
this.right = right;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
T getData() {
|
|
112
|
+
return data;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
}
|
|
122
116
|
}
|
|
@@ -53,19 +53,20 @@ And if we then added 1, 5, and 7, it would look like this
|
|
|
53
53
|
/ \ / \
|
|
54
54
|
1 3 5 7
|
|
55
55
|
|
|
56
|
+
# Running the tests
|
|
56
57
|
|
|
57
|
-
|
|
58
|
+
You can run all the tests for an exercise by entering
|
|
58
59
|
|
|
59
60
|
```sh
|
|
60
61
|
$ gradle test
|
|
61
62
|
```
|
|
62
63
|
|
|
63
|
-
|
|
64
|
-
|
|
64
|
+
in your terminal.
|
|
65
65
|
|
|
66
66
|
## Source
|
|
67
67
|
|
|
68
68
|
Josh Cheek [https://twitter.com/josh_cheek](https://twitter.com/josh_cheek)
|
|
69
69
|
|
|
70
70
|
## Submitting Incomplete Solutions
|
|
71
|
+
|
|
71
72
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import java.util.List;
|
|
2
|
+
|
|
3
|
+
class BinarySearchTree<T extends Comparable<T>> {
|
|
4
|
+
void insert(T value) {
|
|
5
|
+
throw new UnsupportedOperationException("Delete this statement and write your own implementation.");
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
List<T> getAsSortedList() {
|
|
9
|
+
throw new UnsupportedOperationException("Delete this statement and write your own implementation.");
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
List<T> getAsLevelOrderList() {
|
|
13
|
+
throw new UnsupportedOperationException("Delete this statement and write your own implementation.");
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
Node<T> getRoot() {
|
|
17
|
+
throw new UnsupportedOperationException("Delete this statement and write your own implementation.");
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
static class Node<T> {
|
|
21
|
+
|
|
22
|
+
Node<T> getLeft() {
|
|
23
|
+
throw new UnsupportedOperationException("Delete this statement and write your own implementation.");
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
Node<T> getRight() {
|
|
27
|
+
throw new UnsupportedOperationException("Delete this statement and write your own implementation.");
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
T getData() {
|
|
31
|
+
throw new UnsupportedOperationException("Delete this statement and write your own implementation.");
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -9,39 +9,38 @@ import org.junit.Test;
|
|
|
9
9
|
import org.junit.Before;
|
|
10
10
|
|
|
11
11
|
public class BinarySearchTreeTest {
|
|
12
|
-
private BinarySearchTree<Integer> binarySearchTree;
|
|
13
|
-
|
|
14
|
-
@Before
|
|
15
|
-
public void setUp() {
|
|
16
|
-
binarySearchTree = new BinarySearchTree<>();
|
|
17
|
-
}
|
|
18
12
|
|
|
19
13
|
@Test
|
|
20
14
|
public void dataIsRetained() {
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
BinarySearchTree<Integer> binarySearchTree = new BinarySearchTree<>();
|
|
16
|
+
|
|
17
|
+
final int expected = 4;
|
|
18
|
+
binarySearchTree.insert(expected);
|
|
19
|
+
|
|
23
20
|
final BinarySearchTree.Node<Integer> root = binarySearchTree.getRoot();
|
|
24
21
|
assertNotNull(root);
|
|
25
|
-
|
|
22
|
+
|
|
23
|
+
final int actual = root.getData();
|
|
26
24
|
assertEquals(expected, actual);
|
|
27
25
|
}
|
|
28
26
|
|
|
29
27
|
@Ignore("Remove to run test")
|
|
30
28
|
@Test
|
|
31
29
|
public void insertsLess() {
|
|
32
|
-
|
|
33
|
-
final
|
|
30
|
+
BinarySearchTree<Character> binarySearchTree = new BinarySearchTree<>();
|
|
31
|
+
final char expectedRoot = '4';
|
|
32
|
+
final char expectedLeft = '2';
|
|
34
33
|
|
|
35
34
|
binarySearchTree.insert(expectedRoot);
|
|
36
35
|
binarySearchTree.insert(expectedLeft);
|
|
37
36
|
|
|
38
|
-
final BinarySearchTree.Node<
|
|
37
|
+
final BinarySearchTree.Node<Character> root = binarySearchTree.getRoot();
|
|
39
38
|
assertNotNull(root);
|
|
40
|
-
final BinarySearchTree.Node<
|
|
39
|
+
final BinarySearchTree.Node<Character> left = root.getLeft();
|
|
41
40
|
assertNotNull(left);
|
|
42
41
|
|
|
43
|
-
final
|
|
44
|
-
final
|
|
42
|
+
final char actualRoot = root.getData();
|
|
43
|
+
final char actualLeft = left.getData();
|
|
45
44
|
assertEquals(expectedLeft, actualLeft);
|
|
46
45
|
assertEquals(expectedRoot, actualRoot);
|
|
47
46
|
}
|
|
@@ -49,19 +48,20 @@ public class BinarySearchTreeTest {
|
|
|
49
48
|
@Ignore("Remove to run test")
|
|
50
49
|
@Test
|
|
51
50
|
public void insertsSame() {
|
|
52
|
-
|
|
53
|
-
final
|
|
51
|
+
BinarySearchTree<String> binarySearchTree = new BinarySearchTree<>();
|
|
52
|
+
final String expectedRoot = "4";
|
|
53
|
+
final String expectedLeft = "4";
|
|
54
54
|
|
|
55
55
|
binarySearchTree.insert(expectedRoot);
|
|
56
56
|
binarySearchTree.insert(expectedLeft);
|
|
57
57
|
|
|
58
|
-
final BinarySearchTree.Node<
|
|
58
|
+
final BinarySearchTree.Node<String> root = binarySearchTree.getRoot();
|
|
59
59
|
assertNotNull(root);
|
|
60
|
-
final BinarySearchTree.Node<
|
|
60
|
+
final BinarySearchTree.Node<String> left = root.getLeft();
|
|
61
61
|
assertNotNull(left);
|
|
62
62
|
|
|
63
|
-
final
|
|
64
|
-
final
|
|
63
|
+
final String actualRoot = root.getData();
|
|
64
|
+
final String actualLeft = left.getData();
|
|
65
65
|
assertEquals(expectedLeft, actualLeft);
|
|
66
66
|
assertEquals(expectedRoot, actualRoot);
|
|
67
67
|
}
|
|
@@ -69,6 +69,7 @@ public class BinarySearchTreeTest {
|
|
|
69
69
|
@Ignore("Remove to run test")
|
|
70
70
|
@Test
|
|
71
71
|
public void insertsRight() {
|
|
72
|
+
BinarySearchTree<Integer> binarySearchTree = new BinarySearchTree<>();
|
|
72
73
|
final int expectedRoot = 4;
|
|
73
74
|
final int expectedRight = 5;
|
|
74
75
|
|
|
@@ -89,35 +90,38 @@ public class BinarySearchTreeTest {
|
|
|
89
90
|
@Ignore("Remove to run test")
|
|
90
91
|
@Test
|
|
91
92
|
public void createsComplexTree() {
|
|
92
|
-
|
|
93
|
-
|
|
93
|
+
BinarySearchTree<Character> binarySearchTree = new BinarySearchTree<>();
|
|
94
|
+
List<Character> expected = Collections.unmodifiableList(
|
|
95
|
+
Arrays.asList('4', '2', '6', '1', '3', '5', '7')
|
|
94
96
|
);
|
|
95
97
|
|
|
96
|
-
List<
|
|
97
|
-
Arrays.asList(4, 2, 6, 1, 3, 7, 5)
|
|
98
|
+
List<Character> treeData = Collections.unmodifiableList(
|
|
99
|
+
Arrays.asList('4', '2', '6', '1', '3', '7', '5')
|
|
98
100
|
);
|
|
99
101
|
treeData.forEach(binarySearchTree::insert);
|
|
100
102
|
|
|
101
|
-
List<
|
|
103
|
+
List<Character> actual = binarySearchTree.getAsLevelOrderList();
|
|
102
104
|
assertEquals(expected, actual);
|
|
103
105
|
}
|
|
104
106
|
|
|
105
107
|
@Ignore("Remove to run test")
|
|
106
108
|
@Test
|
|
107
109
|
public void sortsSingleElement() {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
+
BinarySearchTree<String> binarySearchTree = new BinarySearchTree<>();
|
|
111
|
+
List<String> expected = Collections.unmodifiableList(
|
|
112
|
+
Collections.singletonList("4")
|
|
110
113
|
);
|
|
111
114
|
|
|
112
|
-
binarySearchTree.insert(4);
|
|
115
|
+
binarySearchTree.insert("4");
|
|
113
116
|
|
|
114
|
-
List<
|
|
117
|
+
List<String> actual = binarySearchTree.getAsSortedList();
|
|
115
118
|
assertEquals(expected, actual);
|
|
116
119
|
}
|
|
117
120
|
|
|
118
121
|
@Ignore("Remove to run test")
|
|
119
122
|
@Test
|
|
120
123
|
public void sortsCollectionOfTwoIfSecondInsertedIsSmallerThanFirst() {
|
|
124
|
+
BinarySearchTree<Integer> binarySearchTree = new BinarySearchTree<>();
|
|
121
125
|
List<Integer> expected = Collections.unmodifiableList(
|
|
122
126
|
Arrays.asList(2, 4)
|
|
123
127
|
);
|
|
@@ -132,30 +136,32 @@ public class BinarySearchTreeTest {
|
|
|
132
136
|
@Ignore("Remove to run test")
|
|
133
137
|
@Test
|
|
134
138
|
public void sortsCollectionOfTwoIfSecondInsertedIsBiggerThanFirst() {
|
|
135
|
-
|
|
136
|
-
|
|
139
|
+
BinarySearchTree<Character> binarySearchTree = new BinarySearchTree<>();
|
|
140
|
+
List<Character> expected = Collections.unmodifiableList(
|
|
141
|
+
Arrays.asList('4', '5')
|
|
137
142
|
);
|
|
138
143
|
|
|
139
|
-
binarySearchTree.insert(4);
|
|
140
|
-
binarySearchTree.insert(5);
|
|
144
|
+
binarySearchTree.insert('4');
|
|
145
|
+
binarySearchTree.insert('5');
|
|
141
146
|
|
|
142
|
-
List<
|
|
147
|
+
List<Character> actual = binarySearchTree.getAsSortedList();
|
|
143
148
|
assertEquals(expected, actual);
|
|
144
149
|
}
|
|
145
150
|
|
|
146
151
|
@Ignore("Remove to run test")
|
|
147
152
|
@Test
|
|
148
153
|
public void iteratesOverComplexTree() {
|
|
149
|
-
|
|
150
|
-
|
|
154
|
+
BinarySearchTree<String> binarySearchTree = new BinarySearchTree<>();
|
|
155
|
+
List<String> expected = Collections.unmodifiableList(
|
|
156
|
+
Arrays.asList("1", "2", "3", "4", "5", "6", "7")
|
|
151
157
|
);
|
|
152
158
|
|
|
153
|
-
List<
|
|
154
|
-
Arrays.asList(4, 2, 1, 3, 6, 7, 5)
|
|
159
|
+
List<String> treeData = Collections.unmodifiableList(
|
|
160
|
+
Arrays.asList("4", "2", "1", "3", "6", "7", "5")
|
|
155
161
|
);
|
|
156
162
|
treeData.forEach(binarySearchTree::insert);
|
|
157
163
|
|
|
158
|
-
List<
|
|
164
|
+
List<String> actual = binarySearchTree.getAsSortedList();
|
|
159
165
|
assertEquals(expected, actual);
|
|
160
166
|
}
|
|
161
167
|
}
|