trackler 2.0.5.0 → 2.0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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