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.
Files changed (277) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/pangram/canonical-data.json +3 -3
  4. data/tracks/common-lisp/.travis.yml +2 -9
  5. data/tracks/common-lisp/docs/TESTS.md +43 -9
  6. data/tracks/delphi/exercises/nucleotide-count/uNucleotideCountTest.pas +2 -2
  7. data/tracks/elixir/.travis.yml +4 -7
  8. data/tracks/elixir/README.md +2 -6
  9. data/tracks/elixir/bin/dialyzer_check.sh +2 -13
  10. data/tracks/elixir/exercises/allergies/example.exs +3 -2
  11. data/tracks/elixir/exercises/atbash-cipher/example.exs +5 -5
  12. data/tracks/elixir/exercises/bank-account/example.exs +11 -11
  13. data/tracks/elixir/exercises/bob/example.exs +4 -4
  14. data/tracks/elixir/exercises/forth/example.exs +66 -48
  15. data/tracks/elixir/exercises/minesweeper/example.exs +31 -18
  16. data/tracks/elixir/exercises/pangram/example.exs +4 -4
  17. data/tracks/elixir/exercises/queen-attack/queen_attack_test.exs +68 -53
  18. data/tracks/elixir/exercises/say/example.exs +33 -31
  19. data/tracks/elixir/exercises/scrabble-score/example.exs +12 -11
  20. data/tracks/elixir/mix.exs +10 -7
  21. data/tracks/elixir/mix.lock +4 -1
  22. data/tracks/erlang/README.md +2 -0
  23. data/tracks/fsharp/exercises/nth-prime/Example.fs +4 -1
  24. data/tracks/fsharp/exercises/nth-prime/NthPrime.fs +1 -1
  25. data/tracks/fsharp/exercises/nth-prime/NthPrimeTest.fs +12 -32
  26. data/tracks/fsharp/exercises/pangram/PangramTest.fs +3 -3
  27. data/tracks/fsharp/exercises/perfect-numbers/Example.fs +9 -6
  28. data/tracks/fsharp/exercises/perfect-numbers/PerfectNumbers.fs +1 -1
  29. data/tracks/fsharp/exercises/perfect-numbers/PerfectNumbersTest.fs +55 -21
  30. data/tracks/fsharp/generators/Generators.fs +18 -0
  31. data/tracks/gnu-apl/config.json +21 -0
  32. data/tracks/gnu-apl/exercises/hamming/README.md +42 -0
  33. data/tracks/gnu-apl/exercises/hamming/hamming-example.apl +5 -0
  34. data/tracks/gnu-apl/exercises/hamming/hamming.tc +75 -0
  35. data/tracks/gnu-apl/exercises/hello-world/README.md +17 -1
  36. data/tracks/gnu-apl/exercises/leap/README.md +33 -0
  37. data/tracks/gnu-apl/exercises/raindrops/README.md +24 -0
  38. data/tracks/gnu-apl/exercises/raindrops/raindrops-example.apl +8 -0
  39. data/tracks/gnu-apl/exercises/raindrops/raindrops.tc +60 -0
  40. data/tracks/gnu-apl/exercises/rna-transcription/README.md +25 -0
  41. data/tracks/gnu-apl/exercises/rna-transcription/rna-transcription-example.apl +7 -0
  42. data/tracks/gnu-apl/exercises/rna-transcription/rna-transcription.tc +41 -0
  43. data/tracks/gnu-apl/test.apl +13 -0
  44. data/tracks/haskell/config.json +9 -0
  45. data/tracks/haskell/exercises/rotational-cipher/README.md +91 -0
  46. data/tracks/haskell/exercises/rotational-cipher/examples/success-standard/package.yaml +16 -0
  47. data/tracks/haskell/exercises/rotational-cipher/examples/success-standard/src/RotationalCipher.hs +9 -0
  48. data/tracks/haskell/exercises/rotational-cipher/package.yaml +20 -0
  49. data/tracks/haskell/exercises/rotational-cipher/src/RotationalCipher.hs +4 -0
  50. data/tracks/haskell/exercises/rotational-cipher/stack.yaml +1 -0
  51. data/tracks/haskell/exercises/rotational-cipher/test/Tests.hs +77 -0
  52. data/tracks/java/config.json +23 -14
  53. data/tracks/java/config/exercise-readme-insert.md +3 -3
  54. data/tracks/java/config/exercise_readme.go.tmpl +3 -0
  55. data/tracks/java/exercises/accumulate/README.md +4 -3
  56. data/tracks/java/exercises/acronym/.meta/{.version → version} +0 -0
  57. data/tracks/java/exercises/acronym/README.md +4 -3
  58. data/tracks/java/exercises/all-your-base/.meta/{.version → version} +0 -0
  59. data/tracks/java/exercises/all-your-base/README.md +4 -3
  60. data/tracks/java/exercises/allergies/README.md +4 -3
  61. data/tracks/java/exercises/anagram/README.md +4 -3
  62. data/tracks/java/exercises/atbash-cipher/README.md +4 -3
  63. data/tracks/java/exercises/bank-account/README.md +6 -3
  64. data/tracks/java/exercises/beer-song/README.md +4 -3
  65. data/tracks/java/exercises/binary-search-tree/.meta/src/reference/java/BinarySearchTree.java +38 -44
  66. data/tracks/java/exercises/binary-search-tree/README.md +4 -3
  67. data/tracks/java/exercises/binary-search-tree/src/main/java/BinarySearchTree.java +35 -0
  68. data/tracks/java/exercises/binary-search-tree/src/test/java/BinarySearchTreeTest.java +46 -40
  69. data/tracks/java/exercises/binary-search/.meta/hints.md +25 -0
  70. data/tracks/java/exercises/binary-search/.meta/src/reference/java/BinarySearch.java +3 -7
  71. data/tracks/java/exercises/binary-search/README.md +33 -3
  72. data/tracks/java/exercises/binary-search/src/test/java/BinarySearchTest.java +11 -11
  73. data/tracks/java/exercises/binary/README.md +4 -3
  74. data/tracks/java/exercises/bob/README.md +4 -3
  75. data/tracks/java/exercises/book-store/README.md +4 -3
  76. data/tracks/java/exercises/bowling/README.md +4 -3
  77. data/tracks/java/exercises/bracket-push/README.md +4 -3
  78. data/tracks/java/exercises/change/.meta/{.version → version} +0 -0
  79. data/tracks/java/exercises/change/README.md +4 -3
  80. data/tracks/java/exercises/circular-buffer/README.md +4 -3
  81. data/tracks/java/exercises/clock/.meta/{.version → version} +0 -0
  82. data/tracks/java/exercises/clock/README.md +6 -3
  83. data/tracks/java/exercises/collatz-conjecture/.meta/{.version → version} +0 -0
  84. data/tracks/java/exercises/collatz-conjecture/README.md +4 -3
  85. data/tracks/java/exercises/complex-numbers/README.md +4 -3
  86. data/tracks/java/exercises/crypto-square/README.md +4 -3
  87. data/tracks/java/exercises/{rna-transcription/.meta/.version → custom-set/.meta/version} +0 -0
  88. data/tracks/java/exercises/custom-set/README.md +4 -3
  89. data/tracks/java/exercises/custom-set/src/test/java/CustomSetTest.java +103 -251
  90. data/tracks/java/exercises/diamond/.meta/{.version → version} +0 -0
  91. data/tracks/java/exercises/diamond/README.md +4 -3
  92. data/tracks/java/exercises/difference-of-squares/.meta/{.version → version} +0 -0
  93. data/tracks/java/exercises/difference-of-squares/README.md +4 -3
  94. data/tracks/java/exercises/etl/README.md +4 -3
  95. data/tracks/java/exercises/flatten-array/.meta/{.version → version} +0 -0
  96. data/tracks/java/exercises/flatten-array/README.md +4 -3
  97. data/tracks/java/exercises/food-chain/README.md +4 -3
  98. data/tracks/java/exercises/forth/.meta/{.version → version} +0 -0
  99. data/tracks/java/exercises/forth/README.md +3 -3
  100. data/tracks/java/exercises/gigasecond/README.md +4 -3
  101. data/tracks/java/exercises/grade-school/README.md +4 -3
  102. data/tracks/java/exercises/hamming/.meta/{.version → version} +0 -0
  103. data/tracks/java/exercises/hamming/README.md +6 -3
  104. data/tracks/java/exercises/hello-world/README.md +6 -3
  105. data/tracks/java/exercises/hexadecimal/README.md +4 -3
  106. data/tracks/java/exercises/house/README.md +4 -3
  107. data/tracks/java/exercises/isogram/README.md +6 -3
  108. data/tracks/java/exercises/kindergarten-garden/README.md +4 -3
  109. data/tracks/java/exercises/largest-series-product/README.md +4 -3
  110. data/tracks/java/exercises/linked-list/README.md +4 -3
  111. data/tracks/java/exercises/list-ops/.meta/{.version → version} +0 -0
  112. data/tracks/java/exercises/list-ops/README.md +6 -3
  113. data/tracks/java/exercises/luhn/README.md +4 -3
  114. data/tracks/java/exercises/matrix/README.md +4 -3
  115. data/tracks/java/exercises/meetup/README.md +4 -3
  116. data/tracks/java/exercises/minesweeper/.meta/{.version → version} +0 -0
  117. data/tracks/java/exercises/minesweeper/README.md +4 -3
  118. data/tracks/java/exercises/nth-prime/README.md +4 -3
  119. data/tracks/java/exercises/nucleotide-count/README.md +4 -3
  120. data/tracks/java/exercises/ocr-numbers/README.md +4 -3
  121. data/tracks/java/exercises/octal/README.md +4 -3
  122. data/tracks/java/exercises/palindrome-products/README.md +4 -3
  123. data/tracks/java/exercises/pangram/.meta/{.version → version} +0 -0
  124. data/tracks/java/exercises/pangram/README.md +4 -3
  125. data/tracks/java/exercises/pascals-triangle/.meta/{.version → version} +0 -0
  126. data/tracks/java/exercises/pascals-triangle/README.md +4 -3
  127. data/tracks/java/exercises/perfect-numbers/.meta/{.version → version} +0 -0
  128. data/tracks/java/exercises/perfect-numbers/README.md +4 -3
  129. data/tracks/java/exercises/phone-number/README.md +4 -3
  130. data/tracks/java/exercises/pig-latin/README.md +4 -3
  131. data/tracks/java/exercises/poker/README.md +4 -3
  132. data/tracks/java/exercises/prime-factors/README.md +4 -3
  133. data/tracks/java/exercises/pythagorean-triplet/README.md +4 -3
  134. data/tracks/java/exercises/queen-attack/README.md +4 -3
  135. data/tracks/java/exercises/raindrops/README.md +4 -3
  136. data/tracks/java/exercises/rectangles/README.md +4 -3
  137. data/tracks/java/exercises/rna-transcription/.meta/version +1 -0
  138. data/tracks/java/exercises/rna-transcription/README.md +4 -3
  139. data/tracks/java/exercises/robot-name/README.md +4 -3
  140. data/tracks/java/exercises/robot-simulator/README.md +4 -3
  141. data/tracks/java/exercises/roman-numerals/README.md +4 -3
  142. data/tracks/java/exercises/rotational-cipher/README.md +4 -3
  143. data/tracks/java/exercises/run-length-encoding/README.md +4 -3
  144. data/tracks/java/exercises/saddle-points/.meta/{.version → version} +0 -0
  145. data/tracks/java/exercises/saddle-points/README.md +4 -3
  146. data/tracks/java/exercises/scrabble-score/.meta/{.version → version} +0 -0
  147. data/tracks/java/exercises/scrabble-score/README.md +4 -3
  148. data/tracks/java/exercises/secret-handshake/README.md +4 -3
  149. data/tracks/java/exercises/series/README.md +4 -3
  150. data/tracks/java/exercises/sieve/README.md +4 -3
  151. data/tracks/java/exercises/simple-cipher/README.md +6 -3
  152. data/tracks/java/exercises/simple-linked-list/README.md +4 -3
  153. data/tracks/java/exercises/space-age/README.md +4 -3
  154. data/tracks/java/exercises/spiral-matrix/.meta/{.version → version} +0 -0
  155. data/tracks/java/exercises/spiral-matrix/README.md +4 -3
  156. data/tracks/java/exercises/strain/README.md +4 -3
  157. data/tracks/java/exercises/sublist/README.md +4 -3
  158. data/tracks/java/exercises/sum-of-multiples/README.md +4 -3
  159. data/tracks/java/exercises/tournament/README.md +4 -3
  160. data/tracks/java/exercises/transpose/README.md +4 -3
  161. data/tracks/java/exercises/triangle/.meta/{.version → version} +0 -0
  162. data/tracks/java/exercises/triangle/README.md +4 -3
  163. data/tracks/java/exercises/trinary/README.md +4 -3
  164. data/tracks/java/exercises/twelve-days/README.md +4 -3
  165. data/tracks/java/exercises/two-fer/README.md +6 -3
  166. data/tracks/java/exercises/word-count/README.md +4 -3
  167. data/tracks/java/exercises/word-search/.meta/{.version → version} +0 -0
  168. data/tracks/java/exercises/word-search/README.md +4 -3
  169. data/tracks/java/exercises/wordy/README.md +4 -3
  170. data/tracks/julia/config.json +13 -0
  171. data/tracks/julia/exercises/phone-number/README.md +36 -0
  172. data/tracks/julia/exercises/phone-number/example.jl +18 -0
  173. data/tracks/julia/exercises/phone-number/phone-number.jl +3 -0
  174. data/tracks/julia/exercises/phone-number/runtests.jl +49 -0
  175. data/tracks/lua/config.json +505 -494
  176. data/tracks/lua/config/maintainers.json +16 -16
  177. data/tracks/lua/exercises/acronym/README.md +0 -1
  178. data/tracks/lua/exercises/all-your-base/README.md +1 -1
  179. data/tracks/lua/exercises/allergies/README.md +0 -1
  180. data/tracks/lua/exercises/alphametics/README.md +2 -2
  181. data/tracks/lua/exercises/atbash-cipher/README.md +2 -1
  182. data/tracks/lua/exercises/beer-song/README.md +1 -1
  183. data/tracks/lua/exercises/binary/README.md +2 -0
  184. data/tracks/lua/exercises/bowling/README.md +20 -6
  185. data/tracks/lua/exercises/change/README.md +1 -1
  186. data/tracks/lua/exercises/circular-buffer/README.md +13 -6
  187. data/tracks/lua/exercises/crypto-square/README.md +4 -4
  188. data/tracks/lua/exercises/diamond/README.md +6 -6
  189. data/tracks/lua/exercises/etl/README.md +2 -0
  190. data/tracks/lua/exercises/flatten-array/README.md +1 -2
  191. data/tracks/lua/exercises/food-chain/README.md +1 -1
  192. data/tracks/lua/exercises/grade-school/README.md +0 -1
  193. data/tracks/lua/exercises/grains/README.md +0 -1
  194. data/tracks/lua/exercises/house/README.md +1 -2
  195. data/tracks/lua/exercises/isogram/README.md +2 -1
  196. data/tracks/lua/exercises/kindergarten-garden/README.md +13 -13
  197. data/tracks/lua/exercises/leap/README.md +1 -1
  198. data/tracks/lua/exercises/linked-list/README.md +10 -10
  199. data/tracks/lua/exercises/luhn/README.md +7 -7
  200. data/tracks/lua/exercises/matrix/README.md +6 -4
  201. data/tracks/lua/exercises/meetup/README.md +1 -2
  202. data/tracks/lua/exercises/nucleotide-count/README.md +8 -22
  203. data/tracks/lua/exercises/ocr-numbers/README.md +5 -5
  204. data/tracks/lua/exercises/octal/README.md +6 -2
  205. data/tracks/lua/exercises/pangram/README.md +1 -1
  206. data/tracks/lua/exercises/pascals-triangle/README.md +1 -1
  207. data/tracks/lua/exercises/perfect-numbers/README.md +2 -2
  208. data/tracks/lua/exercises/phone-number/README.md +3 -2
  209. data/tracks/lua/exercises/pov/README.md +2 -2
  210. data/tracks/lua/exercises/protein-translation/README.md +4 -5
  211. data/tracks/lua/exercises/pythagorean-triplet/README.md +3 -3
  212. data/tracks/lua/exercises/rail-fence-cipher/README.md +12 -7
  213. data/tracks/lua/exercises/react/README.md +29 -0
  214. data/tracks/lua/exercises/react/example.lua +108 -0
  215. data/tracks/lua/exercises/react/react_spec.lua +160 -0
  216. data/tracks/lua/exercises/rectangles/README.md +7 -7
  217. data/tracks/lua/exercises/roman-numerals/README.md +1 -1
  218. data/tracks/lua/exercises/run-length-encoding/README.md +4 -4
  219. data/tracks/lua/exercises/scrabble-score/README.md +3 -1
  220. data/tracks/lua/exercises/secret-handshake/README.md +1 -1
  221. data/tracks/lua/exercises/space-age/README.md +2 -1
  222. data/tracks/lua/exercises/sum-of-multiples/README.md +0 -3
  223. data/tracks/lua/exercises/tournament/README.md +5 -5
  224. data/tracks/lua/exercises/transpose/README.md +7 -7
  225. data/tracks/lua/exercises/triangle/README.md +9 -6
  226. data/tracks/lua/exercises/variable-length-quantity/README.md +6 -7
  227. data/tracks/lua/exercises/word-count/README.md +1 -2
  228. data/tracks/lua/exercises/word-search/README.md +1 -1
  229. data/tracks/perl6/exercises/leap/Example.pm6 +1 -1
  230. data/tracks/perl6/exercises/leap/Leap.pm6 +1 -1
  231. data/tracks/perl6/exercises/leap/example.yaml +1 -1
  232. data/tracks/perl6/exercises/leap/leap.t +3 -3
  233. data/tracks/php/exercises/transpose/example.php +37 -15
  234. data/tracks/php/exercises/transpose/transpose_test.php +205 -45
  235. data/tracks/purescript/config.json +11 -0
  236. data/tracks/purescript/exercises/collatz-conjecture/README.md +33 -0
  237. data/tracks/purescript/exercises/collatz-conjecture/bower.json +26 -0
  238. data/tracks/purescript/exercises/collatz-conjecture/examples/src/CollatzConjecture.purs +15 -0
  239. data/tracks/purescript/exercises/collatz-conjecture/src/CollatzConjecture.purs +3 -0
  240. data/tracks/purescript/exercises/collatz-conjecture/test/Main.purs +43 -0
  241. data/tracks/python/config.json +10 -2
  242. data/tracks/racket/README.md +38 -33
  243. data/tracks/racket/config.json +10 -0
  244. data/tracks/racket/exercises/collatz-conjecture/README.md +58 -0
  245. data/tracks/racket/exercises/collatz-conjecture/collatz-conjecture-test.rkt +34 -0
  246. data/tracks/racket/exercises/collatz-conjecture/collatz-conjecture.rkt +6 -0
  247. data/tracks/racket/exercises/collatz-conjecture/example.rkt +20 -0
  248. data/tracks/ruby/exercises/allergies/.meta/.version +1 -0
  249. data/tracks/ruby/exercises/allergies/.meta/generator/allergies_case.rb +33 -0
  250. data/tracks/ruby/exercises/allergies/.meta/solutions/allergies.rb +4 -0
  251. data/tracks/ruby/exercises/allergies/allergies_test.rb +42 -9
  252. data/tracks/typescript/config.json +46 -0
  253. data/tracks/typescript/exercises/circular-buffer/README.md +74 -0
  254. data/tracks/typescript/exercises/circular-buffer/circular-buffer.example.ts +51 -0
  255. data/tracks/typescript/exercises/circular-buffer/circular-buffer.test.ts +103 -0
  256. data/tracks/typescript/exercises/circular-buffer/circular-buffer.ts +0 -0
  257. data/tracks/typescript/exercises/circular-buffer/package.json +36 -0
  258. data/tracks/typescript/exercises/circular-buffer/tsconfig.json +22 -0
  259. data/tracks/typescript/exercises/circular-buffer/tslint.json +127 -0
  260. data/tracks/typescript/exercises/circular-buffer/yarn.lock +2305 -0
  261. data/tracks/typescript/exercises/largest-series-product/README.md +51 -0
  262. data/tracks/typescript/exercises/largest-series-product/largest-series-product.example.ts +52 -0
  263. data/tracks/typescript/exercises/largest-series-product/largest-series-product.test.ts +68 -0
  264. data/tracks/typescript/exercises/largest-series-product/largest-series-product.ts +0 -0
  265. data/tracks/typescript/exercises/largest-series-product/package.json +36 -0
  266. data/tracks/typescript/exercises/largest-series-product/tsconfig.json +22 -0
  267. data/tracks/typescript/exercises/largest-series-product/tslint.json +127 -0
  268. data/tracks/typescript/exercises/largest-series-product/yarn.lock +2305 -0
  269. data/tracks/typescript/exercises/robot-simulator/README.md +58 -0
  270. data/tracks/typescript/exercises/robot-simulator/package.json +36 -0
  271. data/tracks/typescript/exercises/robot-simulator/robot-simulator.example.ts +74 -0
  272. data/tracks/typescript/exercises/robot-simulator/robot-simulator.test.ts +150 -0
  273. data/tracks/typescript/exercises/robot-simulator/robot-simulator.ts +0 -0
  274. data/tracks/typescript/exercises/robot-simulator/tsconfig.json +22 -0
  275. data/tracks/typescript/exercises/robot-simulator/tslint.json +127 -0
  276. data/tracks/typescript/exercises/robot-simulator/yarn.lock +2305 -0
  277. metadata +85 -23
@@ -0,0 +1,25 @@
1
+ This exercise introduces [generics](https://docs.oracle.com/javase/tutorial/java/generics/index.html).
2
+ To make the tests pass you need to construct your class such that it accepts any type of input, e.g. `Integer` or `String`.
3
+
4
+ Generics are useful because they allow you to write more general and reusable code.
5
+ The Java [List](https://docs.oracle.com/javase/8/docs/api/java/util/List.html) and [Map](https://docs.oracle.com/javase/8/docs/api/java/util/Map.html) implementations are both examples of classes that use generics.
6
+ By using them you can construct a `List` containing `Integers` or a list containing `Strings` or any other type.
7
+
8
+ There are a few constraints on the types used in generics.
9
+ One of them is that once you've constructed a `List` containing `Integers`, you can't put `Strings` into it.
10
+ You have to specify which type you want to put into the class when you construct it, and that instance can then only be used with that type.
11
+
12
+ For example you could construct a list of `Integers`:
13
+
14
+ `List<Integer> someList = new LinkedList<>();`
15
+
16
+ Now `someList` can only contain `Integers`. You could also do:
17
+
18
+ `List<String> someOtherList = new LinkedList<>()`
19
+
20
+ Now `someOtherList` can only contain `Strings`.
21
+
22
+ Another constraint is that any type used with generics cannot be a [primitive type](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html), such as `int` or `long`.
23
+ However, every primitive type has a corresponding reference type, so instead of `int` you can use [`Integer`](https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html) and instead of `long` you can use [`Long`](https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html).
24
+
25
+ It can help to look at an [example use case of generics](https://docs.oracle.com/javase/tutorial/java/generics/types.html) to get you started.
@@ -1,24 +1,20 @@
1
1
 
2
2
  import java.util.List;
3
3
 
4
- public class BinarySearch<T extends Comparable<T>> {
4
+ class BinarySearch<T extends Comparable<T>> {
5
5
 
6
6
  private List<T> array;
7
7
  private int arraySize;
8
8
 
9
- public BinarySearch(List<T> array) {
9
+ BinarySearch(List<T> array) {
10
10
  this.array = array;
11
11
  this.arraySize = array.size();
12
12
  }
13
13
 
14
- public int indexOf(T value) {
14
+ int indexOf(T value) {
15
15
  return search(value);
16
16
  }
17
17
 
18
- public List<T> getArray() {
19
- return array;
20
- }
21
-
22
18
  private int search(T value) {
23
19
  int left = 0;
24
20
  int right = this.arraySize - 1;
@@ -34,19 +34,49 @@ A binary search halves the number of items to check with each iteration,
34
34
  so locating an item (or determining its absence) takes logarithmic time.
35
35
  A binary search is a dichotomic divide and conquer search algorithm.
36
36
 
37
+ # Java Tips
37
38
 
38
- To run the tests:
39
+ This exercise introduces [generics](https://docs.oracle.com/javase/tutorial/java/generics/index.html).
40
+ To make the tests pass you need to construct your class such that it accepts any type of input, e.g. `Integer` or `String`.
41
+
42
+ Generics are useful because they allow you to write more general and reusable code.
43
+ The Java [List](https://docs.oracle.com/javase/8/docs/api/java/util/List.html) and [Map](https://docs.oracle.com/javase/8/docs/api/java/util/Map.html) implementations are both examples of classes that use generics.
44
+ By using them you can construct a `List` containing `Integers` or a list containing `Strings` or any other type.
45
+
46
+ There are a few constraints on the types used in generics.
47
+ One of them is that once you've constructed a `List` containing `Integers`, you can't put `Strings` into it.
48
+ You have to specify which type you want to put into the class when you construct it, and that instance can then only be used with that type.
49
+
50
+ For example you could construct a list of `Integers`:
51
+
52
+ `List<Integer> someList = new LinkedList<>();`
53
+
54
+ Now `someList` can only contain `Integers`. You could also do:
55
+
56
+ `List<String> someOtherList = new LinkedList<>()`
57
+
58
+ Now `someOtherList` can only contain `Strings`.
59
+
60
+ Another constraint is that any type used with generics cannot be a [primitive type](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html), such as `int` or `long`.
61
+ However, every primitive type has a corresponding reference type, so instead of `int` you can use [`Integer`](https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html) and instead of `long` you can use [`Long`](https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html).
62
+
63
+ It can help to look at an [example use case of generics](https://docs.oracle.com/javase/tutorial/java/generics/types.html) to get you started.
64
+
65
+
66
+ # Running the tests
67
+
68
+ You can run all the tests for an exercise by entering
39
69
 
40
70
  ```sh
41
71
  $ gradle test
42
72
  ```
43
73
 
44
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
45
-
74
+ in your terminal.
46
75
 
47
76
  ## Source
48
77
 
49
78
  Wikipedia [http://en.wikipedia.org/wiki/Binary_search_algorithm](http://en.wikipedia.org/wiki/Binary_search_algorithm)
50
79
 
51
80
  ## Submitting Incomplete Solutions
81
+
52
82
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -13,23 +13,23 @@ public class BinarySearchTest {
13
13
 
14
14
  @Test
15
15
  public void findsAValueInAnArrayWithOneElement() {
16
- List<Integer> listOfUnitLength = Collections.singletonList(6);
16
+ List<Character> listOfUnitLength = Collections.singletonList('6');
17
17
 
18
- BinarySearch<Integer> search = new BinarySearch<>(listOfUnitLength);
18
+ BinarySearch<Character> search = new BinarySearch<>(listOfUnitLength);
19
19
 
20
- assertEquals(0, search.indexOf(6));
20
+ assertEquals(0, search.indexOf('6'));
21
21
  }
22
22
 
23
23
  @Ignore("Remove to run test")
24
24
  @Test
25
25
  public void findsAValueInTheMiddleOfAnArray() {
26
- List<Integer> sortedList = Collections.unmodifiableList(
27
- Arrays.asList(1, 3, 4, 6, 8, 9, 11)
26
+ List<String> sortedList = Collections.unmodifiableList(
27
+ Arrays.asList("1", "3", "4", "6", "8", "9", "11")
28
28
  );
29
29
 
30
- BinarySearch<Integer> search = new BinarySearch<>(sortedList);
30
+ BinarySearch<String> search = new BinarySearch<>(sortedList);
31
31
 
32
- assertEquals(3, search.indexOf(6));
32
+ assertEquals(3, search.indexOf("6"));
33
33
  }
34
34
 
35
35
  @Ignore("Remove to run test")
@@ -83,13 +83,13 @@ public class BinarySearchTest {
83
83
  @Ignore("Remove to run test")
84
84
  @Test
85
85
  public void identifiesThatAValueIsNotIncludedInTheArray() {
86
- List<Integer> sortedList = Collections.unmodifiableList(
87
- Arrays.asList(1, 3, 4, 6, 8, 9, 11)
86
+ List<String> sortedList = Collections.unmodifiableList(
87
+ Arrays.asList("1", "3", "4", "6", "8", "9", "11")
88
88
  );
89
89
 
90
- BinarySearch<Integer> search = new BinarySearch<>(sortedList);
90
+ BinarySearch<String> search = new BinarySearch<>(sortedList);
91
91
 
92
- assertEquals(-1, search.indexOf(7));
92
+ assertEquals(-1, search.indexOf("7"));
93
93
  }
94
94
 
95
95
  @Ignore("Remove to run test")
@@ -30,19 +30,20 @@ Binary is similar, but uses powers of 2 rather than powers of 10.
30
30
 
31
31
  So: `101 => 1*2^2 + 0*2^1 + 1*2^0 => 1*4 + 0*2 + 1*1 => 4 + 1 => 5 base 10`.
32
32
 
33
+ # Running the tests
33
34
 
34
- To run the tests:
35
+ You can run all the tests for an exercise by entering
35
36
 
36
37
  ```sh
37
38
  $ gradle test
38
39
  ```
39
40
 
40
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
41
-
41
+ in your terminal.
42
42
 
43
43
  ## Source
44
44
 
45
45
  All of Computer Science [http://www.wolframalpha.com/input/?i=binary&a=*C.binary-_*MathWorld-](http://www.wolframalpha.com/input/?i=binary&a=*C.binary-_*MathWorld-)
46
46
 
47
47
  ## Submitting Incomplete Solutions
48
+
48
49
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -11,19 +11,20 @@ anything.
11
11
 
12
12
  He answers 'Whatever.' to anything else.
13
13
 
14
+ # Running the tests
14
15
 
15
- To run the tests:
16
+ You can run all the tests for an exercise by entering
16
17
 
17
18
  ```sh
18
19
  $ gradle test
19
20
  ```
20
21
 
21
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
22
-
22
+ in your terminal.
23
23
 
24
24
  ## Source
25
25
 
26
26
  Inspired by the 'Deaf Grandma' exercise in Chris Pine's Learn to Program tutorial. [http://pine.fm/LearnToProgram/?Chapter=06](http://pine.fm/LearnToProgram/?Chapter=06)
27
27
 
28
28
  ## Submitting Incomplete Solutions
29
+
29
30
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -67,19 +67,20 @@ For a total of $51.20
67
67
 
68
68
  And $51.20 is the price with the biggest discount.
69
69
 
70
+ # Running the tests
70
71
 
71
- To run the tests:
72
+ You can run all the tests for an exercise by entering
72
73
 
73
74
  ```sh
74
75
  $ gradle test
75
76
  ```
76
77
 
77
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
78
-
78
+ in your terminal.
79
79
 
80
80
  ## Source
81
81
 
82
82
  Inspired by the harry potter kata from Cyber-Dojo. [http://cyber-dojo.org](http://cyber-dojo.org)
83
83
 
84
84
  ## Submitting Incomplete Solutions
85
+
85
86
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -60,19 +60,20 @@ support two operations:
60
60
  * `score() : int` is called only at the very end of the game. It
61
61
  returns the total score for that game.
62
62
 
63
+ # Running the tests
63
64
 
64
- To run the tests:
65
+ You can run all the tests for an exercise by entering
65
66
 
66
67
  ```sh
67
68
  $ gradle test
68
69
  ```
69
70
 
70
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
71
-
71
+ in your terminal.
72
72
 
73
73
  ## Source
74
74
 
75
75
  The Bowling Game Kata at but UncleBob [http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata](http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata)
76
76
 
77
77
  ## Submitting Incomplete Solutions
78
+
78
79
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -3,19 +3,20 @@
3
3
  Given a string containing brackets `[]`, braces `{}` and parentheses `()`,
4
4
  verify that all the pairs are matched and nested correctly.
5
5
 
6
+ # Running the tests
6
7
 
7
- To run the tests:
8
+ You can run all the tests for an exercise by entering
8
9
 
9
10
  ```sh
10
11
  $ gradle test
11
12
  ```
12
13
 
13
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
14
-
14
+ in your terminal.
15
15
 
16
16
  ## Source
17
17
 
18
18
  Ginna Baker
19
19
 
20
20
  ## Submitting Incomplete Solutions
21
+
21
22
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -16,19 +16,20 @@ that the sum of the coins' value would equal the correct amount of change.
16
16
  - Can you ask for negative change?
17
17
  - Can you ask for a change value smaller than the smallest coin value?
18
18
 
19
+ # Running the tests
19
20
 
20
- To run the tests:
21
+ You can run all the tests for an exercise by entering
21
22
 
22
23
  ```sh
23
24
  $ gradle test
24
25
  ```
25
26
 
26
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
27
-
27
+ in your terminal.
28
28
 
29
29
  ## Source
30
30
 
31
31
  Software Craftsmanship - Coin Change Kata [https://web.archive.org/web/20130115115225/http://craftsmanship.sv.cmu.edu:80/exercises/coin-change-kata](https://web.archive.org/web/20130115115225/http://craftsmanship.sv.cmu.edu:80/exercises/coin-change-kata)
32
32
 
33
33
  ## Submitting Incomplete Solutions
34
+
34
35
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -50,19 +50,20 @@ the buffer is once again full.
50
50
 
51
51
  [D][7][8][9][A][B][C]
52
52
 
53
+ # Running the tests
53
54
 
54
- To run the tests:
55
+ You can run all the tests for an exercise by entering
55
56
 
56
57
  ```sh
57
58
  $ gradle test
58
59
  ```
59
60
 
60
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
61
-
61
+ in your terminal.
62
62
 
63
63
  ## Source
64
64
 
65
65
  Wikipedia [http://en.wikipedia.org/wiki/Circular_buffer](http://en.wikipedia.org/wiki/Circular_buffer)
66
66
 
67
67
  ## Submitting Incomplete Solutions
68
+
68
69
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -6,24 +6,27 @@ You should be able to add and subtract minutes to it.
6
6
 
7
7
  Two clocks that represent the same time should be equal to each other.
8
8
 
9
+ # Java Tips
10
+
9
11
  In order to satisfy the requirement that two clocks are considered equal just when they are set to the same time, you will need to override the [`equals`](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals(java.lang.Object)) and [`hashcode`](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode) methods in your `Clock` class.
10
12
 
11
13
  For more information on how to override these methods, see [this JavaWorld article](https://web.archive.org/web/20170528222153/http://www.javaworld.com/article/2072762/java-app-dev/object-equality.html).
12
14
 
13
15
 
16
+ # Running the tests
14
17
 
15
- To run the tests:
18
+ You can run all the tests for an exercise by entering
16
19
 
17
20
  ```sh
18
21
  $ gradle test
19
22
  ```
20
23
 
21
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
22
-
24
+ in your terminal.
23
25
 
24
26
  ## Source
25
27
 
26
28
  Pairing session with Erin Drummond [https://twitter.com/ebdrummond](https://twitter.com/ebdrummond)
27
29
 
28
30
  ## Submitting Incomplete Solutions
31
+
29
32
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -26,19 +26,20 @@ Starting with n = 12, the steps would be as follows:
26
26
 
27
27
  Resulting in 9 steps. So for input n = 12, the return value would be 9.
28
28
 
29
+ # Running the tests
29
30
 
30
- To run the tests:
31
+ You can run all the tests for an exercise by entering
31
32
 
32
33
  ```sh
33
34
  $ gradle test
34
35
  ```
35
36
 
36
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
37
-
37
+ in your terminal.
38
38
 
39
39
  ## Source
40
40
 
41
41
  An unsolved problem in mathematics named after mathematician Lothar Collatz [https://en.wikipedia.org/wiki/3x_%2B_1_problem](https://en.wikipedia.org/wiki/3x_%2B_1_problem)
42
42
 
43
43
  ## Submitting Incomplete Solutions
44
+
44
45
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -31,19 +31,20 @@ Implement the following operations:
31
31
 
32
32
  Assume the programming language you are using does not have an implementation of complex numbers.
33
33
 
34
+ # Running the tests
34
35
 
35
- To run the tests:
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
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
42
-
42
+ in your terminal.
43
43
 
44
44
  ## Source
45
45
 
46
46
  Wikipedia [https://en.wikipedia.org/wiki/Complex_number](https://en.wikipedia.org/wiki/Complex_number)
47
47
 
48
48
  ## Submitting Incomplete Solutions
49
+
49
50
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -69,19 +69,20 @@ aohghn
69
69
  sseoau
70
70
  ```
71
71
 
72
+ # Running the tests
72
73
 
73
- To run the tests:
74
+ You can run all the tests for an exercise by entering
74
75
 
75
76
  ```sh
76
77
  $ gradle test
77
78
  ```
78
79
 
79
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
80
-
80
+ in your terminal.
81
81
 
82
82
  ## Source
83
83
 
84
84
  J Dalbey's Programming Practice problems [http://users.csc.calpoly.edu/~jdalbey/103/Projects/ProgrammingPractice.html](http://users.csc.calpoly.edu/~jdalbey/103/Projects/ProgrammingPractice.html)
85
85
 
86
86
  ## Submitting Incomplete Solutions
87
+
87
88
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -7,16 +7,17 @@ type, like a set. In this exercise you will define your own set. How it
7
7
  works internally doesn't matter, as long as it behaves like a set of
8
8
  unique elements.
9
9
 
10
+ # Running the tests
10
11
 
11
- To run the tests:
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
- For more detailed info about the Java track see the [help page](http://exercism.io/languages/java).
18
-
18
+ in your terminal.
19
19
 
20
20
 
21
21
  ## Submitting Incomplete Solutions
22
+
22
23
  It's possible to submit an incomplete solution so you can see how others have completed the exercise.