trackler 2.2.1.92 → 2.2.1.93

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/acronym/canonical-data.json +3 -11
  4. data/problem-specifications/exercises/hamming/canonical-data.json +61 -31
  5. data/problem-specifications/exercises/react/canonical-data.json +472 -436
  6. data/tracks/ceylon/exercises/hamming/source/hamming/HammingTest.ceylon +1 -1
  7. data/tracks/ceylon/exercises/largest-series-product/source/largestseriesproduct/SeriesTest.ceylon +1 -1
  8. data/tracks/ceylon/exercises/leap/source/leap/LeapTest.ceylon +1 -1
  9. data/tracks/ceylon/exercises/react/source/react/ReactorTest.ceylon +1 -1
  10. data/tracks/ceylon/exercises/rna-transcription/source/rnatranscription/RNATest.ceylon +1 -1
  11. data/tracks/ceylon/exercises/sieve/source/sieve/SieveTest.ceylon +1 -1
  12. data/tracks/common-lisp/config.json +9 -9
  13. data/tracks/crystal/exercises/acronym/spec/acronym_spec.cr +0 -4
  14. data/tracks/crystal/exercises/binary/spec/binary_spec.cr +6 -6
  15. data/tracks/crystal/exercises/forth/spec/forth_spec.cr +48 -32
  16. data/tracks/crystal/exercises/hello-world/spec/hello_world_spec.cr +1 -9
  17. data/tracks/crystal/exercises/pascals-triangle/spec/pascals_triangle_spec.cr +13 -1
  18. data/tracks/crystal/generator/spec/exercise_generator_spec.cr +1 -1
  19. data/tracks/crystal/generator/src/generators/acronym.cr +1 -1
  20. data/tracks/crystal/generator/src/generators/binary.cr +2 -2
  21. data/tracks/crystal/generator/src/generators/flatten_array.cr +1 -1
  22. data/tracks/crystal/generator/src/generators/forth.cr +3 -3
  23. data/tracks/crystal/generator/src/generators/pascals-triangle.cr +11 -4
  24. data/tracks/delphi/exercises/phone-number/uPhoneNumberTests.pas +35 -10
  25. data/tracks/factor/exercises/isogram/README.md +2 -2
  26. data/tracks/fortran/.travis.yml +0 -1
  27. data/tracks/go/exercises/book-store/.meta/gen.go +3 -3
  28. data/tracks/go/exercises/book-store/.meta/hints.md +14 -0
  29. data/tracks/go/exercises/book-store/README.md +17 -1
  30. data/tracks/go/exercises/book-store/cases_test.go +17 -17
  31. data/tracks/go/exercises/book-store/example.go +13 -11
  32. data/tracks/go/exercises/bowling/.meta/gen.go +10 -8
  33. data/tracks/go/exercises/bowling/cases_test.go +2 -2
  34. data/tracks/go/exercises/bracket-push/.meta/gen.go +5 -3
  35. data/tracks/go/exercises/bracket-push/cases_test.go +2 -2
  36. data/tracks/go/exercises/dominoes/.meta/gen.go +7 -3
  37. data/tracks/go/exercises/dominoes/cases_test.go +12 -2
  38. data/tracks/go/exercises/nucleotide-count/.meta/gen.go +87 -0
  39. data/tracks/go/exercises/nucleotide-count/.meta/hints.md +20 -0
  40. data/tracks/go/exercises/nucleotide-count/cases_test.go +39 -0
  41. data/tracks/go/exercises/nucleotide-count/example.go +6 -16
  42. data/tracks/go/exercises/nucleotide-count/nucleotide_count_test.go +16 -93
  43. data/tracks/go/exercises/sum-of-multiples/.meta/gen.go +6 -4
  44. data/tracks/go/exercises/sum-of-multiples/cases_test.go +2 -2
  45. data/tracks/haskell/README.md +6 -5
  46. data/tracks/haskell/config.json +73 -73
  47. data/tracks/haskell/exercises/allergies/{HINTS.md → .meta/hints.md} +0 -0
  48. data/tracks/haskell/exercises/alphametics/{HINTS.md → .meta/hints.md} +0 -0
  49. data/tracks/haskell/exercises/anagram/{HINTS.md → .meta/hints.md} +0 -0
  50. data/tracks/haskell/exercises/bank-account/{HINTS.md → .meta/hints.md} +0 -0
  51. data/tracks/haskell/exercises/beer-song/{HINTS.md → .meta/hints.md} +0 -0
  52. data/tracks/haskell/exercises/binary-search-tree/{HINTS.md → .meta/hints.md} +0 -0
  53. data/tracks/haskell/exercises/bowling/{HINTS.md → .meta/hints.md} +0 -0
  54. data/tracks/haskell/exercises/clock/{HINTS.md → .meta/hints.md} +0 -0
  55. data/tracks/haskell/exercises/custom-set/{HINTS.md → .meta/hints.md} +0 -0
  56. data/tracks/haskell/exercises/food-chain/{HINTS.md → .meta/hints.md} +0 -0
  57. data/tracks/haskell/exercises/forth/{HINTS.md → .meta/hints.md} +0 -0
  58. data/tracks/haskell/exercises/go-counting/{HINTS.md → .meta/hints.md} +0 -0
  59. data/tracks/haskell/exercises/grade-school/{HINTS.md → .meta/hints.md} +0 -0
  60. data/tracks/haskell/exercises/hello-world/{HINTS.md → .meta/hints.md} +0 -0
  61. data/tracks/haskell/exercises/hello-world/package.yaml +1 -1
  62. data/tracks/haskell/exercises/house/{HINTS.md → .meta/hints.md} +0 -0
  63. data/tracks/haskell/exercises/isbn-verifier/README.md +1 -1
  64. data/tracks/haskell/exercises/largest-series-product/package.yaml +1 -1
  65. data/tracks/haskell/exercises/leap/{HINTS.md → .meta/hints.md} +0 -0
  66. data/tracks/haskell/exercises/leap/package.yaml +1 -1
  67. data/tracks/haskell/exercises/linked-list/{HINTS.md → .meta/hints.md} +0 -0
  68. data/tracks/haskell/exercises/matrix/{HINTS.md → .meta/hints.md} +0 -0
  69. data/tracks/haskell/exercises/meetup/{HINTS.md → .meta/hints.md} +0 -0
  70. data/tracks/haskell/exercises/minesweeper/package.yaml +1 -1
  71. data/tracks/haskell/exercises/nth-prime/package.yaml +1 -1
  72. data/tracks/haskell/exercises/nucleotide-count/package.yaml +1 -1
  73. data/tracks/haskell/exercises/octal/{HINTS.md → .meta/hints.md} +0 -0
  74. data/tracks/haskell/exercises/palindrome-products/{HINTS.md → .meta/hints.md} +0 -0
  75. data/tracks/haskell/exercises/parallel-letter-frequency/{HINTS.md → .meta/hints.md} +0 -0
  76. data/tracks/haskell/exercises/pascals-triangle/package.yaml +1 -1
  77. data/tracks/haskell/exercises/perfect-numbers/package.yaml +1 -1
  78. data/tracks/haskell/exercises/phone-number/package.yaml +1 -1
  79. data/tracks/haskell/exercises/phone-number/test/Tests.hs +10 -2
  80. data/tracks/haskell/exercises/pig-latin/package.yaml +1 -1
  81. data/tracks/haskell/exercises/queen-attack/{HINTS.md → .meta/hints.md} +0 -0
  82. data/tracks/haskell/exercises/rna-transcription/package.yaml +1 -1
  83. data/tracks/haskell/exercises/robot-name/{HINTS.md → .meta/hints.md} +0 -0
  84. data/tracks/haskell/exercises/robot-simulator/{HINTS.md → .meta/hints.md} +0 -0
  85. data/tracks/haskell/exercises/roman-numerals/{HINTS.md → .meta/hints.md} +0 -0
  86. data/tracks/haskell/exercises/roman-numerals/package.yaml +1 -1
  87. data/tracks/haskell/exercises/rotational-cipher/package.yaml +1 -1
  88. data/tracks/haskell/exercises/saddle-points/package.yaml +1 -1
  89. data/tracks/haskell/exercises/scrabble-score/package.yaml +1 -1
  90. data/tracks/haskell/exercises/secret-handshake/package.yaml +1 -1
  91. data/tracks/haskell/exercises/series/{HINTS.md → .meta/hints.md} +0 -0
  92. data/tracks/haskell/exercises/sgf-parsing/{HINTS.md → .meta/hints.md} +0 -0
  93. data/tracks/haskell/exercises/sieve/package.yaml +1 -1
  94. data/tracks/haskell/exercises/simple-linked-list/{HINTS.md → .meta/hints.md} +0 -0
  95. data/tracks/haskell/exercises/space-age/{HINTS.md → .meta/hints.md} +0 -0
  96. data/tracks/haskell/exercises/space-age/package.yaml +1 -1
  97. data/tracks/haskell/exercises/spiral-matrix/package.yaml +1 -1
  98. data/tracks/haskell/exercises/sublist/{HINTS.md → .meta/hints.md} +0 -0
  99. data/tracks/haskell/exercises/sublist/package.yaml +1 -1
  100. data/tracks/haskell/exercises/trinary/{HINTS.md → .meta/hints.md} +0 -0
  101. data/tracks/haskell/exercises/twelve-days/package.yaml +1 -1
  102. data/tracks/haskell/exercises/word-count/{HINTS.md → .meta/hints.md} +0 -0
  103. data/tracks/haskell/exercises/wordy/{HINTS.md → .meta/hints.md} +0 -0
  104. data/tracks/haskell/exercises/zebra-puzzle/package.yaml +1 -1
  105. data/tracks/java/exercises/phone-number/.meta/src/reference/java/PhoneNumber.java +10 -2
  106. data/tracks/java/exercises/phone-number/.meta/version +1 -0
  107. data/tracks/java/exercises/phone-number/src/test/java/PhoneNumberTest.java +56 -19
  108. data/tracks/purescript/config/exercise_readme.go.tmpl +0 -3
  109. data/tracks/swift/.travis.yml +0 -18
  110. data/tracks/swift/circle.yml +17 -6
  111. metadata +41 -37
  112. data/tracks/purescript/docs/EXERCISE_README_INSERT.md +0 -0
@@ -1,5 +1,5 @@
1
1
  name: space-age
2
- version: 1.0.0.3
2
+ version: 1.1.0.4
3
3
 
4
4
  dependencies:
5
5
  - base
@@ -1,5 +1,5 @@
1
1
  name: spiral-matrix
2
- version: 1.0.0.1
2
+ version: 1.1.0.2
3
3
 
4
4
  dependencies:
5
5
  - base
@@ -1,5 +1,5 @@
1
1
  name: sublist
2
- version: 1.0.0.3
2
+ version: 1.1.0.4
3
3
 
4
4
  dependencies:
5
5
  - base
@@ -1,5 +1,5 @@
1
1
  name: twelve-days
2
- version: 1.0.0.1
2
+ version: 1.1.0.2
3
3
 
4
4
  dependencies:
5
5
  - base
@@ -1,5 +1,5 @@
1
1
  name: zebra-puzzle
2
- version: 1.0.0.3
2
+ version: 1.1.0.4
3
3
 
4
4
  dependencies:
5
5
  - base
@@ -9,8 +9,8 @@ public class PhoneNumber {
9
9
  private String extractDigits(String dirtyNumber) {
10
10
  StringBuilder stringBuilder = new StringBuilder();
11
11
  for (char c : dirtyNumber.toCharArray()) {
12
- if (c == ' ' || c == '.' || c == '(' || c == ')' || c == '-') {
13
- // Remove spaces, dots, parentheses and hyphens
12
+ if (c == ' ' || c == '.' || c == '(' || c == ')' || c == '-' || c == '+') {
13
+ // Remove spaces, dots, parentheses, hyphens and pluses
14
14
  continue;
15
15
  }
16
16
  if (!Character.isDigit(c)) {
@@ -34,6 +34,14 @@ public class PhoneNumber {
34
34
  throw new IllegalArgumentException("Can only have 11 digits if number starts with '1'");
35
35
  }
36
36
  }
37
+
38
+ if (number.startsWith("0") || number.startsWith("1")){
39
+ throw new IllegalArgumentException("Illegal Area Or Exchange Code. "
40
+ + "Only 2-9 are valid digits");
41
+ } else if (number.charAt(3) == '0' || number.charAt(3) == '1'){
42
+ throw new IllegalArgumentException("Illegal Area Or Exchange Code. "
43
+ + "Only 2-9 are valid digits");
44
+ }
37
45
 
38
46
  return number;
39
47
  }
@@ -11,14 +11,16 @@ public class PhoneNumberTest {
11
11
  "Can only have 11 digits if number starts with '1'";
12
12
  private final static String illegalCharacterExceptionMessage =
13
13
  "Illegal character in phone number. Only digits, spaces, parentheses, hyphens or dots accepted.";
14
+ private final static String illegalAreaOrExchangeCodeMessage =
15
+ "Illegal Area Or Exchange Code. Only 2-9 are valid digits";
14
16
 
15
17
  @Rule
16
18
  public ExpectedException expectedException = ExpectedException.none();
17
19
 
18
20
  @Test
19
- public void cleansNumber() {
20
- final String expectedNumber = "1234567890";
21
- final String actualNumber = new PhoneNumber("(123) 456-7890").getNumber();
21
+ public void cleansTheNumber() {
22
+ final String expectedNumber = "2234567890";
23
+ final String actualNumber = new PhoneNumber("(223) 456-7890").getNumber();
22
24
 
23
25
  assertEquals(
24
26
  expectedNumber, actualNumber
@@ -27,9 +29,9 @@ public class PhoneNumberTest {
27
29
 
28
30
  @Ignore("Remove to run test")
29
31
  @Test
30
- public void cleansNumberWithDots() {
31
- final String expectedNumber = "1234567890";
32
- final String actualNumber = new PhoneNumber("123.456.7890").getNumber();
32
+ public void cleansNumbersWithDots() {
33
+ final String expectedNumber = "2234567890";
34
+ final String actualNumber = new PhoneNumber("223.456.7890").getNumber();
33
35
 
34
36
  assertEquals(
35
37
  expectedNumber, actualNumber
@@ -38,9 +40,9 @@ public class PhoneNumberTest {
38
40
 
39
41
  @Ignore("Remove to run test")
40
42
  @Test
41
- public void cleansNumberWithMultipleSpaces() {
42
- final String expectedNumber = "1234567890";
43
- final String actualNumber = new PhoneNumber("123 456 7890 ").getNumber();
43
+ public void cleansNumbersWithMultipleSpaces() {
44
+ final String expectedNumber = "2234567890";
45
+ final String actualNumber = new PhoneNumber("223 456 7890 ").getNumber();
44
46
 
45
47
  assertEquals(
46
48
  expectedNumber, actualNumber
@@ -57,17 +59,28 @@ public class PhoneNumberTest {
57
59
 
58
60
  @Ignore("Remove to run test")
59
61
  @Test
60
- public void invalidWhen11Digits() {
62
+ public void invalidWhen11DigitsDoesNotStartWith1() {
61
63
  expectedException.expect(IllegalArgumentException.class);
62
64
  expectedException.expectMessage(numberIs11DigitsButDoesNotStartWith1ExceptionMessage);
63
- new PhoneNumber("21234567890");
65
+ new PhoneNumber("22234567890");
64
66
  }
65
67
 
66
68
  @Ignore("Remove to run test")
67
69
  @Test
68
- public void validWhen11DigitsAndFirstIs1() {
69
- final String expectedNumber = "1234567890";
70
- final String actualNumber = new PhoneNumber("11234567890").getNumber();
70
+ public void validWhen11DigitsAndStartingWith1() {
71
+ final String expectedNumber = "2234567890";
72
+ final String actualNumber = new PhoneNumber("12234567890").getNumber();
73
+
74
+ assertEquals(
75
+ expectedNumber, actualNumber
76
+ );
77
+ }
78
+
79
+ @Ignore("Remove to run test")
80
+ @Test
81
+ public void validWhen11DigitsAndStartingWith1EvenWithPunctuation() {
82
+ final String expectedNumber = "2234567890";
83
+ final String actualNumber = new PhoneNumber("+1 (223) 456-7890").getNumber();
71
84
 
72
85
  assertEquals(
73
86
  expectedNumber, actualNumber
@@ -76,7 +89,7 @@ public class PhoneNumberTest {
76
89
 
77
90
  @Ignore("Remove to run test")
78
91
  @Test
79
- public void invalidWhen12Digits() {
92
+ public void invalidWhenMoreThan11Digits() {
80
93
  expectedException.expect(IllegalArgumentException.class);
81
94
  expectedException.expectMessage(wrongLengthExceptionMessage);
82
95
  new PhoneNumber("321234567890");
@@ -92,17 +105,41 @@ public class PhoneNumberTest {
92
105
 
93
106
  @Ignore("Remove to run test")
94
107
  @Test
95
- public void invalidWithPunctuation() {
108
+ public void invalidWithPunctuations() {
96
109
  expectedException.expect(IllegalArgumentException.class);
97
110
  expectedException.expectMessage(illegalCharacterExceptionMessage);
98
111
  new PhoneNumber("123-@:!-7890");
99
112
  }
113
+
114
+ @Ignore("Remove to run test")
115
+ @Test
116
+ public void invalidIfAreaCodeStartsWith0() {
117
+ expectedException.expect(IllegalArgumentException.class);
118
+ expectedException.expectMessage(illegalAreaOrExchangeCodeMessage);
119
+ new PhoneNumber("(023) 456-7890");
120
+ }
121
+
122
+ @Ignore("Remove to run test")
123
+ @Test
124
+ public void invalidIfAreaCodeStartsWith1() {
125
+ expectedException.expect(IllegalArgumentException.class);
126
+ expectedException.expectMessage(illegalAreaOrExchangeCodeMessage);
127
+ new PhoneNumber("(123) 456-7890");
128
+ }
129
+
130
+ @Ignore("Remove to run test")
131
+ @Test
132
+ public void invalidIfExchangeCodeStartsWith0() {
133
+ expectedException.expect(IllegalArgumentException.class);
134
+ expectedException.expectMessage(illegalAreaOrExchangeCodeMessage);
135
+ new PhoneNumber("(223) 056-7890");
136
+ }
100
137
 
101
138
  @Ignore("Remove to run test")
102
139
  @Test
103
- public void invalidWithRightNumberOfDigitsButLettersMixedIn() {
140
+ public void invalidIfExchangeCodeStartsWith1() {
104
141
  expectedException.expect(IllegalArgumentException.class);
105
- expectedException.expectMessage(illegalCharacterExceptionMessage);
106
- new PhoneNumber("1a2b3c4d5e6f7g8h9i0j");
142
+ expectedException.expectMessage(illegalAreaOrExchangeCodeMessage);
143
+ new PhoneNumber("(223) 156-7890");
107
144
  }
108
145
  }
@@ -4,9 +4,6 @@
4
4
  {{- with .Hints }}
5
5
  {{ . }}
6
6
  {{ end }}
7
- {{- with .TrackInsert }}
8
- {{ . }}
9
- {{ end }}
10
7
  {{- with .Spec.Credits -}}
11
8
  ## Source
12
9
 
@@ -1,20 +1,7 @@
1
1
  language: generic
2
2
 
3
- before_install:
4
- - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then gem install danger ; fi
5
- - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update ; fi
6
- - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew outdated swiftlint || brew upgrade swiftlint ; fi
7
-
8
3
  matrix:
9
4
  include:
10
- - script:
11
- - swiftlint lint --quiet >> lintreport.json || true # Dont crash on errors
12
- - ls
13
- - python -m json.tool lintreport.json
14
- - ./xswift-test-spm
15
- env: JOB=SPM
16
- os: osx
17
- osx_image: xcode9
18
5
  - script:
19
6
  - bin/fetch-configlet
20
7
  - bin/configlet lint .
@@ -30,9 +17,4 @@ matrix:
30
17
  sudo: required
31
18
  services: docker
32
19
 
33
- after_success:
34
- - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then danger ; fi
35
- - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then ls -al ; fi
36
-
37
-
38
20
 
@@ -1,6 +1,17 @@
1
- machine:
2
- xcode:
3
- version: "9.0"
4
- test:
5
- override:
6
- - ./xswift-test-spm
1
+ version: 2
2
+
3
+ jobs:
4
+ build:
5
+ macos:
6
+ xcode: "9.0"
7
+ steps:
8
+ - checkout
9
+ - run: sudo gem install danger
10
+ - run: brew update
11
+ - run: brew outdated swiftlint || brew upgrade swiftlint
12
+ - run: swiftlint lint --quiet | tee lintreport.json || true # Dont crash on errors
13
+ - run: ./xswift-test-spm
14
+ - run:
15
+ name: Danger Systems
16
+ when: on_success
17
+ command: danger
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trackler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1.92
4
+ version: 2.2.1.93
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katrina Owen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-15 00:00:00.000000000 Z
11
+ date: 2018-01-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -5916,6 +5916,7 @@ files:
5916
5916
  - tracks/go/exercises/bob/cases_test.go
5917
5917
  - tracks/go/exercises/bob/example.go
5918
5918
  - tracks/go/exercises/book-store/.meta/gen.go
5919
+ - tracks/go/exercises/book-store/.meta/hints.md
5919
5920
  - tracks/go/exercises/book-store/README.md
5920
5921
  - tracks/go/exercises/book-store/book_store_test.go
5921
5922
  - tracks/go/exercises/book-store/cases_test.go
@@ -6092,7 +6093,10 @@ files:
6092
6093
  - tracks/go/exercises/nth-prime/cases_test.go
6093
6094
  - tracks/go/exercises/nth-prime/example.go
6094
6095
  - tracks/go/exercises/nth-prime/nth_prime_test.go
6096
+ - tracks/go/exercises/nucleotide-count/.meta/gen.go
6097
+ - tracks/go/exercises/nucleotide-count/.meta/hints.md
6095
6098
  - tracks/go/exercises/nucleotide-count/README.md
6099
+ - tracks/go/exercises/nucleotide-count/cases_test.go
6096
6100
  - tracks/go/exercises/nucleotide-count/example.go
6097
6101
  - tracks/go/exercises/nucleotide-count/nucleotide_count.go
6098
6102
  - tracks/go/exercises/nucleotide-count/nucleotide_count_test.go
@@ -6470,7 +6474,7 @@ files:
6470
6474
  - tracks/haskell/exercises/all-your-base/src/Base.hs
6471
6475
  - tracks/haskell/exercises/all-your-base/stack.yaml
6472
6476
  - tracks/haskell/exercises/all-your-base/test/Tests.hs
6473
- - tracks/haskell/exercises/allergies/HINTS.md
6477
+ - tracks/haskell/exercises/allergies/.meta/hints.md
6474
6478
  - tracks/haskell/exercises/allergies/README.md
6475
6479
  - tracks/haskell/exercises/allergies/examples/success-standard/package.yaml
6476
6480
  - tracks/haskell/exercises/allergies/examples/success-standard/src/Allergies.hs
@@ -6478,7 +6482,7 @@ files:
6478
6482
  - tracks/haskell/exercises/allergies/src/Allergies.hs
6479
6483
  - tracks/haskell/exercises/allergies/stack.yaml
6480
6484
  - tracks/haskell/exercises/allergies/test/Tests.hs
6481
- - tracks/haskell/exercises/alphametics/HINTS.md
6485
+ - tracks/haskell/exercises/alphametics/.meta/hints.md
6482
6486
  - tracks/haskell/exercises/alphametics/README.md
6483
6487
  - tracks/haskell/exercises/alphametics/examples/success-standard/package.yaml
6484
6488
  - tracks/haskell/exercises/alphametics/examples/success-standard/src/Alphametics.hs
@@ -6486,7 +6490,7 @@ files:
6486
6490
  - tracks/haskell/exercises/alphametics/src/Alphametics.hs
6487
6491
  - tracks/haskell/exercises/alphametics/stack.yaml
6488
6492
  - tracks/haskell/exercises/alphametics/test/Tests.hs
6489
- - tracks/haskell/exercises/anagram/HINTS.md
6493
+ - tracks/haskell/exercises/anagram/.meta/hints.md
6490
6494
  - tracks/haskell/exercises/anagram/README.md
6491
6495
  - tracks/haskell/exercises/anagram/examples/success-liststring/package.yaml
6492
6496
  - tracks/haskell/exercises/anagram/examples/success-liststring/src/Anagram.hs
@@ -6503,7 +6507,7 @@ files:
6503
6507
  - tracks/haskell/exercises/atbash-cipher/src/Atbash.hs
6504
6508
  - tracks/haskell/exercises/atbash-cipher/stack.yaml
6505
6509
  - tracks/haskell/exercises/atbash-cipher/test/Tests.hs
6506
- - tracks/haskell/exercises/bank-account/HINTS.md
6510
+ - tracks/haskell/exercises/bank-account/.meta/hints.md
6507
6511
  - tracks/haskell/exercises/bank-account/README.md
6508
6512
  - tracks/haskell/exercises/bank-account/examples/success-standard/package.yaml
6509
6513
  - tracks/haskell/exercises/bank-account/examples/success-standard/src/BankAccount.hs
@@ -6511,7 +6515,7 @@ files:
6511
6515
  - tracks/haskell/exercises/bank-account/src/BankAccount.hs
6512
6516
  - tracks/haskell/exercises/bank-account/stack.yaml
6513
6517
  - tracks/haskell/exercises/bank-account/test/Tests.hs
6514
- - tracks/haskell/exercises/beer-song/HINTS.md
6518
+ - tracks/haskell/exercises/beer-song/.meta/hints.md
6515
6519
  - tracks/haskell/exercises/beer-song/README.md
6516
6520
  - tracks/haskell/exercises/beer-song/examples/success-standard/package.yaml
6517
6521
  - tracks/haskell/exercises/beer-song/examples/success-standard/src/Beer.hs
@@ -6519,7 +6523,7 @@ files:
6519
6523
  - tracks/haskell/exercises/beer-song/src/Beer.hs
6520
6524
  - tracks/haskell/exercises/beer-song/stack.yaml
6521
6525
  - tracks/haskell/exercises/beer-song/test/Tests.hs
6522
- - tracks/haskell/exercises/binary-search-tree/HINTS.md
6526
+ - tracks/haskell/exercises/binary-search-tree/.meta/hints.md
6523
6527
  - tracks/haskell/exercises/binary-search-tree/README.md
6524
6528
  - tracks/haskell/exercises/binary-search-tree/examples/success-standard/package.yaml
6525
6529
  - tracks/haskell/exercises/binary-search-tree/examples/success-standard/src/BST.hs
@@ -6541,7 +6545,7 @@ files:
6541
6545
  - tracks/haskell/exercises/bob/src/Bob.hs
6542
6546
  - tracks/haskell/exercises/bob/stack.yaml
6543
6547
  - tracks/haskell/exercises/bob/test/Tests.hs
6544
- - tracks/haskell/exercises/bowling/HINTS.md
6548
+ - tracks/haskell/exercises/bowling/.meta/hints.md
6545
6549
  - tracks/haskell/exercises/bowling/README.md
6546
6550
  - tracks/haskell/exercises/bowling/examples/success-standard/package.yaml
6547
6551
  - tracks/haskell/exercises/bowling/examples/success-standard/src/Bowling.hs
@@ -6564,7 +6568,7 @@ files:
6564
6568
  - tracks/haskell/exercises/change/stack.yaml
6565
6569
  - tracks/haskell/exercises/change/test/Tests.hs
6566
6570
  - tracks/haskell/exercises/clock/.meta/DONT-TEST-STUB
6567
- - tracks/haskell/exercises/clock/HINTS.md
6571
+ - tracks/haskell/exercises/clock/.meta/hints.md
6568
6572
  - tracks/haskell/exercises/clock/README.md
6569
6573
  - tracks/haskell/exercises/clock/examples/success-standard/package.yaml
6570
6574
  - tracks/haskell/exercises/clock/examples/success-standard/src/Clock.hs
@@ -6600,7 +6604,7 @@ files:
6600
6604
  - tracks/haskell/exercises/crypto-square/src/CryptoSquare.hs
6601
6605
  - tracks/haskell/exercises/crypto-square/stack.yaml
6602
6606
  - tracks/haskell/exercises/crypto-square/test/Tests.hs
6603
- - tracks/haskell/exercises/custom-set/HINTS.md
6607
+ - tracks/haskell/exercises/custom-set/.meta/hints.md
6604
6608
  - tracks/haskell/exercises/custom-set/README.md
6605
6609
  - tracks/haskell/exercises/custom-set/examples/success-standard/package.yaml
6606
6610
  - tracks/haskell/exercises/custom-set/examples/success-standard/src/CustomSet.hs
@@ -6636,7 +6640,7 @@ files:
6636
6640
  - tracks/haskell/exercises/etl/src/ETL.hs
6637
6641
  - tracks/haskell/exercises/etl/stack.yaml
6638
6642
  - tracks/haskell/exercises/etl/test/Tests.hs
6639
- - tracks/haskell/exercises/food-chain/HINTS.md
6643
+ - tracks/haskell/exercises/food-chain/.meta/hints.md
6640
6644
  - tracks/haskell/exercises/food-chain/README.md
6641
6645
  - tracks/haskell/exercises/food-chain/examples/success-standard/package.yaml
6642
6646
  - tracks/haskell/exercises/food-chain/examples/success-standard/src/FoodChain.hs
@@ -6644,7 +6648,7 @@ files:
6644
6648
  - tracks/haskell/exercises/food-chain/src/FoodChain.hs
6645
6649
  - tracks/haskell/exercises/food-chain/stack.yaml
6646
6650
  - tracks/haskell/exercises/food-chain/test/Tests.hs
6647
- - tracks/haskell/exercises/forth/HINTS.md
6651
+ - tracks/haskell/exercises/forth/.meta/hints.md
6648
6652
  - tracks/haskell/exercises/forth/README.md
6649
6653
  - tracks/haskell/exercises/forth/examples/success-standard/package.yaml
6650
6654
  - tracks/haskell/exercises/forth/examples/success-standard/src/Forth.hs
@@ -6659,7 +6663,7 @@ files:
6659
6663
  - tracks/haskell/exercises/gigasecond/src/Gigasecond.hs
6660
6664
  - tracks/haskell/exercises/gigasecond/stack.yaml
6661
6665
  - tracks/haskell/exercises/gigasecond/test/Tests.hs
6662
- - tracks/haskell/exercises/go-counting/HINTS.md
6666
+ - tracks/haskell/exercises/go-counting/.meta/hints.md
6663
6667
  - tracks/haskell/exercises/go-counting/README.md
6664
6668
  - tracks/haskell/exercises/go-counting/examples/success-standard/package.yaml
6665
6669
  - tracks/haskell/exercises/go-counting/examples/success-standard/src/Counting.hs
@@ -6667,7 +6671,7 @@ files:
6667
6671
  - tracks/haskell/exercises/go-counting/src/Counting.hs
6668
6672
  - tracks/haskell/exercises/go-counting/stack.yaml
6669
6673
  - tracks/haskell/exercises/go-counting/test/Tests.hs
6670
- - tracks/haskell/exercises/grade-school/HINTS.md
6674
+ - tracks/haskell/exercises/grade-school/.meta/hints.md
6671
6675
  - tracks/haskell/exercises/grade-school/README.md
6672
6676
  - tracks/haskell/exercises/grade-school/examples/success-standard/package.yaml
6673
6677
  - tracks/haskell/exercises/grade-school/examples/success-standard/src/School.hs
@@ -6689,7 +6693,7 @@ files:
6689
6693
  - tracks/haskell/exercises/hamming/src/Hamming.hs
6690
6694
  - tracks/haskell/exercises/hamming/stack.yaml
6691
6695
  - tracks/haskell/exercises/hamming/test/Tests.hs
6692
- - tracks/haskell/exercises/hello-world/HINTS.md
6696
+ - tracks/haskell/exercises/hello-world/.meta/hints.md
6693
6697
  - tracks/haskell/exercises/hello-world/README.md
6694
6698
  - tracks/haskell/exercises/hello-world/examples/success-standard/package.yaml
6695
6699
  - tracks/haskell/exercises/hello-world/examples/success-standard/src/HelloWorld.hs
@@ -6704,7 +6708,7 @@ files:
6704
6708
  - tracks/haskell/exercises/hexadecimal/src/Hexadecimal.hs
6705
6709
  - tracks/haskell/exercises/hexadecimal/stack.yaml
6706
6710
  - tracks/haskell/exercises/hexadecimal/test/Tests.hs
6707
- - tracks/haskell/exercises/house/HINTS.md
6711
+ - tracks/haskell/exercises/house/.meta/hints.md
6708
6712
  - tracks/haskell/exercises/house/README.md
6709
6713
  - tracks/haskell/exercises/house/examples/success-standard/package.yaml
6710
6714
  - tracks/haskell/exercises/house/examples/success-standard/src/House.hs
@@ -6740,7 +6744,7 @@ files:
6740
6744
  - tracks/haskell/exercises/largest-series-product/src/Series.hs
6741
6745
  - tracks/haskell/exercises/largest-series-product/stack.yaml
6742
6746
  - tracks/haskell/exercises/largest-series-product/test/Tests.hs
6743
- - tracks/haskell/exercises/leap/HINTS.md
6747
+ - tracks/haskell/exercises/leap/.meta/hints.md
6744
6748
  - tracks/haskell/exercises/leap/README.md
6745
6749
  - tracks/haskell/exercises/leap/examples/error-nosig/package.yaml
6746
6750
  - tracks/haskell/exercises/leap/examples/error-nosig/src/LeapYear.hs
@@ -6757,7 +6761,7 @@ files:
6757
6761
  - tracks/haskell/exercises/lens-person/src/Person.hs
6758
6762
  - tracks/haskell/exercises/lens-person/stack.yaml
6759
6763
  - tracks/haskell/exercises/lens-person/test/Tests.hs
6760
- - tracks/haskell/exercises/linked-list/HINTS.md
6764
+ - tracks/haskell/exercises/linked-list/.meta/hints.md
6761
6765
  - tracks/haskell/exercises/linked-list/README.md
6762
6766
  - tracks/haskell/exercises/linked-list/examples/success-standard/package.yaml
6763
6767
  - tracks/haskell/exercises/linked-list/examples/success-standard/src/Deque.hs
@@ -6779,7 +6783,7 @@ files:
6779
6783
  - tracks/haskell/exercises/luhn/src/Luhn.hs
6780
6784
  - tracks/haskell/exercises/luhn/stack.yaml
6781
6785
  - tracks/haskell/exercises/luhn/test/Tests.hs
6782
- - tracks/haskell/exercises/matrix/HINTS.md
6786
+ - tracks/haskell/exercises/matrix/.meta/hints.md
6783
6787
  - tracks/haskell/exercises/matrix/README.md
6784
6788
  - tracks/haskell/exercises/matrix/examples/success-standard/package.yaml
6785
6789
  - tracks/haskell/exercises/matrix/examples/success-standard/src/Matrix.hs
@@ -6787,7 +6791,7 @@ files:
6787
6791
  - tracks/haskell/exercises/matrix/src/Matrix.hs
6788
6792
  - tracks/haskell/exercises/matrix/stack.yaml
6789
6793
  - tracks/haskell/exercises/matrix/test/Tests.hs
6790
- - tracks/haskell/exercises/meetup/HINTS.md
6794
+ - tracks/haskell/exercises/meetup/.meta/hints.md
6791
6795
  - tracks/haskell/exercises/meetup/README.md
6792
6796
  - tracks/haskell/exercises/meetup/examples/success-standard/package.yaml
6793
6797
  - tracks/haskell/exercises/meetup/examples/success-standard/src/Meetup.hs
@@ -6823,7 +6827,7 @@ files:
6823
6827
  - tracks/haskell/exercises/ocr-numbers/src/OCR.hs
6824
6828
  - tracks/haskell/exercises/ocr-numbers/stack.yaml
6825
6829
  - tracks/haskell/exercises/ocr-numbers/test/Tests.hs
6826
- - tracks/haskell/exercises/octal/HINTS.md
6830
+ - tracks/haskell/exercises/octal/.meta/hints.md
6827
6831
  - tracks/haskell/exercises/octal/README.md
6828
6832
  - tracks/haskell/exercises/octal/examples/success-standard/package.yaml
6829
6833
  - tracks/haskell/exercises/octal/examples/success-standard/src/Octal.hs
@@ -6831,7 +6835,7 @@ files:
6831
6835
  - tracks/haskell/exercises/octal/src/Octal.hs
6832
6836
  - tracks/haskell/exercises/octal/stack.yaml
6833
6837
  - tracks/haskell/exercises/octal/test/Tests.hs
6834
- - tracks/haskell/exercises/palindrome-products/HINTS.md
6838
+ - tracks/haskell/exercises/palindrome-products/.meta/hints.md
6835
6839
  - tracks/haskell/exercises/palindrome-products/README.md
6836
6840
  - tracks/haskell/exercises/palindrome-products/examples/success-standard/package.yaml
6837
6841
  - tracks/haskell/exercises/palindrome-products/examples/success-standard/src/Palindromes.hs
@@ -6846,7 +6850,7 @@ files:
6846
6850
  - tracks/haskell/exercises/pangram/src/Pangram.hs
6847
6851
  - tracks/haskell/exercises/pangram/stack.yaml
6848
6852
  - tracks/haskell/exercises/pangram/test/Tests.hs
6849
- - tracks/haskell/exercises/parallel-letter-frequency/HINTS.md
6853
+ - tracks/haskell/exercises/parallel-letter-frequency/.meta/hints.md
6850
6854
  - tracks/haskell/exercises/parallel-letter-frequency/README.md
6851
6855
  - tracks/haskell/exercises/parallel-letter-frequency/bench/Benchmark.hs
6852
6856
  - tracks/haskell/exercises/parallel-letter-frequency/examples/success-standard/package.yaml
@@ -6904,7 +6908,7 @@ files:
6904
6908
  - tracks/haskell/exercises/pythagorean-triplet/src/Triplet.hs
6905
6909
  - tracks/haskell/exercises/pythagorean-triplet/stack.yaml
6906
6910
  - tracks/haskell/exercises/pythagorean-triplet/test/Tests.hs
6907
- - tracks/haskell/exercises/queen-attack/HINTS.md
6911
+ - tracks/haskell/exercises/queen-attack/.meta/hints.md
6908
6912
  - tracks/haskell/exercises/queen-attack/README.md
6909
6913
  - tracks/haskell/exercises/queen-attack/examples/success-standard/package.yaml
6910
6914
  - tracks/haskell/exercises/queen-attack/examples/success-standard/src/Queens.hs
@@ -6933,7 +6937,7 @@ files:
6933
6937
  - tracks/haskell/exercises/rna-transcription/src/DNA.hs
6934
6938
  - tracks/haskell/exercises/rna-transcription/stack.yaml
6935
6939
  - tracks/haskell/exercises/rna-transcription/test/Tests.hs
6936
- - tracks/haskell/exercises/robot-name/HINTS.md
6940
+ - tracks/haskell/exercises/robot-name/.meta/hints.md
6937
6941
  - tracks/haskell/exercises/robot-name/README.md
6938
6942
  - tracks/haskell/exercises/robot-name/examples/success-standard/package.yaml
6939
6943
  - tracks/haskell/exercises/robot-name/examples/success-standard/src/Robot.hs
@@ -6941,7 +6945,7 @@ files:
6941
6945
  - tracks/haskell/exercises/robot-name/src/Robot.hs
6942
6946
  - tracks/haskell/exercises/robot-name/stack.yaml
6943
6947
  - tracks/haskell/exercises/robot-name/test/Tests.hs
6944
- - tracks/haskell/exercises/robot-simulator/HINTS.md
6948
+ - tracks/haskell/exercises/robot-simulator/.meta/hints.md
6945
6949
  - tracks/haskell/exercises/robot-simulator/README.md
6946
6950
  - tracks/haskell/exercises/robot-simulator/examples/success-standard/package.yaml
6947
6951
  - tracks/haskell/exercises/robot-simulator/examples/success-standard/src/Robot.hs
@@ -6949,7 +6953,7 @@ files:
6949
6953
  - tracks/haskell/exercises/robot-simulator/src/Robot.hs
6950
6954
  - tracks/haskell/exercises/robot-simulator/stack.yaml
6951
6955
  - tracks/haskell/exercises/robot-simulator/test/Tests.hs
6952
- - tracks/haskell/exercises/roman-numerals/HINTS.md
6956
+ - tracks/haskell/exercises/roman-numerals/.meta/hints.md
6953
6957
  - tracks/haskell/exercises/roman-numerals/README.md
6954
6958
  - tracks/haskell/exercises/roman-numerals/examples/success-standard/package.yaml
6955
6959
  - tracks/haskell/exercises/roman-numerals/examples/success-standard/src/Roman.hs
@@ -6999,7 +7003,7 @@ files:
6999
7003
  - tracks/haskell/exercises/secret-handshake/src/SecretHandshake.hs
7000
7004
  - tracks/haskell/exercises/secret-handshake/stack.yaml
7001
7005
  - tracks/haskell/exercises/secret-handshake/test/Tests.hs
7002
- - tracks/haskell/exercises/series/HINTS.md
7006
+ - tracks/haskell/exercises/series/.meta/hints.md
7003
7007
  - tracks/haskell/exercises/series/README.md
7004
7008
  - tracks/haskell/exercises/series/examples/success-byteseqs/package.yaml
7005
7009
  - tracks/haskell/exercises/series/examples/success-byteseqs/src/Series.hs
@@ -7009,7 +7013,7 @@ files:
7009
7013
  - tracks/haskell/exercises/series/src/Series.hs
7010
7014
  - tracks/haskell/exercises/series/stack.yaml
7011
7015
  - tracks/haskell/exercises/series/test/Tests.hs
7012
- - tracks/haskell/exercises/sgf-parsing/HINTS.md
7016
+ - tracks/haskell/exercises/sgf-parsing/.meta/hints.md
7013
7017
  - tracks/haskell/exercises/sgf-parsing/README.md
7014
7018
  - tracks/haskell/exercises/sgf-parsing/examples/success-standard/package.yaml
7015
7019
  - tracks/haskell/exercises/sgf-parsing/examples/success-standard/src/Sgf.hs
@@ -7031,7 +7035,7 @@ files:
7031
7035
  - tracks/haskell/exercises/simple-cipher/src/Cipher.hs
7032
7036
  - tracks/haskell/exercises/simple-cipher/stack.yaml
7033
7037
  - tracks/haskell/exercises/simple-cipher/test/Tests.hs
7034
- - tracks/haskell/exercises/simple-linked-list/HINTS.md
7038
+ - tracks/haskell/exercises/simple-linked-list/.meta/hints.md
7035
7039
  - tracks/haskell/exercises/simple-linked-list/README.md
7036
7040
  - tracks/haskell/exercises/simple-linked-list/examples/success-standard/package.yaml
7037
7041
  - tracks/haskell/exercises/simple-linked-list/examples/success-standard/src/LinkedList.hs
@@ -7039,7 +7043,7 @@ files:
7039
7043
  - tracks/haskell/exercises/simple-linked-list/src/LinkedList.hs
7040
7044
  - tracks/haskell/exercises/simple-linked-list/stack.yaml
7041
7045
  - tracks/haskell/exercises/simple-linked-list/test/Tests.hs
7042
- - tracks/haskell/exercises/space-age/HINTS.md
7046
+ - tracks/haskell/exercises/space-age/.meta/hints.md
7043
7047
  - tracks/haskell/exercises/space-age/README.md
7044
7048
  - tracks/haskell/exercises/space-age/examples/success-double/package.yaml
7045
7049
  - tracks/haskell/exercises/space-age/examples/success-double/src/SpaceAge.hs
@@ -7065,7 +7069,7 @@ files:
7065
7069
  - tracks/haskell/exercises/strain/src/Strain.hs
7066
7070
  - tracks/haskell/exercises/strain/stack.yaml
7067
7071
  - tracks/haskell/exercises/strain/test/Tests.hs
7068
- - tracks/haskell/exercises/sublist/HINTS.md
7072
+ - tracks/haskell/exercises/sublist/.meta/hints.md
7069
7073
  - tracks/haskell/exercises/sublist/README.md
7070
7074
  - tracks/haskell/exercises/sublist/examples/success-standard/package.yaml
7071
7075
  - tracks/haskell/exercises/sublist/examples/success-standard/src/Sublist.hs
@@ -7087,7 +7091,7 @@ files:
7087
7091
  - tracks/haskell/exercises/triangle/src/Triangle.hs
7088
7092
  - tracks/haskell/exercises/triangle/stack.yaml
7089
7093
  - tracks/haskell/exercises/triangle/test/Tests.hs
7090
- - tracks/haskell/exercises/trinary/HINTS.md
7094
+ - tracks/haskell/exercises/trinary/.meta/hints.md
7091
7095
  - tracks/haskell/exercises/trinary/README.md
7092
7096
  - tracks/haskell/exercises/trinary/examples/success-standard/package.yaml
7093
7097
  - tracks/haskell/exercises/trinary/examples/success-standard/src/Trinary.hs
@@ -7102,7 +7106,7 @@ files:
7102
7106
  - tracks/haskell/exercises/twelve-days/src/TwelveDays.hs
7103
7107
  - tracks/haskell/exercises/twelve-days/stack.yaml
7104
7108
  - tracks/haskell/exercises/twelve-days/test/Tests.hs
7105
- - tracks/haskell/exercises/word-count/HINTS.md
7109
+ - tracks/haskell/exercises/word-count/.meta/hints.md
7106
7110
  - tracks/haskell/exercises/word-count/README.md
7107
7111
  - tracks/haskell/exercises/word-count/examples/success-newtype/package.yaml
7108
7112
  - tracks/haskell/exercises/word-count/examples/success-newtype/src/WordCount.hs
@@ -7112,7 +7116,7 @@ files:
7112
7116
  - tracks/haskell/exercises/word-count/src/WordCount.hs
7113
7117
  - tracks/haskell/exercises/word-count/stack.yaml
7114
7118
  - tracks/haskell/exercises/word-count/test/Tests.hs
7115
- - tracks/haskell/exercises/wordy/HINTS.md
7119
+ - tracks/haskell/exercises/wordy/.meta/hints.md
7116
7120
  - tracks/haskell/exercises/wordy/README.md
7117
7121
  - tracks/haskell/exercises/wordy/examples/success-standard/package.yaml
7118
7122
  - tracks/haskell/exercises/wordy/examples/success-standard/src/WordProblem.hs
@@ -7597,6 +7601,7 @@ files:
7597
7601
  - tracks/java/exercises/perfect-numbers/src/test/java/NaturalNumberTest.java
7598
7602
  - tracks/java/exercises/phone-number/.meta/hints.md
7599
7603
  - tracks/java/exercises/phone-number/.meta/src/reference/java/PhoneNumber.java
7604
+ - tracks/java/exercises/phone-number/.meta/version
7600
7605
  - tracks/java/exercises/phone-number/README.md
7601
7606
  - tracks/java/exercises/phone-number/build.gradle
7602
7607
  - tracks/java/exercises/phone-number/src/main/java/.keep
@@ -10769,7 +10774,6 @@ files:
10769
10774
  - tracks/purescript/config/exercise_readme.go.tmpl
10770
10775
  - tracks/purescript/config/maintainers.json
10771
10776
  - tracks/purescript/docs/ABOUT.md
10772
- - tracks/purescript/docs/EXERCISE_README_INSERT.md
10773
10777
  - tracks/purescript/docs/INSTALLATION.md
10774
10778
  - tracks/purescript/docs/LEARNING.md
10775
10779
  - tracks/purescript/docs/RESOURCES.md