trackler 2.1.0.29 → 2.1.0.30

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. checksums.yaml +4 -4
  2. data/common/exercises/twelve-days/description.md +1 -1
  3. data/lib/trackler/version.rb +1 -1
  4. data/tracks/delphi/SETUP.md +1 -1
  5. data/tracks/ecmascript/Makefile +4 -3
  6. data/tracks/ecmascript/config.json +0 -65
  7. data/tracks/ecmascript/exercises/accumulate/package.json +6 -0
  8. data/tracks/ecmascript/exercises/acronym/package.json +6 -0
  9. data/tracks/ecmascript/exercises/all-your-base/package.json +6 -0
  10. data/tracks/ecmascript/exercises/allergies/package.json +6 -0
  11. data/tracks/ecmascript/exercises/anagram/package.json +6 -0
  12. data/tracks/ecmascript/exercises/atbash-cipher/package.json +6 -0
  13. data/tracks/ecmascript/exercises/beer-song/package.json +6 -0
  14. data/tracks/ecmascript/exercises/binary-search-tree/package.json +6 -0
  15. data/tracks/ecmascript/exercises/binary-search/package.json +6 -0
  16. data/tracks/ecmascript/exercises/binary/package.json +6 -0
  17. data/tracks/ecmascript/exercises/bob/package.json +6 -0
  18. data/tracks/ecmascript/exercises/bracket-push/package.json +6 -0
  19. data/tracks/ecmascript/exercises/circular-buffer/circular-buffer.spec.js +11 -13
  20. data/tracks/ecmascript/exercises/circular-buffer/example.js +15 -14
  21. data/tracks/ecmascript/exercises/circular-buffer/package.json +6 -0
  22. data/tracks/ecmascript/exercises/clock/package.json +6 -0
  23. data/tracks/ecmascript/exercises/connect/package.json +6 -0
  24. data/tracks/ecmascript/exercises/crypto-square/package.json +6 -0
  25. data/tracks/ecmascript/exercises/custom-set/package.json +6 -0
  26. data/tracks/ecmascript/exercises/diamond/package.json +6 -0
  27. data/tracks/ecmascript/exercises/difference-of-squares/package.json +6 -0
  28. data/tracks/ecmascript/exercises/etl/package.json +6 -0
  29. data/tracks/ecmascript/exercises/food-chain/package.json +6 -0
  30. data/tracks/ecmascript/exercises/gigasecond/package.json +6 -0
  31. data/tracks/ecmascript/exercises/grade-school/package.json +6 -0
  32. data/tracks/ecmascript/exercises/grains/package.json +6 -0
  33. data/tracks/ecmascript/exercises/hamming/package.json +6 -0
  34. data/tracks/ecmascript/exercises/hello-world/package.json +6 -0
  35. data/tracks/ecmascript/exercises/hexadecimal/package.json +6 -0
  36. data/tracks/ecmascript/exercises/isogram/package.json +6 -0
  37. data/tracks/ecmascript/exercises/kindergarten-garden/package.json +6 -0
  38. data/tracks/ecmascript/exercises/largest-series-product/package.json +6 -0
  39. data/tracks/ecmascript/exercises/leap/package.json +6 -0
  40. data/tracks/ecmascript/exercises/linked-list/package.json +6 -0
  41. data/tracks/ecmascript/exercises/luhn/package.json +6 -0
  42. data/tracks/ecmascript/exercises/matrix/package.json +6 -0
  43. data/tracks/ecmascript/exercises/meetup/package.json +6 -0
  44. data/tracks/ecmascript/exercises/nth-prime/package.json +6 -0
  45. data/tracks/ecmascript/exercises/ocr-numbers/package.json +6 -0
  46. data/tracks/ecmascript/exercises/octal/package.json +6 -0
  47. data/tracks/ecmascript/exercises/package.json +11 -0
  48. data/tracks/ecmascript/exercises/palindrome-products/package.json +6 -0
  49. data/tracks/ecmascript/exercises/pangram/package.json +6 -0
  50. data/tracks/ecmascript/exercises/pascals-triangle/package.json +6 -0
  51. data/tracks/ecmascript/exercises/perfect-numbers/package.json +6 -0
  52. data/tracks/ecmascript/exercises/phone-number/package.json +6 -0
  53. data/tracks/ecmascript/exercises/pig-latin/package.json +6 -0
  54. data/tracks/ecmascript/exercises/prime-factors/package.json +6 -0
  55. data/tracks/ecmascript/exercises/pythagorean-triplet/package.json +6 -0
  56. data/tracks/ecmascript/exercises/queen-attack/package.json +6 -0
  57. data/tracks/ecmascript/exercises/raindrops/package.json +6 -0
  58. data/tracks/ecmascript/exercises/rna-transcription/package.json +6 -0
  59. data/tracks/ecmascript/exercises/robot-name/package.json +6 -0
  60. data/tracks/ecmascript/exercises/robot-simulator/package.json +6 -0
  61. data/tracks/ecmascript/exercises/roman-numerals/package.json +6 -0
  62. data/tracks/ecmascript/exercises/saddle-points/package.json +6 -0
  63. data/tracks/ecmascript/exercises/say/package.json +6 -0
  64. data/tracks/ecmascript/exercises/scrabble-score/package.json +6 -0
  65. data/tracks/ecmascript/exercises/secret-handshake/package.json +6 -0
  66. data/tracks/ecmascript/exercises/series/package.json +6 -0
  67. data/tracks/ecmascript/exercises/sieve/package.json +6 -0
  68. data/tracks/ecmascript/exercises/simple-cipher/package.json +6 -0
  69. data/tracks/ecmascript/exercises/space-age/package.json +6 -0
  70. data/tracks/ecmascript/exercises/strain/package.json +6 -0
  71. data/tracks/ecmascript/exercises/sum-of-multiples/package.json +6 -0
  72. data/tracks/ecmascript/exercises/triangle/package.json +6 -0
  73. data/tracks/ecmascript/exercises/trinary/package.json +6 -0
  74. data/tracks/ecmascript/exercises/two-bucket/package.json +6 -0
  75. data/tracks/ecmascript/exercises/word-count/package.json +6 -0
  76. data/tracks/ecmascript/exercises/wordy/package.json +6 -0
  77. data/tracks/ecmascript/package.json +6 -0
  78. data/tracks/ecmascript/yarn.lock +9 -2
  79. data/tracks/go/README.md +3 -4
  80. data/tracks/haskell/README.md +1 -1
  81. data/tracks/java/.gitignore +0 -1
  82. data/tracks/java/.travis.yml +15 -1
  83. data/tracks/java/bin/journey-test.sh +3 -4
  84. data/tracks/java/bin/unit-tests.sh +2 -2
  85. data/tracks/java/gradle/wrapper/gradle-wrapper.jar +0 -0
  86. data/tracks/java/gradle/wrapper/gradle-wrapper.properties +6 -0
  87. data/tracks/java/gradlew +172 -0
  88. data/tracks/java/gradlew.bat +84 -0
  89. data/tracks/javascript/config.json +0 -74
  90. data/tracks/javascript/exercises/isogram/isogram.spec.js +6 -0
  91. data/tracks/php/config.json +5 -0
  92. data/tracks/php/exercises/prime-factors/example.php +13 -0
  93. data/tracks/php/exercises/prime-factors/prime-factors_test.php +46 -0
  94. data/tracks/ruby/exercises/isogram/.meta/.version +1 -1
  95. data/tracks/ruby/exercises/isogram/.meta/generator/isogram_case.rb +15 -1
  96. data/tracks/ruby/exercises/isogram/isogram_test.rb +10 -10
  97. data/tracks/ruby/exercises/sum-of-multiples/.meta/.version +1 -0
  98. data/tracks/ruby/exercises/sum-of-multiples/.meta/generator/sum_of_multiples_case.rb +11 -0
  99. data/tracks/ruby/exercises/sum-of-multiples/.meta/solutions/sum_of_multiples.rb +4 -0
  100. data/tracks/ruby/exercises/sum-of-multiples/sum_of_multiples_test.rb +51 -12
  101. data/tracks/rust/exercises/forth/example.rs +2 -6
  102. data/tracks/rust/exercises/forth/tests/forth.rs +18 -18
  103. metadata +10 -2
@@ -7,55 +7,55 @@ class IsogramTest < Minitest::Test
7
7
  def test_empty_string
8
8
  # skip
9
9
  string = ""
10
- assert Isogram.is_isogram?(string)
10
+ assert Isogram.isogram?(string), "Expected true, '' is an isogram"
11
11
  end
12
12
 
13
13
  def test_isogram_with_only_lower_case_characters
14
14
  skip
15
15
  string = "isogram"
16
- assert Isogram.is_isogram?(string)
16
+ assert Isogram.isogram?(string), "Expected true, 'isogram' is an isogram"
17
17
  end
18
18
 
19
19
  def test_word_with_one_duplicated_character
20
20
  skip
21
21
  string = "eleven"
22
- refute Isogram.is_isogram?(string)
22
+ refute Isogram.isogram?(string), "Expected false, 'eleven' is not an isogram"
23
23
  end
24
24
 
25
25
  def test_longest_reported_english_isogram
26
26
  skip
27
27
  string = "subdermatoglyphic"
28
- assert Isogram.is_isogram?(string)
28
+ assert Isogram.isogram?(string), "Expected true, 'subdermatoglyphic' is an isogram"
29
29
  end
30
30
 
31
31
  def test_word_with_duplicated_character_in_mixed_case
32
32
  skip
33
33
  string = "Alphabet"
34
- refute Isogram.is_isogram?(string)
34
+ refute Isogram.isogram?(string), "Expected false, 'Alphabet' is not an isogram"
35
35
  end
36
36
 
37
37
  def test_hypothetical_isogrammic_word_with_hyphen
38
38
  skip
39
39
  string = "thumbscrew-japingly"
40
- assert Isogram.is_isogram?(string)
40
+ assert Isogram.isogram?(string), "Expected true, 'thumbscrew-japingly' is an isogram"
41
41
  end
42
42
 
43
43
  def test_isogram_with_duplicated_non_letter_character
44
44
  skip
45
45
  string = "Hjelmqvist-Gryb-Zock-Pfund-Wax"
46
- assert Isogram.is_isogram?(string)
46
+ assert Isogram.isogram?(string), "Expected true, 'Hjelmqvist-Gryb-Zock-Pfund-Wax' is an isogram"
47
47
  end
48
48
 
49
49
  def test_made_up_name_that_is_an_isogram
50
50
  skip
51
51
  string = "Emily Jung Schwartzkopf"
52
- assert Isogram.is_isogram?(string)
52
+ assert Isogram.isogram?(string), "Expected true, 'Emily Jung Schwartzkopf' is an isogram"
53
53
  end
54
54
 
55
55
  def test_duplicated_character_in_the_middle
56
56
  skip
57
57
  string = "accentor"
58
- refute Isogram.is_isogram?(string)
58
+ refute Isogram.isogram?(string), "Expected false, 'accentor' is not an isogram"
59
59
  end
60
60
 
61
61
  # Problems in exercism evolve over time, as we find better ways to ask
@@ -77,6 +77,6 @@ class IsogramTest < Minitest::Test
77
77
 
78
78
  def test_bookkeeping
79
79
  skip
80
- assert_equal 3, BookKeeping::VERSION
80
+ assert_equal 4, BookKeeping::VERSION
81
81
  end
82
82
  end
@@ -0,0 +1,11 @@
1
+ require 'generator/exercise_case'
2
+
3
+ class SumOfMultiplesCase < Generator::ExerciseCase
4
+ using Generator::Underscore
5
+
6
+ def workload
7
+ assert_expected = "assert_equal #{expected.underscore}"
8
+ value = "SumOfMultiples.new(#{factors.join(', ')}).to(#{limit})"
9
+ indent_lines(["#{assert_expected}, #{value}"], 4)
10
+ end
11
+ end
@@ -1,3 +1,7 @@
1
+ module BookKeeping
2
+ VERSION = 1
3
+ end
4
+
1
5
  class SumOfMultiples
2
6
  attr_reader :multiples
3
7
  def initialize(*multiples)
@@ -2,48 +2,87 @@
2
2
  require 'minitest/autorun'
3
3
  require_relative 'sum_of_multiples'
4
4
 
5
- class SumTest < Minitest::Test
6
- def test_sum_to_1
5
+ # Common test data version: 1.0.0 72b1496
6
+ class SumOfMultiplesTest < Minitest::Test
7
+ def test_multiples_of_3_or_5_up_to_1
8
+ # skip
7
9
  assert_equal 0, SumOfMultiples.new(3, 5).to(1)
8
10
  end
9
11
 
10
- def test_sum_to_3
12
+ def test_multiples_of_3_or_5_up_to_4
11
13
  skip
12
14
  assert_equal 3, SumOfMultiples.new(3, 5).to(4)
13
15
  end
14
16
 
15
- def test_sum_to_10
17
+ def test_multiples_of_3_or_5_up_to_10
16
18
  skip
17
19
  assert_equal 23, SumOfMultiples.new(3, 5).to(10)
18
20
  end
19
21
 
20
- def test_sum_to_100
22
+ def test_multiples_of_3_or_5_up_to_100
21
23
  skip
22
24
  assert_equal 2_318, SumOfMultiples.new(3, 5).to(100)
23
25
  end
24
26
 
25
- def test_sum_to_1000
27
+ def test_multiples_of_3_or_5_up_to_1000
26
28
  skip
27
29
  assert_equal 233_168, SumOfMultiples.new(3, 5).to(1000)
28
30
  end
29
31
 
30
- def test_configurable_7_13_17_to_20
32
+ def test_multiples_of_7_13_or_17_up_to_20
31
33
  skip
32
34
  assert_equal 51, SumOfMultiples.new(7, 13, 17).to(20)
33
35
  end
34
36
 
35
- def test_configurable_4_6_to_15
37
+ def test_multiples_of_4_or_6_up_to_15
36
38
  skip
37
39
  assert_equal 30, SumOfMultiples.new(4, 6).to(15)
38
40
  end
39
41
 
40
- def test_configurable_5_6_8_to_150
42
+ def test_multiples_of_5_6_or_8_up_to_150
41
43
  skip
42
- assert_equal 4419, SumOfMultiples.new(5, 6, 8).to(150)
44
+ assert_equal 4_419, SumOfMultiples.new(5, 6, 8).to(150)
43
45
  end
44
46
 
45
- def test_configurable_43_47_to_10000
47
+ def test_multiples_of_5_or_25_up_to_51
46
48
  skip
47
- assert_equal 2_203_160, SumOfMultiples.new(43, 47).to(10_000)
49
+ assert_equal 275, SumOfMultiples.new(5, 25).to(51)
50
+ end
51
+
52
+ def test_multiples_of_43_or_47_up_to_10000
53
+ skip
54
+ assert_equal 2_203_160, SumOfMultiples.new(43, 47).to(10000)
55
+ end
56
+
57
+ def test_multiples_of_1_up_to_100
58
+ skip
59
+ assert_equal 4_950, SumOfMultiples.new(1).to(100)
60
+ end
61
+
62
+ def test_multiples_of_an_empty_list_up_to_10000
63
+ skip
64
+ assert_equal 0, SumOfMultiples.new().to(10000)
65
+ end
66
+
67
+ # Problems in exercism evolve over time, as we find better ways to ask
68
+ # questions.
69
+ # The version number refers to the version of the problem you solved,
70
+ # not your solution.
71
+ #
72
+ # Define a constant named VERSION inside of the top level BookKeeping
73
+ # module, which may be placed near the end of your file.
74
+ #
75
+ # In your file, it will look like this:
76
+ #
77
+ # module BookKeeping
78
+ # VERSION = 1 # Where the version number matches the one in the test.
79
+ # end
80
+ #
81
+ # If you are curious, read more about constants on RubyDoc:
82
+ # http://ruby-doc.org/docs/ruby-doc-bundle/UsersGuide/rg/constants.html
83
+
84
+ def test_bookkeeping
85
+ skip
86
+ assert_equal 1, BookKeeping::VERSION
48
87
  end
49
88
  end
@@ -58,12 +58,8 @@ impl Forth {
58
58
  }
59
59
  }
60
60
 
61
- pub fn format_stack(&self) -> String {
62
- let mut s = self.stack.iter().fold(String::new(), |s, v| {
63
- s + &v.to_string() + " "
64
- });
65
- s.pop();
66
- s
61
+ pub fn stack(&self) -> Vec<Value> {
62
+ self.stack.iter().cloned().collect()
67
63
  }
68
64
 
69
65
  pub fn eval(&mut self, input: &str) -> ForthResult {
@@ -1,10 +1,10 @@
1
1
  extern crate forth;
2
2
 
3
- use forth::{Forth, Error};
3
+ use forth::{Forth, Error, Value};
4
4
 
5
5
  #[test]
6
6
  fn no_input_no_stack() {
7
- assert_eq!("", Forth::new().format_stack());
7
+ assert_eq!(Vec::<Value>::new(), Forth::new().stack());
8
8
  }
9
9
 
10
10
  #[test]
@@ -12,7 +12,7 @@ fn no_input_no_stack() {
12
12
  fn numbers_just_get_pushed_onto_the_stack() {
13
13
  let mut f = Forth::new();
14
14
  assert!(f.eval("1 2 3 4 5 -1").is_ok());
15
- assert_eq!("1 2 3 4 5 -1", f.format_stack());
15
+ assert_eq!(vec![1, 2, 3, 4, 5, -1], f.stack());
16
16
  }
17
17
 
18
18
  #[test]
@@ -21,7 +21,7 @@ fn non_word_characters_are_separators() {
21
21
  let mut f = Forth::new();
22
22
  // Note the Ogham Space Mark ( ), this is a spacing character.
23
23
  assert!(f.eval("1\u{0000}2\u{0001}3\n4\r5 6\t7").is_ok());
24
- assert_eq!("1 2 3 4 5 6 7", f.format_stack());
24
+ assert_eq!(vec![1, 2, 3, 4, 5, 6, 7], f.stack());
25
25
  }
26
26
 
27
27
  #[test]
@@ -29,7 +29,7 @@ fn non_word_characters_are_separators() {
29
29
  fn basic_arithmetic_1() {
30
30
  let mut f = Forth::new();
31
31
  assert!(f.eval("1 2 + 4 -").is_ok());
32
- assert_eq!("-1", f.format_stack());
32
+ assert_eq!(vec![-1], f.stack());
33
33
  }
34
34
 
35
35
  #[test]
@@ -37,7 +37,7 @@ fn basic_arithmetic_1() {
37
37
  fn basic_arithmetic_2() {
38
38
  let mut f = Forth::new();
39
39
  assert!(f.eval("2 4 * 3 /").is_ok());
40
- assert_eq!("2", f.format_stack());
40
+ assert_eq!(vec![2], f.stack());
41
41
  }
42
42
 
43
43
  #[test]
@@ -95,7 +95,7 @@ fn division_by_zero() {
95
95
  fn dup() {
96
96
  let mut f = Forth::new();
97
97
  assert!(f.eval("1 DUP").is_ok());
98
- assert_eq!("1 1", f.format_stack());
98
+ assert_eq!(vec![1, 1], f.stack());
99
99
  }
100
100
 
101
101
  #[test]
@@ -103,7 +103,7 @@ fn dup() {
103
103
  fn dup_case_insensitive() {
104
104
  let mut f = Forth::new();
105
105
  assert!(f.eval("1 Dup").is_ok());
106
- assert_eq!("1 1", f.format_stack());
106
+ assert_eq!(vec![1, 1], f.stack());
107
107
  }
108
108
 
109
109
  #[test]
@@ -121,7 +121,7 @@ fn dup_error() {
121
121
  fn drop() {
122
122
  let mut f = Forth::new();
123
123
  assert!(f.eval("1 drop").is_ok());
124
- assert_eq!("", f.format_stack());
124
+ assert_eq!(Vec::<Value>::new(), f.stack());
125
125
  }
126
126
 
127
127
  #[test]
@@ -129,7 +129,7 @@ fn drop() {
129
129
  fn drop_with_two() {
130
130
  let mut f = Forth::new();
131
131
  assert!(f.eval("1 2 drop").is_ok());
132
- assert_eq!("1", f.format_stack());
132
+ assert_eq!(vec![1], f.stack());
133
133
  }
134
134
 
135
135
  #[test]
@@ -147,7 +147,7 @@ fn drop_error() {
147
147
  fn swap() {
148
148
  let mut f = Forth::new();
149
149
  assert!(f.eval("1 2 swap").is_ok());
150
- assert_eq!("2 1", f.format_stack());
150
+ assert_eq!(vec![2, 1], f.stack());
151
151
  }
152
152
 
153
153
  #[test]
@@ -155,7 +155,7 @@ fn swap() {
155
155
  fn swap_with_three() {
156
156
  let mut f = Forth::new();
157
157
  assert!(f.eval("1 2 3 swap").is_ok());
158
- assert_eq!("1 3 2", f.format_stack());
158
+ assert_eq!(vec![1, 3, 2], f.stack());
159
159
  }
160
160
 
161
161
  #[test]
@@ -177,7 +177,7 @@ fn swap_error() {
177
177
  fn over() {
178
178
  let mut f = Forth::new();
179
179
  assert!(f.eval("1 2 over").is_ok());
180
- assert_eq!("1 2 1", f.format_stack());
180
+ assert_eq!(vec![1, 2, 1], f.stack());
181
181
  }
182
182
 
183
183
  #[test]
@@ -185,7 +185,7 @@ fn over() {
185
185
  fn over_with_three() {
186
186
  let mut f = Forth::new();
187
187
  assert!(f.eval("1 2 3 over").is_ok());
188
- assert_eq!("1 2 3 2", f.format_stack());
188
+ assert_eq!(vec![1, 2, 3, 2], f.stack());
189
189
  }
190
190
 
191
191
  #[test]
@@ -208,7 +208,7 @@ fn defining_a_new_word() {
208
208
  let mut f = Forth::new();
209
209
  assert!(f.eval(": CoUnT 1 2 3 ;").is_ok());
210
210
  assert!(f.eval("count COUNT").is_ok());
211
- assert_eq!("1 2 3 1 2 3", f.format_stack());
211
+ assert_eq!(vec![1, 2, 3, 1, 2, 3], f.stack());
212
212
  }
213
213
 
214
214
  #[test]
@@ -218,7 +218,7 @@ fn redefining_an_existing_word() {
218
218
  assert!(f.eval(": foo dup ;").is_ok());
219
219
  assert!(f.eval(": foo dup dup ;").is_ok());
220
220
  assert!(f.eval("1 foo").is_ok());
221
- assert_eq!("1 1 1", f.format_stack());
221
+ assert_eq!(vec![1, 1, 1], f.stack());
222
222
  }
223
223
 
224
224
  #[test]
@@ -227,7 +227,7 @@ fn redefining_an_existing_built_in_word() {
227
227
  let mut f = Forth::new();
228
228
  assert!(f.eval(": swap dup ;").is_ok());
229
229
  assert!(f.eval("1 swap").is_ok());
230
- assert_eq!("1 1", f.format_stack());
230
+ assert_eq!(vec![1, 1], f.stack());
231
231
  }
232
232
 
233
233
  #[test]
@@ -235,7 +235,7 @@ fn redefining_an_existing_built_in_word() {
235
235
  fn defining_words_with_odd_characters() {
236
236
  let mut f = Forth::new();
237
237
  assert!(f.eval(": € 220371 ; €").is_ok());
238
- assert_eq!("220371", f.format_stack());
238
+ assert_eq!(vec![220371], f.stack());
239
239
  }
240
240
 
241
241
  #[test]
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.1.0.29
4
+ version: 2.1.0.30
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-06-06 00:00:00.000000000 Z
11
+ date: 2017-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -4754,6 +4754,10 @@ files:
4754
4754
  - tracks/java/exercises/wordy/src/example/java/WordProblemSolver.java
4755
4755
  - tracks/java/exercises/wordy/src/main/java/WordProblemSolver.java
4756
4756
  - tracks/java/exercises/wordy/src/test/java/WordProblemSolverTest.java
4757
+ - tracks/java/gradle/wrapper/gradle-wrapper.jar
4758
+ - tracks/java/gradle/wrapper/gradle-wrapper.properties
4759
+ - tracks/java/gradlew
4760
+ - tracks/java/gradlew.bat
4757
4761
  - tracks/java/img/icon.png
4758
4762
  - tracks/java/scripts/increase-test-logging.sh
4759
4763
  - tracks/java/scripts/insert-ignores.sh
@@ -6660,6 +6664,8 @@ files:
6660
6664
  - tracks/php/exercises/phone-number/phone-number_test.php
6661
6665
  - tracks/php/exercises/pig-latin/example.php
6662
6666
  - tracks/php/exercises/pig-latin/pig-latin_test.php
6667
+ - tracks/php/exercises/prime-factors/example.php
6668
+ - tracks/php/exercises/prime-factors/prime-factors_test.php
6663
6669
  - tracks/php/exercises/queen-attack/example.php
6664
6670
  - tracks/php/exercises/queen-attack/queen-attack_test.php
6665
6671
  - tracks/php/exercises/raindrops/example.php
@@ -7655,6 +7661,8 @@ files:
7655
7661
  - tracks/ruby/exercises/space-age/space_age_test.rb
7656
7662
  - tracks/ruby/exercises/strain/.meta/solutions/strain.rb
7657
7663
  - tracks/ruby/exercises/strain/strain_test.rb
7664
+ - tracks/ruby/exercises/sum-of-multiples/.meta/.version
7665
+ - tracks/ruby/exercises/sum-of-multiples/.meta/generator/sum_of_multiples_case.rb
7658
7666
  - tracks/ruby/exercises/sum-of-multiples/.meta/solutions/sum_of_multiples.rb
7659
7667
  - tracks/ruby/exercises/sum-of-multiples/sum_of_multiples_test.rb
7660
7668
  - tracks/ruby/exercises/tournament/.meta/.version