trackler 2.0.5.0 → 2.0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/crystal/exercises/largest-series-product/spec/largest_series_product_spec.cr +32 -16
  4. data/tracks/fsharp/exercises/grep/GrepTest.fs +2 -1
  5. data/tracks/fsharp/exercises/linked-list/Example.fs +24 -17
  6. data/tracks/fsharp/exercises/linked-list/HINTS.md +14 -0
  7. data/tracks/fsharp/exercises/linked-list/LinkedListTest.fs +73 -80
  8. data/tracks/lua/config.json +8 -0
  9. data/tracks/lua/exercises/meetup/example.lua +61 -0
  10. data/tracks/lua/exercises/meetup/meetup_spec.lua +858 -0
  11. data/tracks/purescript/.travis.yml +4 -0
  12. data/tracks/purescript/config.json +7 -0
  13. data/tracks/purescript/exercises/bob/bower.json +17 -0
  14. data/tracks/purescript/exercises/bob/examples/src/Bob.purs +49 -0
  15. data/tracks/purescript/exercises/bob/src/Bob.purs +3 -0
  16. data/tracks/purescript/exercises/bob/test/Main.purs +82 -0
  17. data/tracks/ruby/.gitignore +1 -0
  18. data/tracks/ruby/Gemfile +2 -0
  19. data/tracks/ruby/Rakefile +6 -0
  20. data/tracks/ruby/bin/executable-tests-check +1 -1
  21. data/tracks/ruby/config.json +2 -1
  22. data/tracks/ruby/lib/generator.rb +8 -3
  23. data/tracks/ruby/test/generator_test.rb +21 -0
  24. data/tracks/ruby/test/test_helper.rb +16 -0
  25. data/tracks/scala/config.json +17 -0
  26. data/tracks/scala/exercises/allergies/example.scala +1 -5
  27. data/tracks/scala/exercises/allergies/src/main/scala/Allergies.scala +11 -0
  28. data/tracks/scala/exercises/allergies/src/test/scala/AllergiesTest.scala +14 -14
  29. data/tracks/scala/exercises/atbash-cipher/example.scala +4 -4
  30. data/tracks/scala/exercises/atbash-cipher/src/main/scala/Atbash.scala +3 -0
  31. data/tracks/scala/exercises/atbash-cipher/src/test/scala/atbash_test.scala +9 -9
  32. data/tracks/scala/exercises/crypto-square/example.scala +1 -1
  33. data/tracks/scala/exercises/crypto-square/src/main/scala/CryptoSquare.scala +11 -0
  34. data/tracks/scala/exercises/crypto-square/src/test/scala/CryptoSquareTest.scala +17 -17
  35. data/tracks/scala/exercises/queen-attack/example.scala +2 -1
  36. data/tracks/scala/exercises/queen-attack/src/main/scala/Queens.scala +8 -0
  37. data/tracks/scala/exercises/queen-attack/src/test/scala/QueensTest.scala +9 -9
  38. data/tracks/scala/exercises/raindrops/example.scala +1 -5
  39. data/tracks/scala/exercises/raindrops/src/main/scala/Raindrops.scala +4 -0
  40. data/tracks/scala/exercises/raindrops/src/test/scala/RaindropsTest.scala +16 -16
  41. data/tracks/swift/README.md +16 -16
  42. metadata +16 -1
@@ -1,9 +1,9 @@
1
- case class Atbash() {
2
- def encode(s: String): String =
3
- s.foldLeft("")((acc, c) => acc + substitute(c)).grouped(5).mkString(" ")
4
-
1
+ object Atbash {
5
2
  private def substitute(c: Char) =
6
3
  if (c.isDigit) c.toString
7
4
  else if (c.isLetter) ('a' + ('z' - c.toLower)).toChar.toString
8
5
  else ""
6
+
7
+ def encode(s: String): String =
8
+ s.foldLeft("")((acc, c) => acc + substitute(c)).grouped(5).mkString(" ")
9
9
  }
@@ -0,0 +1,3 @@
1
+ object Atbash {
2
+ def encode(s: String): String = ???
3
+ }
@@ -2,47 +2,47 @@ import org.scalatest.{Matchers, FlatSpec}
2
2
 
3
3
  class AtbashTest extends FlatSpec with Matchers {
4
4
  it should "encode no" in {
5
- Atbash().encode("no") should equal("ml")
5
+ Atbash.encode("no") should equal("ml")
6
6
  }
7
7
 
8
8
  it should "encode yes" in {
9
9
  pending
10
- Atbash().encode("yes") should equal("bvh")
10
+ Atbash.encode("yes") should equal("bvh")
11
11
  }
12
12
 
13
13
  it should "encode OMG" in {
14
14
  pending
15
- Atbash().encode("OMG") should equal("lnt")
15
+ Atbash.encode("OMG") should equal("lnt")
16
16
  }
17
17
 
18
18
  it should "encode lowercase omg" in {
19
19
  pending
20
- Atbash().encode("omg") should equal("lnt")
20
+ Atbash.encode("omg") should equal("lnt")
21
21
  }
22
22
 
23
23
  it should "encode O M G" in {
24
24
  pending
25
- Atbash().encode("O M G ") should equal("lnt")
25
+ Atbash.encode("O M G ") should equal("lnt")
26
26
  }
27
27
 
28
28
  it should "encode and group string " in {
29
29
  pending
30
- Atbash().encode("mindblowingly") should equal("nrmwy oldrm tob")
30
+ Atbash.encode("mindblowingly") should equal("nrmwy oldrm tob")
31
31
  }
32
32
 
33
33
  it should "encode string with digits and punctuation" in {
34
34
  pending
35
- Atbash().encode("Testing, 1 2 3, testing. ") should equal("gvhgr mt123 gvhgr mt")
35
+ Atbash.encode("Testing, 1 2 3, testing. ") should equal("gvhgr mt123 gvhgr mt")
36
36
  }
37
37
 
38
38
  it should "encode \"Truth is fiction.\"" in {
39
39
  pending
40
- Atbash().encode("Truth is fiction.") should equal("gifgs rhurx grlm")
40
+ Atbash.encode("Truth is fiction.") should equal("gifgs rhurx grlm")
41
41
  }
42
42
 
43
43
  it should "encode a long string" in {
44
44
  pending
45
- Atbash().encode("The quick brown fox jumps over the lazy dog.") should
45
+ Atbash.encode("The quick brown fox jumps over the lazy dog.") should
46
46
  equal("gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt")
47
47
  }
48
48
  }
@@ -1,4 +1,4 @@
1
- case class CryptoSquare() {
1
+ object CryptoSquare {
2
2
  def normalizePlaintext(text: String): String =
3
3
  text.filter(c => c.isLetterOrDigit).toLowerCase
4
4
 
@@ -0,0 +1,11 @@
1
+ object CryptoSquare {
2
+ def normalizePlaintext(text: String): String = ???
3
+
4
+ def squareSize(text: String): Int = ???
5
+
6
+ def plaintextSegments(text: String): List[String] = ???
7
+
8
+ def ciphertext(text: String): String = ???
9
+
10
+ def normalizedCiphertext(text: String): String = ???
11
+ }
@@ -2,71 +2,71 @@ import org.scalatest.{Matchers, FlatSpec}
2
2
 
3
3
  class CrytpoSquareTest extends FlatSpec with Matchers {
4
4
  it should "normalize away special characters" in {
5
- CryptoSquare().normalizePlaintext("s#!@$%pl\t\r\nunk") should equal("splunk")
5
+ CryptoSquare.normalizePlaintext("s#!@$%pl\t\r\nunk") should equal("splunk")
6
6
  }
7
7
 
8
8
  it should "normalize uppercase to lowercase" in {
9
9
  pending
10
- CryptoSquare().normalizePlaintext("1, 2, 3 GO!") should equal("123go")
10
+ CryptoSquare.normalizePlaintext("1, 2, 3 GO!") should equal("123go")
11
11
  }
12
12
 
13
13
 
14
14
  it should "calc a square size for a perfect square" in {
15
15
  pending
16
- CryptoSquare().squareSize("1234") should equal(2)
17
- CryptoSquare().squareSize("123456789") should equal(3)
16
+ CryptoSquare.squareSize("1234") should equal(2)
17
+ CryptoSquare.squareSize("123456789") should equal(3)
18
18
  }
19
19
 
20
20
  it should "calc a square size when not a perfect square" in {
21
21
  pending
22
- CryptoSquare().squareSize("123456789abc") should equal(4)
23
- CryptoSquare().squareSize("123456789abcd") should equal(4)
22
+ CryptoSquare.squareSize("123456789abc") should equal(4)
23
+ CryptoSquare.squareSize("123456789abcd") should equal(4)
24
24
  }
25
25
 
26
26
  it should "not generate calc error when empty string" in {
27
27
  pending
28
- CryptoSquare().squareSize("") should equal(0)
28
+ CryptoSquare.squareSize("") should equal(0)
29
29
  }
30
30
 
31
31
 
32
32
  it should "build plaintext segments - all equal segment lengths" in {
33
33
  pending
34
- CryptoSquare().plaintextSegments("Never vex thine heart with idle woes.") should
34
+ CryptoSquare.plaintextSegments("Never vex thine heart with idle woes.") should
35
35
  equal(List("neverv", "exthin", "eheart", "withid", "lewoes"))
36
36
  }
37
37
 
38
38
  it should "build plaintext segments - last segment short" in {
39
39
  pending
40
- CryptoSquare().plaintextSegments("ZOMG! ZOMBIES!!!") should
40
+ CryptoSquare.plaintextSegments("ZOMG! ZOMBIES!!!") should
41
41
  equal(List("zomg", "zomb", "ies"))
42
42
  }
43
43
 
44
44
  it should "build cipher text" in {
45
45
  pending
46
- CryptoSquare().ciphertext("Time is an illusion. Lunchtime doubly so.") should
46
+ CryptoSquare.ciphertext("Time is an illusion. Lunchtime doubly so.") should
47
47
  equal("tasneyinicdsmiohooelntuillibsuuml")
48
- CryptoSquare().ciphertext("We all know interspecies romance is weird.") should
48
+ CryptoSquare.ciphertext("We all know interspecies romance is weird.") should
49
49
  equal("wneiaweoreneawssciliprerlneoidktcms")
50
50
  }
51
51
 
52
52
  it should "build normalized cipher text" in {
53
53
  pending
54
- CryptoSquare().normalizedCiphertext("Madness, and then illumination.") should
54
+ CryptoSquare.normalizedCiphertext("Madness, and then illumination.") should
55
55
  equal("msemo aanin dnin ndla etlt shui")
56
- CryptoSquare().normalizedCiphertext("If man was meant to stay on the ground " +
56
+ CryptoSquare.normalizedCiphertext("If man was meant to stay on the ground " +
57
57
  "god would have given us roots") should
58
58
  equal("imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau")
59
59
  }
60
60
 
61
61
  it should "not error on blank strings" in {
62
62
  pending
63
- CryptoSquare().ciphertext("") should
63
+ CryptoSquare.ciphertext("") should
64
64
  equal("")
65
- CryptoSquare().ciphertext(" ") should
65
+ CryptoSquare.ciphertext(" ") should
66
66
  equal("")
67
- CryptoSquare().normalizedCiphertext("") should
67
+ CryptoSquare.normalizedCiphertext("") should
68
68
  equal("")
69
- CryptoSquare().normalizedCiphertext(" ") should
69
+ CryptoSquare.normalizedCiphertext(" ") should
70
70
  equal("")
71
71
  }
72
72
  }
@@ -1,4 +1,4 @@
1
- case class Queens() {
1
+ object Queens {
2
2
 
3
3
  def boardString(white: Option[Position], black: Option[Position]): String = {
4
4
 
@@ -34,3 +34,4 @@ case class Queens() {
34
34
  }
35
35
 
36
36
  case class Position(x: Int, y: Int)
37
+
@@ -0,0 +1,8 @@
1
+ object Queens {
2
+
3
+ def boardString(white: Option[Position], black: Option[Position]): String = ???
4
+
5
+ def canAttack(white: Position, black: Position): Boolean = ???
6
+ }
7
+
8
+ case class Position(x: Int, y: Int)
@@ -2,7 +2,7 @@ import org.scalatest.{Matchers, FunSuite}
2
2
 
3
3
  class QueensTest extends FunSuite with Matchers {
4
4
  test ("empty boardString") {
5
- Queens().boardString(None, None) should equal(
5
+ Queens.boardString(None, None) should equal(
6
6
  "_ _ _ _ _ _ _ _\n" +
7
7
  "_ _ _ _ _ _ _ _\n" +
8
8
  "_ _ _ _ _ _ _ _\n" +
@@ -15,7 +15,7 @@ class QueensTest extends FunSuite with Matchers {
15
15
 
16
16
  test("boardString") {
17
17
  pending
18
- Queens().boardString(Some(Position(2, 4)), Some(Position(6, 6))) should equal(
18
+ Queens.boardString(Some(Position(2, 4)), Some(Position(6, 6))) should equal(
19
19
  "_ _ _ _ _ _ _ _\n" +
20
20
  "_ _ _ _ _ _ _ _\n" +
21
21
  "_ _ _ _ W _ _ _\n" +
@@ -28,24 +28,24 @@ class QueensTest extends FunSuite with Matchers {
28
28
 
29
29
  test("canAttack - false") {
30
30
  pending
31
- Queens().canAttack(Position(2, 3), Position(4, 7)) should be (false)
31
+ Queens.canAttack(Position(2, 3), Position(4, 7)) should be (false)
32
32
  }
33
33
 
34
34
  test("canAttack - vert attack") {
35
35
  pending
36
- Queens().canAttack(Position(2, 4), Position(2, 7)) should be (true)
36
+ Queens.canAttack(Position(2, 4), Position(2, 7)) should be (true)
37
37
  }
38
38
 
39
39
  test("canAttack - horiz attack") {
40
40
  pending
41
- Queens().canAttack(Position(5, 4), Position(2, 4)) should be (true)
41
+ Queens.canAttack(Position(5, 4), Position(2, 4)) should be (true)
42
42
  }
43
43
 
44
44
  test("canAttack - diag attack") {
45
45
  pending
46
- Queens().canAttack(Position(1, 1), Position(6, 6)) should be (true)
47
- Queens().canAttack(Position(0, 6), Position(1, 7)) should be (true)
48
- Queens().canAttack(Position(4, 1), Position(6, 3)) should be (true)
49
- Queens().canAttack(Position(2, 2), Position(1, 3)) should be (true)
46
+ Queens.canAttack(Position(1, 1), Position(6, 6)) should be (true)
47
+ Queens.canAttack(Position(0, 6), Position(1, 7)) should be (true)
48
+ Queens.canAttack(Position(4, 1), Position(6, 3)) should be (true)
49
+ Queens.canAttack(Position(2, 2), Position(1, 3)) should be (true)
50
50
  }
51
51
  }
@@ -1,4 +1,4 @@
1
- class Raindrops {
1
+ object Raindrops {
2
2
  private val sounds = List((3, "Pling"), (5, "Plang"), (7, "Plong"))
3
3
 
4
4
  def convert(n: Int): String =
@@ -7,7 +7,3 @@ class Raindrops {
7
7
  case s => s
8
8
  }
9
9
  }
10
-
11
- object Raindrops {
12
- def apply() = new Raindrops
13
- }
@@ -0,0 +1,4 @@
1
+ object Raindrops {
2
+ def convert(n: Int): String = ???
3
+ }
4
+
@@ -2,82 +2,82 @@ import org.scalatest.{Matchers, FlatSpec}
2
2
 
3
3
  class RaindropsTest extends FlatSpec with Matchers {
4
4
  it should "convert 1" in {
5
- Raindrops().convert(1) should equal("1")
5
+ Raindrops.convert(1) should equal("1")
6
6
  }
7
7
 
8
8
  it should "convert 3" in {
9
9
  pending
10
- Raindrops().convert(3) should equal("Pling")
10
+ Raindrops.convert(3) should equal("Pling")
11
11
  }
12
12
 
13
13
  it should "convert 5" in {
14
14
  pending
15
- Raindrops().convert(5) should equal("Plang")
15
+ Raindrops.convert(5) should equal("Plang")
16
16
  }
17
17
 
18
18
  it should "convert 7" in {
19
19
  pending
20
- Raindrops().convert(7) should equal("Plong")
20
+ Raindrops.convert(7) should equal("Plong")
21
21
  }
22
22
 
23
23
  it should "convert 6" in {
24
24
  pending
25
- Raindrops().convert(6) should equal("Pling")
25
+ Raindrops.convert(6) should equal("Pling")
26
26
  }
27
27
 
28
28
  it should "convert 9" in {
29
29
  pending
30
- Raindrops().convert(9) should equal("Pling")
30
+ Raindrops.convert(9) should equal("Pling")
31
31
  }
32
32
 
33
33
  it should "convert 10" in {
34
34
  pending
35
- Raindrops().convert(10) should equal("Plang")
35
+ Raindrops.convert(10) should equal("Plang")
36
36
  }
37
37
 
38
38
  it should "convert 14" in {
39
39
  pending
40
- Raindrops().convert(14) should equal("Plong")
40
+ Raindrops.convert(14) should equal("Plong")
41
41
  }
42
42
 
43
43
  it should "convert 15" in {
44
44
  pending
45
- Raindrops().convert(15) should equal("PlingPlang")
45
+ Raindrops.convert(15) should equal("PlingPlang")
46
46
  }
47
47
 
48
48
  it should "convert 21" in {
49
49
  pending
50
- Raindrops().convert(21) should equal("PlingPlong")
50
+ Raindrops.convert(21) should equal("PlingPlong")
51
51
  }
52
52
 
53
53
  it should "convert 25" in {
54
54
  pending
55
- Raindrops().convert(25) should equal("Plang")
55
+ Raindrops.convert(25) should equal("Plang")
56
56
  }
57
57
 
58
58
  it should "convert 35" in {
59
59
  pending
60
- Raindrops().convert(35) should equal("PlangPlong")
60
+ Raindrops.convert(35) should equal("PlangPlong")
61
61
  }
62
62
 
63
63
  it should "convert 49" in {
64
64
  pending
65
- Raindrops().convert(49) should equal("Plong")
65
+ Raindrops.convert(49) should equal("Plong")
66
66
  }
67
67
 
68
68
  it should "convert 52" in {
69
69
  pending
70
- Raindrops().convert(52) should equal("52")
70
+ Raindrops.convert(52) should equal("52")
71
71
  }
72
72
 
73
73
  it should "convert 105" in {
74
74
  pending
75
- Raindrops().convert(105) should equal("PlingPlangPlong")
75
+ Raindrops.convert(105) should equal("PlingPlangPlong")
76
76
  }
77
77
 
78
78
  it should "convert 12121" in {
79
79
  pending
80
- Raindrops().convert(12121) should equal("12121")
80
+ Raindrops.convert(12121) should equal("12121")
81
81
  }
82
82
  }
83
83
 
@@ -1,17 +1,17 @@
1
- # xSwift
2
-
3
- Exercism exercises in Swift
4
-
5
- ## Contributing Guide
6
-
7
- Please see the [contributing guide](https://github.com/exercism/x-api/blob/master/CONTRIBUTING.md#the-exercise-data)
8
-
9
- ## Swift Track
10
-
1
+ # xSwift
2
+
3
+ [Exercism](http://exercism.io) exercises in Swift
4
+
5
+ ## Contributing Guide
6
+
7
+ Please see the [contributing guide](https://github.com/exercism/x-api/blob/master/CONTRIBUTING.md#the-exercise-data)
8
+
9
+ ## Swift Track
10
+
11
11
  We use Travis CI to automatically run all the unit tests on the code that is going to be checked in. In addition we also have [SwiftLint](https://github.com/realm/SwiftLint) set up to make sure that the code is consistent across all exercises. Please run `swiftlint autocorrect --format` on your code before submitting a PR. Also in order for the tests to run they need to be added to the `xcodeProject` project. Make sure all the tests pass locally and that you are using the latest Xcode version otherwise the Travis checks may fail.
12
-
13
- ## License
14
-
15
- The MIT License (MIT)
16
-
17
- Copyright (c) 2014 Katrina Owen, _@kytrinyx.com
12
+
13
+ ## License
14
+
15
+ The MIT License (MIT)
16
+
17
+ Copyright (c) 2017 Katrina Owen, _@kytrinyx.com
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trackler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.5.0
4
+ version: 2.0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katrina Owen
@@ -2496,6 +2496,7 @@ files:
2496
2496
  - tracks/fsharp/exercises/ledger/Ledger.fs
2497
2497
  - tracks/fsharp/exercises/ledger/LedgerTest.fs
2498
2498
  - tracks/fsharp/exercises/linked-list/Example.fs
2499
+ - tracks/fsharp/exercises/linked-list/HINTS.md
2499
2500
  - tracks/fsharp/exercises/linked-list/LinkedListTest.fs
2500
2501
  - tracks/fsharp/exercises/list-ops/Example.fs
2501
2502
  - tracks/fsharp/exercises/list-ops/ListOpsTest.fs
@@ -4519,6 +4520,8 @@ files:
4519
4520
  - tracks/lua/exercises/luhn/luhn_spec.lua
4520
4521
  - tracks/lua/exercises/matrix/example.lua
4521
4522
  - tracks/lua/exercises/matrix/matrix_spec.lua
4523
+ - tracks/lua/exercises/meetup/example.lua
4524
+ - tracks/lua/exercises/meetup/meetup_spec.lua
4522
4525
  - tracks/lua/exercises/minesweeper/example.lua
4523
4526
  - tracks/lua/exercises/minesweeper/minesweeper_spec.lua
4524
4527
  - tracks/lua/exercises/nth-prime/example.lua
@@ -5469,6 +5472,10 @@ files:
5469
5472
  - tracks/purescript/docs/LEARNING.md
5470
5473
  - tracks/purescript/docs/RESOURCES.md
5471
5474
  - tracks/purescript/docs/TESTS.md
5475
+ - tracks/purescript/exercises/bob/bower.json
5476
+ - tracks/purescript/exercises/bob/examples/src/Bob.purs
5477
+ - tracks/purescript/exercises/bob/src/Bob.purs
5478
+ - tracks/purescript/exercises/bob/test/Main.purs
5472
5479
  - tracks/purescript/exercises/hello-world/bower.json
5473
5480
  - tracks/purescript/exercises/hello-world/examples/src/HelloWorld.purs
5474
5481
  - tracks/purescript/exercises/hello-world/src/HelloWorld.purs
@@ -5785,6 +5792,7 @@ files:
5785
5792
  - tracks/ruby/LICENSE
5786
5793
  - tracks/ruby/Makefile
5787
5794
  - tracks/ruby/README.md
5795
+ - tracks/ruby/Rakefile
5788
5796
  - tracks/ruby/SETUP.md
5789
5797
  - tracks/ruby/bin/enable-executable
5790
5798
  - tracks/ruby/bin/executable-tests-check
@@ -6069,6 +6077,8 @@ files:
6069
6077
  - tracks/ruby/lib/triangle_cases.rb
6070
6078
  - tracks/ruby/lib/two_bucket_cases.rb
6071
6079
  - tracks/ruby/lib/word_count_cases.rb
6080
+ - tracks/ruby/test/generator_test.rb
6081
+ - tracks/ruby/test/test_helper.rb
6072
6082
  - tracks/rust/.git
6073
6083
  - tracks/rust/.gitignore
6074
6084
  - tracks/rust/.travis.yml
@@ -6365,6 +6375,7 @@ files:
6365
6375
  - tracks/scala/exercises/allergies/build.sbt
6366
6376
  - tracks/scala/exercises/allergies/example.scala
6367
6377
  - tracks/scala/exercises/allergies/src/main/scala/.keep
6378
+ - tracks/scala/exercises/allergies/src/main/scala/Allergies.scala
6368
6379
  - tracks/scala/exercises/allergies/src/test/scala/AllergiesTest.scala
6369
6380
  - tracks/scala/exercises/alphametics/build.sbt
6370
6381
  - tracks/scala/exercises/alphametics/example.scala
@@ -6377,6 +6388,7 @@ files:
6377
6388
  - tracks/scala/exercises/atbash-cipher/build.sbt
6378
6389
  - tracks/scala/exercises/atbash-cipher/example.scala
6379
6390
  - tracks/scala/exercises/atbash-cipher/src/main/scala/.keep
6391
+ - tracks/scala/exercises/atbash-cipher/src/main/scala/Atbash.scala
6380
6392
  - tracks/scala/exercises/atbash-cipher/src/test/scala/atbash_test.scala
6381
6393
  - tracks/scala/exercises/bank-account/HINTS.md
6382
6394
  - tracks/scala/exercises/bank-account/build.sbt
@@ -6420,6 +6432,7 @@ files:
6420
6432
  - tracks/scala/exercises/crypto-square/build.sbt
6421
6433
  - tracks/scala/exercises/crypto-square/example.scala
6422
6434
  - tracks/scala/exercises/crypto-square/src/main/scala/.keep
6435
+ - tracks/scala/exercises/crypto-square/src/main/scala/CryptoSquare.scala
6423
6436
  - tracks/scala/exercises/crypto-square/src/test/scala/CryptoSquareTest.scala
6424
6437
  - tracks/scala/exercises/custom-set/build.sbt
6425
6438
  - tracks/scala/exercises/custom-set/example.scala
@@ -6569,10 +6582,12 @@ files:
6569
6582
  - tracks/scala/exercises/queen-attack/build.sbt
6570
6583
  - tracks/scala/exercises/queen-attack/example.scala
6571
6584
  - tracks/scala/exercises/queen-attack/src/main/scala/.keep
6585
+ - tracks/scala/exercises/queen-attack/src/main/scala/Queens.scala
6572
6586
  - tracks/scala/exercises/queen-attack/src/test/scala/QueensTest.scala
6573
6587
  - tracks/scala/exercises/raindrops/build.sbt
6574
6588
  - tracks/scala/exercises/raindrops/example.scala
6575
6589
  - tracks/scala/exercises/raindrops/src/main/scala/.keep
6590
+ - tracks/scala/exercises/raindrops/src/main/scala/Raindrops.scala
6576
6591
  - tracks/scala/exercises/raindrops/src/test/scala/RaindropsTest.scala
6577
6592
  - tracks/scala/exercises/rna-transcription/build.sbt
6578
6593
  - tracks/scala/exercises/rna-transcription/example.scala