trackler 2.2.1.13 → 2.2.1.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (146) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/change/canonical-data.json +8 -1
  4. data/tracks/csharp/config.json +25 -26
  5. data/tracks/csharp/docs/SNIPPET.txt +7 -0
  6. data/tracks/csharp/exercises/house/Example.cs +5 -5
  7. data/tracks/csharp/exercises/house/House.cs +6 -1
  8. data/tracks/csharp/exercises/house/HouseTest.cs +208 -5
  9. data/tracks/csharp/exercises/phone-number/Example.cs +2 -1
  10. data/tracks/csharp/exercises/phone-number/PhoneNumberTest.cs +8 -7
  11. data/tracks/csharp/exercises/rna-transcription/Example.cs +2 -1
  12. data/tracks/csharp/exercises/rna-transcription/RnaTranscriptionTest.cs +4 -3
  13. data/tracks/csharp/exercises/say/SayTest.cs +20 -24
  14. data/tracks/csharp/exercises/sieve/Example.cs +6 -0
  15. data/tracks/csharp/exercises/sieve/SieveTest.cs +25 -17
  16. data/tracks/csharp/exercises/space-age/SpaceAgeTest.cs +19 -24
  17. data/tracks/csharp/exercises/sum-of-multiples/Example.cs +1 -1
  18. data/tracks/csharp/exercises/sum-of-multiples/SumOfMultiples.cs +1 -1
  19. data/tracks/csharp/exercises/sum-of-multiples/SumOfMultiplesTest.cs +48 -16
  20. data/tracks/csharp/generators/Exercises/House.cs +16 -0
  21. data/tracks/csharp/generators/Exercises/PhoneNumber.cs +3 -1
  22. data/tracks/csharp/generators/Exercises/RnaTranscription.cs +11 -1
  23. data/tracks/csharp/generators/Exercises/Say.cs +22 -0
  24. data/tracks/csharp/generators/Exercises/Sieve.cs +17 -0
  25. data/tracks/csharp/generators/Exercises/SpaceAge.cs +25 -0
  26. data/tracks/csharp/generators/Exercises/SumOfMultiples.cs +22 -0
  27. data/tracks/csharp/generators/Output/ValueFormatter.cs +4 -0
  28. data/tracks/dart/docs/ABOUT.md +21 -0
  29. data/tracks/ecmascript/README.md +1 -1
  30. data/tracks/ecmascript/config.json +15 -0
  31. data/tracks/ecmascript/exercises/proverb/README.md +63 -0
  32. data/tracks/ecmascript/exercises/proverb/example.js +23 -0
  33. data/tracks/ecmascript/exercises/proverb/package.json +69 -0
  34. data/tracks/ecmascript/exercises/proverb/proverb.spec.js +70 -0
  35. data/tracks/go/config.json +226 -226
  36. data/tracks/groovy/config.json +11 -0
  37. data/tracks/groovy/exercises/two-fer/Example.groovy +6 -0
  38. data/tracks/groovy/exercises/two-fer/README.md +62 -0
  39. data/tracks/groovy/exercises/two-fer/TwoFer.groovy +6 -0
  40. data/tracks/groovy/exercises/two-fer/TwoFerSpec.groovy +24 -0
  41. data/tracks/java/.travis.yml +2 -2
  42. data/tracks/java/bin/journey-test.sh +44 -1
  43. data/tracks/java/bin/run-journey-test-from-ci.sh +28 -0
  44. data/tracks/java/{docs/EXERCISE_README_INSERT.md → config/exercise-readme-insert.md} +0 -0
  45. data/tracks/java/exercises/bank-account/{HINTS.md → .meta/hints.md} +0 -0
  46. data/tracks/java/exercises/change/src/test/java/ChangeCalculatorTest.java +27 -2
  47. data/tracks/java/exercises/clock/{HINTS.md → .meta/hints.md} +0 -0
  48. data/tracks/java/exercises/hamming/{HINTS.md → .meta/hints.md} +0 -0
  49. data/tracks/java/exercises/hello-world/{HINTS.md → .meta/hints.md} +0 -0
  50. data/tracks/java/exercises/isogram/{HINTS.md → .meta/hints.md} +0 -0
  51. data/tracks/java/exercises/list-ops/{HINTS.md → .meta/hints.md} +0 -0
  52. data/tracks/java/exercises/pig-latin/src/example/java/PigLatinTranslator.java +17 -20
  53. data/tracks/java/exercises/simple-cipher/{HINTS.md → .meta/hints.md} +0 -0
  54. data/tracks/java/exercises/two-fer/{HINTS.md → .meta/hints.md} +0 -0
  55. data/tracks/kotlin/{docs/EXERCISE_README_INSERT.md → config/exercise-readme-insert.md} +0 -0
  56. data/tracks/kotlin/exercises/accumulate/README.md +1 -4
  57. data/tracks/kotlin/exercises/acronym/README.md +1 -1
  58. data/tracks/kotlin/exercises/all-your-base/README.md +1 -1
  59. data/tracks/kotlin/exercises/allergies/README.md +1 -1
  60. data/tracks/kotlin/exercises/anagram/README.md +1 -1
  61. data/tracks/kotlin/exercises/atbash-cipher/README.md +1 -1
  62. data/tracks/kotlin/exercises/bank-account/README.md +1 -1
  63. data/tracks/kotlin/exercises/beer-song/README.md +1 -1
  64. data/tracks/kotlin/exercises/binary-search/README.md +1 -1
  65. data/tracks/kotlin/exercises/binary/README.md +1 -1
  66. data/tracks/kotlin/exercises/bob/README.md +1 -1
  67. data/tracks/kotlin/exercises/bracket-push/README.md +1 -1
  68. data/tracks/kotlin/exercises/change/README.md +1 -1
  69. data/tracks/kotlin/exercises/clock/README.md +1 -1
  70. data/tracks/kotlin/exercises/collatz-conjecture/README.md +1 -1
  71. data/tracks/kotlin/exercises/complex-numbers/README.md +1 -1
  72. data/tracks/kotlin/exercises/diamond/README.md +1 -1
  73. data/tracks/kotlin/exercises/difference-of-squares/README.md +1 -1
  74. data/tracks/kotlin/exercises/etl/README.md +1 -1
  75. data/tracks/kotlin/exercises/flatten-array/README.md +1 -1
  76. data/tracks/kotlin/exercises/gigasecond/README.md +1 -1
  77. data/tracks/kotlin/exercises/grade-school/README.md +1 -1
  78. data/tracks/kotlin/exercises/grains/README.md +1 -1
  79. data/tracks/kotlin/exercises/hamming/README.md +1 -1
  80. data/tracks/kotlin/exercises/hello-world/README.md +1 -1
  81. data/tracks/kotlin/exercises/hexadecimal/README.md +1 -1
  82. data/tracks/kotlin/exercises/isogram/README.md +1 -1
  83. data/tracks/kotlin/exercises/largest-series-product/README.md +1 -1
  84. data/tracks/kotlin/exercises/leap/README.md +1 -1
  85. data/tracks/kotlin/exercises/linked-list/README.md +1 -1
  86. data/tracks/kotlin/exercises/list-ops/{HINTS.md → .meta/hints.md} +0 -0
  87. data/tracks/kotlin/exercises/list-ops/README.md +1 -1
  88. data/tracks/kotlin/exercises/luhn/README.md +1 -1
  89. data/tracks/kotlin/exercises/minesweeper/README.md +1 -1
  90. data/tracks/kotlin/exercises/nth-prime/README.md +1 -1
  91. data/tracks/kotlin/exercises/nucleotide-count/README.md +1 -1
  92. data/tracks/kotlin/exercises/pangram/README.md +1 -1
  93. data/tracks/kotlin/exercises/pascals-triangle/README.md +1 -1
  94. data/tracks/kotlin/exercises/perfect-numbers/README.md +1 -1
  95. data/tracks/kotlin/exercises/phone-number/README.md +1 -1
  96. data/tracks/kotlin/exercises/pig-latin/README.md +1 -1
  97. data/tracks/kotlin/exercises/prime-factors/README.md +1 -1
  98. data/tracks/kotlin/exercises/raindrops/README.md +1 -1
  99. data/tracks/kotlin/exercises/react/README.md +1 -1
  100. data/tracks/kotlin/exercises/rna-transcription/README.md +1 -1
  101. data/tracks/kotlin/exercises/robot-name/README.md +1 -1
  102. data/tracks/kotlin/exercises/robot-simulator/README.md +1 -1
  103. data/tracks/kotlin/exercises/roman-numerals/README.md +1 -1
  104. data/tracks/kotlin/exercises/saddle-points/README.md +1 -1
  105. data/tracks/kotlin/exercises/scrabble-score/README.md +1 -1
  106. data/tracks/kotlin/exercises/secret-handshake/README.md +1 -1
  107. data/tracks/kotlin/exercises/series/README.md +1 -1
  108. data/tracks/kotlin/exercises/sieve/README.md +1 -1
  109. data/tracks/kotlin/exercises/simple-cipher/README.md +2 -2
  110. data/tracks/kotlin/exercises/space-age/README.md +3 -2
  111. data/tracks/kotlin/exercises/spiral-matrix/README.md +1 -1
  112. data/tracks/kotlin/exercises/strain/README.md +1 -1
  113. data/tracks/kotlin/exercises/sublist/README.md +1 -1
  114. data/tracks/kotlin/exercises/sum-of-multiples/README.md +1 -1
  115. data/tracks/kotlin/exercises/triangle/README.md +1 -1
  116. data/tracks/kotlin/exercises/word-count/README.md +1 -1
  117. data/tracks/pony/exercises/atbash-cipher/example.pony +4 -3
  118. data/tracks/pony/exercises/beer-song/example.pony +10 -9
  119. data/tracks/pony/exercises/bob/example.pony +1 -1
  120. data/tracks/pony/exercises/difference-of-squares/example.pony +2 -2
  121. data/tracks/pony/exercises/hamming/example.pony +1 -1
  122. data/tracks/pony/exercises/hamming/test.pony +2 -2
  123. data/tracks/pony/exercises/leap/example.pony +1 -1
  124. data/tracks/pony/exercises/pascals-triangle/example.pony +2 -2
  125. data/tracks/pony/exercises/rna-transcription/test.pony +2 -2
  126. data/tracks/pony/exercises/roman-numerals/test.pony +2 -2
  127. data/tracks/python/config.json +22 -0
  128. data/tracks/python/docs/ABOUT.md +11 -3
  129. data/tracks/python/exercises/collatz-conjecture/README.md +61 -0
  130. data/tracks/python/exercises/collatz-conjecture/collatz_conjecture.py +2 -0
  131. data/tracks/python/exercises/collatz-conjecture/collatz_conjecture_test.py +32 -0
  132. data/tracks/python/exercises/collatz-conjecture/example.py +17 -0
  133. data/tracks/python/exercises/isogram/isogram.py +1 -1
  134. data/tracks/python/exercises/isogram/isogram_test.py +3 -0
  135. data/tracks/python/exercises/scale-generator/example.py +2 -0
  136. data/tracks/python/exercises/scale-generator/scale_generator_test.py +4 -0
  137. data/tracks/python/exercises/two-fer/README.md +29 -0
  138. data/tracks/python/exercises/two-fer/example.py +5 -0
  139. data/tracks/python/exercises/two-fer/two_fer.py +2 -0
  140. data/tracks/python/exercises/two-fer/two_fer_test.py +18 -0
  141. data/tracks/r/config/maintainers.json +2 -2
  142. data/tracks/ruby/config.json +2 -1
  143. data/tracks/scala/exercises/minesweeper/src/test/scala/MinesweeperTest.scala +85 -36
  144. data/tracks/scala/testgen/src/main/scala/MinesweeperTestGenerator.scala +15 -0
  145. data/tracks/vimscript/README.md +1 -1
  146. metadata +37 -13
@@ -0,0 +1,2 @@
1
+ def two_fer():
2
+ pass
@@ -0,0 +1,18 @@
1
+ import unittest
2
+
3
+ import two_fer
4
+
5
+
6
+ class Two_Fer_test(unittest.TestCase):
7
+ def test_empty(self):
8
+ self.assertEqual(two_fer.two_fer(), 'One for you, one for me.')
9
+
10
+ def test_eve(self):
11
+ self.assertEqual(two_fer.two_fer("Eve"), "One for Eve, one for me.")
12
+
13
+ def test_bob(self):
14
+ self.assertEqual(two_fer.two_fer("Bob"), "One for Bob, one for me.")
15
+
16
+
17
+ if __name__ == '__main__':
18
+ unittest.main()
@@ -16,8 +16,8 @@
16
16
  "alumnus": false,
17
17
  "name": null,
18
18
  "bio": "I struggled to apply R to my own PhD research data in 2013. A Science Craft grad school course finally got me started when I decided to use another, well-formated data set. Since then, I have found R to be a lifeline for data analysis and teaching myself and others one or the other programming skill :-) R may not be pretty, but it gets the job done.",
19
- "link_text": "KonScience podcast (mostly German)",
20
- "link_url": "www.konscience.de/archiv/recorded-talks/",
19
+ "link_text": "GitHub",
20
+ "link_url": "https://github.com/katrinleinweber",
21
21
  "avatar_url": null
22
22
  },
23
23
  {
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "language": "Ruby",
3
3
  "active": true,
4
- "gitter": "xruby",
4
+ "blurb" : "Ruby is a dynamic, open source programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write.",
5
+ "gitter": "ruby",
5
6
  "solution_pattern": "[Ee]xample|\\.meta/solutions/[^/]*\\.rb",
6
7
  "exercises": [
7
8
  {
@@ -1,73 +1,122 @@
1
- import org.scalatest.{Matchers, FlatSpec}
1
+ import org.scalatest.{Matchers, FunSuite}
2
2
 
3
- class MinesweeperTest extends FlatSpec with Matchers {
3
+ /** @version 1.0.0 */
4
+ class MinesweeperTest extends FunSuite with Matchers {
4
5
 
5
- it should "handle zero size board" in {
6
- Minesweeper.annotate(List.empty) should equal(List.empty)
6
+ test("no rows") {
7
+ Minesweeper.annotate(List()) should be(List())
7
8
  }
8
9
 
9
- it should "handle empty board" in {
10
+ test("no columns") {
11
+ pending
12
+ Minesweeper.annotate(List("")) should be(List(""))
13
+ }
14
+
15
+ test("no mines") {
10
16
  pending
11
17
  Minesweeper.annotate(List(" ",
12
18
  " ",
13
- " ")) should
14
- equal(List(" ",
15
- " ",
16
- " "))
19
+ " ")) should be(
20
+ List(" ",
21
+ " ",
22
+ " "))
17
23
  }
18
24
 
19
- it should "handle board full of mines" in {
25
+ test("board with only mines") {
20
26
  pending
21
27
  Minesweeper.annotate(List("***",
22
28
  "***",
23
- "***")) should
24
- equal(List("***",
25
- "***",
26
- "***"))
29
+ "***")) should be(
30
+ List("***",
31
+ "***",
32
+ "***"))
27
33
  }
28
34
 
29
- it should "handle surrounded" in {
35
+ test("mine surrounded by spaces") {
36
+ pending
37
+ Minesweeper.annotate(List(" ",
38
+ " * ",
39
+ " ")) should be(
40
+ List("111",
41
+ "1*1",
42
+ "111"))
43
+ }
44
+
45
+ test("space surrounded by mines") {
30
46
  pending
31
47
  Minesweeper.annotate(List("***",
32
48
  "* *",
33
- "***")) should
34
- equal(List("***",
35
- "*8*",
36
- "***"))
49
+ "***")) should be(
50
+ List("***",
51
+ "*8*",
52
+ "***"))
37
53
  }
38
54
 
39
- it should "handle horizontal line" in {
55
+ test("horizontal line") {
40
56
  pending
41
- Minesweeper.annotate(List(" * * ")) should
42
- equal(List("1*2*1"))
57
+ Minesweeper.annotate(List(" * * ")) should be(List("1*2*1"))
43
58
  }
44
59
 
60
+ test("horizontal line, mines at edges") {
61
+ pending
62
+ Minesweeper.annotate(List("* *")) should be(List("*1 1*"))
63
+ }
45
64
 
46
- it should "handle vertical line" in {
65
+ test("vertical line") {
47
66
  pending
48
67
  Minesweeper.annotate(List(" ",
49
68
  "*",
50
69
  " ",
51
70
  "*",
52
- " ")) should
53
- equal(List("1",
54
- "*",
55
- "2",
56
- "*",
57
- "1"))
71
+ " ")) should be(
72
+ List("1",
73
+ "*",
74
+ "2",
75
+ "*",
76
+ "1"))
58
77
  }
59
78
 
60
- it should "handle cross" in {
79
+ test("vertical line, mines at edges") {
80
+ pending
81
+ Minesweeper.annotate(List("*",
82
+ " ",
83
+ " ",
84
+ " ",
85
+ "*")) should be(
86
+ List("*",
87
+ "1",
88
+ " ",
89
+ "1",
90
+ "*"))
91
+ }
92
+
93
+ test("cross") {
61
94
  pending
62
95
  Minesweeper.annotate(List(" * ",
63
96
  " * ",
64
97
  "*****",
65
98
  " * ",
66
- " * ")) should
67
- equal(List(" 2*2 ",
68
- "25*52",
69
- "*****",
70
- "25*52",
71
- " 2*2 "))
99
+ " * ")) should be(
100
+ List(" 2*2 ",
101
+ "25*52",
102
+ "*****",
103
+ "25*52",
104
+ " 2*2 "))
105
+ }
106
+
107
+ test("large board") {
108
+ pending
109
+ Minesweeper.annotate(List(" * * ",
110
+ " * ",
111
+ " * ",
112
+ " * *",
113
+ " * * ",
114
+ " ")) should be(
115
+ List("1*22*1",
116
+ "12*322",
117
+ " 123*2",
118
+ "112*4*",
119
+ "1*22*2",
120
+ "111111"))
72
121
  }
73
122
  }
@@ -0,0 +1,15 @@
1
+ import java.io.File
2
+
3
+ import testgen.TestSuiteBuilder._
4
+ import testgen._
5
+
6
+ object MinesweeperTestGenerator {
7
+ def main(args: Array[String]): Unit = {
8
+ val file = new File("src/main/resources/minesweeper.json")
9
+
10
+ val code = TestSuiteBuilder.build(file, fromLabeledTest("input"))
11
+ println(s"-------------")
12
+ println(code)
13
+ println(s"-------------")
14
+ }
15
+ }
@@ -1,7 +1,7 @@
1
1
  # Exercism Vim script Track
2
2
 
3
3
  ![build status](https://travis-ci.org/exercism/vimscript.svg?branch=master)
4
- [![Join the chat at https://gitter.im/exercism/xvimscript](https://badges.gitter.im/exercism/xvimscript.svg)](https://gitter.im/exercism/xvimscript?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
4
+ [![Join the chat at https://gitter.im/exercism/vimscript](https://badges.gitter.im/exercism/vimscript.svg)](https://gitter.im/exercism/vimscript?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
5
5
 
6
6
  We welcome any kind of contribution!
7
7
 
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.13
4
+ version: 2.2.1.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katrina Owen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-19 00:00:00.000000000 Z
11
+ date: 2017-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -1755,6 +1755,7 @@ files:
1755
1755
  - tracks/csharp/docs/INSTALLATION.md
1756
1756
  - tracks/csharp/docs/LEARNING.md
1757
1757
  - tracks/csharp/docs/RESOURCES.md
1758
+ - tracks/csharp/docs/SNIPPET.txt
1758
1759
  - tracks/csharp/docs/TESTS.md
1759
1760
  - tracks/csharp/exercises/Exercises.All.sln
1760
1761
  - tracks/csharp/exercises/Exercises.Default.sln
@@ -2354,6 +2355,7 @@ files:
2354
2355
  - tracks/csharp/generators/Exercises/Gigasecond.cs
2355
2356
  - tracks/csharp/generators/Exercises/Hamming.cs
2356
2357
  - tracks/csharp/generators/Exercises/HelloWorld.cs
2358
+ - tracks/csharp/generators/Exercises/House.cs
2357
2359
  - tracks/csharp/generators/Exercises/Isogram.cs
2358
2360
  - tracks/csharp/generators/Exercises/Leap.cs
2359
2361
  - tracks/csharp/generators/Exercises/Luhn.cs
@@ -2369,8 +2371,12 @@ files:
2369
2371
  - tracks/csharp/generators/Exercises/RomanNumerals.cs
2370
2372
  - tracks/csharp/generators/Exercises/RotationalCipher.cs
2371
2373
  - tracks/csharp/generators/Exercises/RunLengthEncoding.cs
2374
+ - tracks/csharp/generators/Exercises/Say.cs
2372
2375
  - tracks/csharp/generators/Exercises/ScrabbleScore.cs
2373
2376
  - tracks/csharp/generators/Exercises/SecretHandshake.cs
2377
+ - tracks/csharp/generators/Exercises/Sieve.cs
2378
+ - tracks/csharp/generators/Exercises/SpaceAge.cs
2379
+ - tracks/csharp/generators/Exercises/SumOfMultiples.cs
2374
2380
  - tracks/csharp/generators/Exercises/Transpose.cs
2375
2381
  - tracks/csharp/generators/Exercises/TwoFer.cs
2376
2382
  - tracks/csharp/generators/Exercises/Wordy.cs
@@ -2937,6 +2943,10 @@ files:
2937
2943
  - tracks/ecmascript/exercises/prime-factors/example.js
2938
2944
  - tracks/ecmascript/exercises/prime-factors/package.json
2939
2945
  - tracks/ecmascript/exercises/prime-factors/prime-factors.spec.js
2946
+ - tracks/ecmascript/exercises/proverb/README.md
2947
+ - tracks/ecmascript/exercises/proverb/example.js
2948
+ - tracks/ecmascript/exercises/proverb/package.json
2949
+ - tracks/ecmascript/exercises/proverb/proverb.spec.js
2940
2950
  - tracks/ecmascript/exercises/pythagorean-triplet/README.md
2941
2951
  - tracks/ecmascript/exercises/pythagorean-triplet/example.js
2942
2952
  - tracks/ecmascript/exercises/pythagorean-triplet/package.json
@@ -4947,6 +4957,10 @@ files:
4947
4957
  - tracks/groovy/exercises/roman-numerals/README.md
4948
4958
  - tracks/groovy/exercises/roman-numerals/RomanNumerals.groovy
4949
4959
  - tracks/groovy/exercises/roman-numerals/RomanNumeralsSpec.groovy
4960
+ - tracks/groovy/exercises/two-fer/Example.groovy
4961
+ - tracks/groovy/exercises/two-fer/README.md
4962
+ - tracks/groovy/exercises/two-fer/TwoFer.groovy
4963
+ - tracks/groovy/exercises/two-fer/TwoFerSpec.groovy
4950
4964
  - tracks/groovy/exercises/word-count/Example.groovy
4951
4965
  - tracks/groovy/exercises/word-count/README.md
4952
4966
  - tracks/groovy/exercises/word-count/WordCount.groovy
@@ -5679,12 +5693,13 @@ files:
5679
5693
  - tracks/java/bin/build-jq.sh
5680
5694
  - tracks/java/bin/fetch-configlet
5681
5695
  - tracks/java/bin/journey-test.sh
5696
+ - tracks/java/bin/run-journey-test-from-ci.sh
5682
5697
  - tracks/java/bin/unit-tests.sh
5683
5698
  - tracks/java/config.json
5699
+ - tracks/java/config/exercise-readme-insert.md
5684
5700
  - tracks/java/config/exercise_readme.go.tmpl
5685
5701
  - tracks/java/config/maintainers.json
5686
5702
  - tracks/java/docs/ABOUT.md
5687
- - tracks/java/docs/EXERCISE_README_INSERT.md
5688
5703
  - tracks/java/docs/INSTALLATION.md
5689
5704
  - tracks/java/docs/LEARNING.md
5690
5705
  - tracks/java/docs/MAINTAINING.md
@@ -5721,7 +5736,7 @@ files:
5721
5736
  - tracks/java/exercises/atbash-cipher/src/example/java/Atbash.java
5722
5737
  - tracks/java/exercises/atbash-cipher/src/main/java/.keep
5723
5738
  - tracks/java/exercises/atbash-cipher/src/test/java/AtbashTest.java
5724
- - tracks/java/exercises/bank-account/HINTS.md
5739
+ - tracks/java/exercises/bank-account/.meta/hints.md
5725
5740
  - tracks/java/exercises/bank-account/README.md
5726
5741
  - tracks/java/exercises/bank-account/build.gradle
5727
5742
  - tracks/java/exercises/bank-account/src/example/java/BankAccount.java
@@ -5781,7 +5796,7 @@ files:
5781
5796
  - tracks/java/exercises/circular-buffer/src/example/java/CircularBuffer.java
5782
5797
  - tracks/java/exercises/circular-buffer/src/main/java/BufferIOException.java
5783
5798
  - tracks/java/exercises/circular-buffer/src/test/java/CircularBufferTest.java
5784
- - tracks/java/exercises/clock/HINTS.md
5799
+ - tracks/java/exercises/clock/.meta/hints.md
5785
5800
  - tracks/java/exercises/clock/README.md
5786
5801
  - tracks/java/exercises/clock/build.gradle
5787
5802
  - tracks/java/exercises/clock/src/example/java/Clock.java
@@ -5851,13 +5866,13 @@ files:
5851
5866
  - tracks/java/exercises/grade-school/src/example/java/School.java
5852
5867
  - tracks/java/exercises/grade-school/src/main/java/.keep
5853
5868
  - tracks/java/exercises/grade-school/src/test/java/SchoolTest.java
5854
- - tracks/java/exercises/hamming/HINTS.md
5869
+ - tracks/java/exercises/hamming/.meta/hints.md
5855
5870
  - tracks/java/exercises/hamming/README.md
5856
5871
  - tracks/java/exercises/hamming/build.gradle
5857
5872
  - tracks/java/exercises/hamming/src/example/java/Hamming.java
5858
5873
  - tracks/java/exercises/hamming/src/main/java/Hamming.java
5859
5874
  - tracks/java/exercises/hamming/src/test/java/HammingTest.java
5860
- - tracks/java/exercises/hello-world/HINTS.md
5875
+ - tracks/java/exercises/hello-world/.meta/hints.md
5861
5876
  - tracks/java/exercises/hello-world/README.md
5862
5877
  - tracks/java/exercises/hello-world/TUTORIAL.md
5863
5878
  - tracks/java/exercises/hello-world/build.gradle
@@ -5874,7 +5889,7 @@ files:
5874
5889
  - tracks/java/exercises/house/src/example/java/House.java
5875
5890
  - tracks/java/exercises/house/src/main/java/.keep
5876
5891
  - tracks/java/exercises/house/src/test/java/HouseTest.java
5877
- - tracks/java/exercises/isogram/HINTS.md
5892
+ - tracks/java/exercises/isogram/.meta/hints.md
5878
5893
  - tracks/java/exercises/isogram/README.md
5879
5894
  - tracks/java/exercises/isogram/build.gradle
5880
5895
  - tracks/java/exercises/isogram/src/example/java/IsogramChecker.java
@@ -5896,7 +5911,7 @@ files:
5896
5911
  - tracks/java/exercises/linked-list/src/example/java/DoublyLinkedList.java
5897
5912
  - tracks/java/exercises/linked-list/src/main/java/.keep
5898
5913
  - tracks/java/exercises/linked-list/src/test/java/DoublyLinkedListTest.java
5899
- - tracks/java/exercises/list-ops/HINTS.md
5914
+ - tracks/java/exercises/list-ops/.meta/hints.md
5900
5915
  - tracks/java/exercises/list-ops/README.md
5901
5916
  - tracks/java/exercises/list-ops/build.gradle
5902
5917
  - tracks/java/exercises/list-ops/src/example/java/ListOps.java
@@ -6071,7 +6086,7 @@ files:
6071
6086
  - tracks/java/exercises/sieve/src/example/java/Sieve.java
6072
6087
  - tracks/java/exercises/sieve/src/main/java/Sieve.java
6073
6088
  - tracks/java/exercises/sieve/src/test/java/SieveTest.java
6074
- - tracks/java/exercises/simple-cipher/HINTS.md
6089
+ - tracks/java/exercises/simple-cipher/.meta/hints.md
6075
6090
  - tracks/java/exercises/simple-cipher/README.md
6076
6091
  - tracks/java/exercises/simple-cipher/build.gradle
6077
6092
  - tracks/java/exercises/simple-cipher/src/example/java/Cipher.java
@@ -6136,7 +6151,7 @@ files:
6136
6151
  - tracks/java/exercises/twelve-days/src/example/java/TwelveDays.java
6137
6152
  - tracks/java/exercises/twelve-days/src/main/java/TwelveDays.java
6138
6153
  - tracks/java/exercises/twelve-days/src/test/java/TwelveDaysTest.java
6139
- - tracks/java/exercises/two-fer/HINTS.md
6154
+ - tracks/java/exercises/two-fer/.meta/hints.md
6140
6155
  - tracks/java/exercises/two-fer/README.md
6141
6156
  - tracks/java/exercises/two-fer/build.gradle
6142
6157
  - tracks/java/exercises/two-fer/src/example/java/Twofer.java
@@ -6579,10 +6594,10 @@ files:
6579
6594
  - tracks/kotlin/bin/journey-test.sh
6580
6595
  - tracks/kotlin/bin/unit-tests.sh
6581
6596
  - tracks/kotlin/config.json
6597
+ - tracks/kotlin/config/exercise-readme-insert.md
6582
6598
  - tracks/kotlin/config/exercise_readme.go.tmpl
6583
6599
  - tracks/kotlin/config/maintainers.json
6584
6600
  - tracks/kotlin/docs/ABOUT.md
6585
- - tracks/kotlin/docs/EXERCISE_README_INSERT.md
6586
6601
  - tracks/kotlin/docs/INSTALLATION.md
6587
6602
  - tracks/kotlin/docs/LEARNING.md
6588
6603
  - tracks/kotlin/docs/RESOURCES.md
@@ -6753,7 +6768,7 @@ files:
6753
6768
  - tracks/kotlin/exercises/linked-list/src/example/kotlin/Deque.kt
6754
6769
  - tracks/kotlin/exercises/linked-list/src/main/kotlin/.keep
6755
6770
  - tracks/kotlin/exercises/linked-list/src/test/kotlin/DequeTest.kt
6756
- - tracks/kotlin/exercises/list-ops/HINTS.md
6771
+ - tracks/kotlin/exercises/list-ops/.meta/hints.md
6757
6772
  - tracks/kotlin/exercises/list-ops/README.md
6758
6773
  - tracks/kotlin/exercises/list-ops/build.gradle
6759
6774
  - tracks/kotlin/exercises/list-ops/src/example/kotlin/CustomListExtensions.kt
@@ -9190,6 +9205,10 @@ files:
9190
9205
  - tracks/python/exercises/clock/clock.py
9191
9206
  - tracks/python/exercises/clock/clock_test.py
9192
9207
  - tracks/python/exercises/clock/example.py
9208
+ - tracks/python/exercises/collatz-conjecture/README.md
9209
+ - tracks/python/exercises/collatz-conjecture/collatz_conjecture.py
9210
+ - tracks/python/exercises/collatz-conjecture/collatz_conjecture_test.py
9211
+ - tracks/python/exercises/collatz-conjecture/example.py
9193
9212
  - tracks/python/exercises/crypto-square/README.md
9194
9213
  - tracks/python/exercises/crypto-square/crypto_square.py
9195
9214
  - tracks/python/exercises/crypto-square/crypto_square_test.py
@@ -9453,6 +9472,10 @@ files:
9453
9472
  - tracks/python/exercises/twelve-days/example.py
9454
9473
  - tracks/python/exercises/twelve-days/twelve_days.py
9455
9474
  - tracks/python/exercises/twelve-days/twelve_days_test.py
9475
+ - tracks/python/exercises/two-fer/README.md
9476
+ - tracks/python/exercises/two-fer/example.py
9477
+ - tracks/python/exercises/two-fer/two_fer.py
9478
+ - tracks/python/exercises/two-fer/two_fer_test.py
9456
9479
  - tracks/python/exercises/variable-length-quantity/README.md
9457
9480
  - tracks/python/exercises/variable-length-quantity/example.py
9458
9481
  - tracks/python/exercises/variable-length-quantity/variable_length_quantity.py
@@ -11137,6 +11160,7 @@ files:
11137
11160
  - tracks/scala/testgen/src/main/scala/IsogramTestGenerator.scala
11138
11161
  - tracks/scala/testgen/src/main/scala/LeapTestGenerator.scala
11139
11162
  - tracks/scala/testgen/src/main/scala/LuhnTestGenerator.scala
11163
+ - tracks/scala/testgen/src/main/scala/MinesweeperTestGenerator.scala
11140
11164
  - tracks/scala/testgen/src/main/scala/NucleotideCountTestGenerator.scala
11141
11165
  - tracks/scala/testgen/src/main/scala/PangramsTestGenerator.scala
11142
11166
  - tracks/scala/testgen/src/main/scala/PascalsTriangleTestGenerator.scala