trackler 2.2.1.6 → 2.2.1.7
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.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/tracks/c/README.md +27 -0
- data/tracks/coffeescript/config.json +1 -0
- data/tracks/coldfusion/config.json +1 -1
- data/tracks/crystal/README.md +27 -7
- data/tracks/crystal/config/maintainers.json +25 -0
- data/tracks/crystal/generator/spec/remote_data_file_spec.cr +1 -1
- data/tracks/crystal/generator/src/exercise_generator.cr +1 -1
- data/tracks/crystal/generator/src/remote_data_file.cr +2 -2
- data/tracks/csharp/config.json +1 -2
- data/tracks/csharp/config/maintainers.json +55 -0
- data/tracks/csharp/docs/EXERCISE_README_INSERT.md +1 -1
- data/tracks/csharp/exercises/accumulate/README.md +1 -1
- data/tracks/csharp/exercises/acronym/README.md +1 -1
- data/tracks/csharp/exercises/all-your-base/README.md +1 -1
- data/tracks/csharp/exercises/allergies/README.md +1 -1
- data/tracks/csharp/exercises/alphametics/README.md +1 -1
- data/tracks/csharp/exercises/anagram/README.md +1 -1
- data/tracks/csharp/exercises/atbash-cipher/README.md +1 -1
- data/tracks/csharp/exercises/bank-account/README.md +1 -1
- data/tracks/csharp/exercises/beer-song/README.md +1 -1
- data/tracks/csharp/exercises/binary-search-tree/README.md +1 -1
- data/tracks/csharp/exercises/binary-search/README.md +1 -1
- data/tracks/csharp/exercises/bob/README.md +1 -1
- data/tracks/csharp/exercises/book-store/README.md +1 -1
- data/tracks/csharp/exercises/bowling/README.md +1 -1
- data/tracks/csharp/exercises/bracket-push/README.md +1 -1
- data/tracks/csharp/exercises/change/README.md +1 -1
- data/tracks/csharp/exercises/circular-buffer/README.md +1 -1
- data/tracks/csharp/exercises/clock/README.md +1 -1
- data/tracks/csharp/exercises/connect/README.md +1 -1
- data/tracks/csharp/exercises/crypto-square/README.md +1 -1
- data/tracks/csharp/exercises/custom-set/README.md +1 -1
- data/tracks/csharp/exercises/diamond/README.md +1 -1
- data/tracks/csharp/exercises/difference-of-squares/README.md +1 -1
- data/tracks/csharp/exercises/diffie-hellman/README.md +1 -1
- data/tracks/csharp/exercises/dominoes/README.md +1 -1
- data/tracks/csharp/exercises/dot-dsl/README.md +1 -1
- data/tracks/csharp/exercises/error-handling/README.md +1 -1
- data/tracks/csharp/exercises/etl/README.md +1 -1
- data/tracks/csharp/exercises/flatten-array/README.md +1 -1
- data/tracks/csharp/exercises/food-chain/README.md +1 -1
- data/tracks/csharp/exercises/forth/README.md +1 -1
- data/tracks/csharp/exercises/gigasecond/README.md +1 -1
- data/tracks/csharp/exercises/go-counting/README.md +1 -1
- data/tracks/csharp/exercises/grade-school/README.md +1 -1
- data/tracks/csharp/exercises/grains/README.md +1 -1
- data/tracks/csharp/exercises/grep/README.md +1 -1
- data/tracks/csharp/exercises/hamming/README.md +1 -1
- data/tracks/csharp/exercises/hangman/README.md +1 -1
- data/tracks/csharp/exercises/hello-world/README.md +1 -1
- data/tracks/csharp/exercises/house/README.md +1 -1
- data/tracks/csharp/exercises/isogram/README.md +1 -1
- data/tracks/csharp/exercises/kindergarten-garden/README.md +1 -1
- data/tracks/csharp/exercises/largest-series-product/README.md +1 -1
- data/tracks/csharp/exercises/leap/README.md +1 -1
- data/tracks/csharp/exercises/ledger/README.md +1 -1
- data/tracks/csharp/exercises/linked-list/README.md +1 -1
- data/tracks/csharp/exercises/list-ops/README.md +1 -1
- data/tracks/csharp/exercises/luhn/README.md +1 -1
- data/tracks/csharp/exercises/markdown/README.md +1 -1
- data/tracks/csharp/exercises/matrix/README.md +1 -1
- data/tracks/csharp/exercises/meetup/README.md +1 -1
- data/tracks/csharp/exercises/minesweeper/README.md +1 -1
- data/tracks/csharp/exercises/nth-prime/README.md +1 -1
- data/tracks/csharp/exercises/nucleotide-count/README.md +1 -1
- data/tracks/csharp/exercises/ocr-numbers/README.md +1 -1
- data/tracks/csharp/exercises/palindrome-products/README.md +1 -1
- data/tracks/csharp/exercises/pangram/README.md +1 -1
- data/tracks/csharp/exercises/parallel-letter-frequency/README.md +1 -1
- data/tracks/csharp/exercises/pascals-triangle/README.md +1 -1
- data/tracks/csharp/exercises/perfect-numbers/README.md +1 -1
- data/tracks/csharp/exercises/phone-number/README.md +1 -1
- data/tracks/csharp/exercises/pig-latin/README.md +1 -1
- data/tracks/csharp/exercises/poker/README.md +1 -1
- data/tracks/csharp/exercises/pov/README.md +1 -1
- data/tracks/csharp/exercises/prime-factors/README.md +1 -1
- data/tracks/csharp/exercises/protein-translation/README.md +1 -1
- data/tracks/csharp/exercises/proverb/README.md +1 -1
- data/tracks/csharp/exercises/pythagorean-triplet/README.md +1 -1
- data/tracks/csharp/exercises/queen-attack/README.md +1 -1
- data/tracks/csharp/exercises/rail-fence-cipher/README.md +1 -1
- data/tracks/csharp/exercises/raindrops/README.md +1 -1
- data/tracks/csharp/exercises/react/README.md +1 -1
- data/tracks/csharp/exercises/rectangles/README.md +1 -1
- data/tracks/csharp/exercises/rna-transcription/README.md +1 -1
- data/tracks/csharp/exercises/robot-name/README.md +1 -1
- data/tracks/csharp/exercises/robot-simulator/README.md +1 -1
- data/tracks/csharp/exercises/roman-numerals/README.md +1 -1
- data/tracks/csharp/exercises/rotational-cipher/README.md +1 -1
- data/tracks/csharp/exercises/run-length-encoding/README.md +1 -1
- data/tracks/csharp/exercises/saddle-points/README.md +1 -1
- data/tracks/csharp/exercises/say/README.md +1 -1
- data/tracks/csharp/exercises/scale-generator/README.md +1 -1
- data/tracks/csharp/exercises/scrabble-score/README.md +1 -1
- data/tracks/csharp/exercises/secret-handshake/README.md +1 -1
- data/tracks/csharp/exercises/series/README.md +1 -1
- data/tracks/csharp/exercises/sgf-parsing/README.md +1 -1
- data/tracks/csharp/exercises/sieve/README.md +1 -1
- data/tracks/csharp/exercises/simple-cipher/README.md +1 -1
- data/tracks/csharp/exercises/simple-linked-list/README.md +1 -1
- data/tracks/csharp/exercises/space-age/README.md +1 -1
- data/tracks/csharp/exercises/strain/README.md +1 -1
- data/tracks/csharp/exercises/sublist/README.md +1 -1
- data/tracks/csharp/exercises/sum-of-multiples/README.md +1 -1
- data/tracks/csharp/exercises/tournament/README.md +1 -1
- data/tracks/csharp/exercises/transpose/README.md +1 -1
- data/tracks/csharp/exercises/tree-building/README.md +1 -1
- data/tracks/csharp/exercises/triangle/README.md +1 -1
- data/tracks/csharp/exercises/twelve-days/README.md +1 -1
- data/tracks/csharp/exercises/two-bucket/README.md +1 -1
- data/tracks/csharp/exercises/variable-length-quantity/README.md +1 -1
- data/tracks/csharp/exercises/word-count/README.md +1 -1
- data/tracks/csharp/exercises/word-search/README.md +1 -1
- data/tracks/csharp/exercises/wordy/README.md +1 -1
- data/tracks/csharp/exercises/zebra-puzzle/README.md +1 -1
- data/tracks/csharp/exercises/zipper/README.md +1 -1
- data/tracks/d/config.json +1 -0
- data/tracks/dart/config/maintainers.json +15 -0
- data/tracks/ecmascript/config.json +76 -193
- data/tracks/ecmascript/exercises/twelve-days/README.md +66 -0
- data/tracks/ecmascript/exercises/twelve-days/example.js +53 -0
- data/tracks/ecmascript/exercises/twelve-days/package.json +68 -0
- data/tracks/ecmascript/exercises/twelve-days/twelve-days.spec.js +106 -0
- data/tracks/factor/config.json +1 -1
- data/tracks/fsharp/config/maintainers.json +35 -0
- data/tracks/go/config.json +82 -38
- data/tracks/go/config/maintainers.json +13 -22
- data/tracks/go/exercises/bowling/cases_test.go +11 -11
- data/tracks/go/exercises/forth/cases_test.go +7 -7
- data/tracks/go/exercises/forth/example.go +1 -1
- data/tracks/go/exercises/forth/forth_test.go +1 -1
- data/tracks/go/exercises/hamming/cases_test.go +7 -7
- data/tracks/go/exercises/hamming/hamming.go +1 -1
- data/tracks/go/exercises/phone-number/cases_test.go +2 -7
- data/tracks/go/exercises/phone-number/example.go +1 -1
- data/tracks/go/exercises/phone-number/phone_number_test.go +1 -1
- data/tracks/go/exercises/rna-transcription/cases_test.go +7 -7
- data/tracks/go/exercises/secret-handshake/cases_test.go +1 -1
- data/tracks/groovy/config.json +1 -0
- data/tracks/haxe/config.json +1 -1
- data/tracks/java/.travis.yml +1 -1
- data/tracks/java/config/maintainers.json +20 -0
- data/tracks/java/exercises/custom-set/src/test/java/CustomSetTest.java +1 -1
- data/tracks/java/exercises/word-count/src/test/java/WordCountTest.java +1 -1
- data/tracks/javascript/config.json +229 -247
- data/tracks/kotlin/config/maintainers.json +35 -0
- data/tracks/lfe/config/maintainers.json +15 -0
- data/tracks/lisp/config/maintainers.json +55 -0
- data/tracks/ocaml/config.json +0 -5
- data/tracks/ocaml/config/maintainers.json +25 -0
- data/tracks/perl5/config/maintainers.json +25 -0
- data/tracks/perl6/config/maintainers.json +25 -0
- data/tracks/pony/config/maintainers.json +15 -0
- data/tracks/pony/exercises/atbash-cipher/example.pony +2 -2
- data/tracks/pony/exercises/beer-song/example.pony +1 -1
- data/tracks/pony/exercises/bob/example.pony +1 -1
- data/tracks/pony/exercises/difference-of-squares/example.pony +1 -1
- data/tracks/pony/exercises/hamming/test.pony +12 -12
- data/tracks/pony/exercises/pascals-triangle/example.pony +1 -1
- data/tracks/pony/exercises/pascals-triangle/test.pony +6 -6
- data/tracks/pony/exercises/rna-transcription/test.pony +3 -3
- data/tracks/pony/exercises/roman-numerals/test.pony +3 -3
- data/tracks/purescript/config/maintainers.json +35 -0
- data/tracks/r/config.json +140 -81
- data/tracks/r/exercises/collatz-conjecture/README.md +43 -0
- data/tracks/r/exercises/collatz-conjecture/collatz-conjecture.R +3 -0
- data/tracks/r/exercises/collatz-conjecture/example.R +13 -0
- data/tracks/r/exercises/collatz-conjecture/test_collatz-conjecture.R +28 -0
- data/tracks/r/exercises/nucleotide-count/README.md +43 -0
- data/tracks/r/exercises/nucleotide-count/example.R +17 -0
- data/tracks/r/exercises/nucleotide-count/nucleotide-count.R +3 -0
- data/tracks/r/exercises/nucleotide-count/test_nucleotide-count.R +51 -0
- data/tracks/r/exercises/pangram/README.md +25 -0
- data/tracks/r/exercises/pangram/example.R +14 -0
- data/tracks/r/exercises/pangram/pangram.R +3 -0
- data/tracks/r/exercises/pangram/test_pangram.R +42 -0
- data/tracks/r/exercises/triangle/.meta/hints.md +4 -0
- data/tracks/r/exercises/triangle/README.md +41 -0
- data/tracks/r/exercises/triangle/example.R +23 -0
- data/tracks/r/exercises/triangle/test_triangle.R +72 -0
- data/tracks/r/exercises/triangle/triangle.R +3 -0
- data/tracks/rust/config.json +32 -1
- data/tracks/rust/config/maintainers.json +1 -6
- data/tracks/rust/exercises/acronym/tests/acronym.rs +1 -1
- data/tracks/rust/exercises/beer-song/example.rs +1 -1
- data/tracks/rust/exercises/circular-buffer/example.rs +8 -10
- data/tracks/rust/exercises/circular-buffer/tests/circular-buffer.rs +2 -2
- data/tracks/rust/exercises/clock/.meta/hints.md +10 -0
- data/tracks/rust/exercises/clock/Cargo.lock +4 -0
- data/tracks/rust/exercises/clock/Cargo.toml +6 -0
- data/tracks/rust/exercises/clock/README.md +57 -0
- data/tracks/rust/exercises/clock/example.rs +32 -0
- data/tracks/{ocaml/exercises/point-mutations/example.ml → rust/exercises/clock/src/lib.rs} +0 -0
- data/tracks/rust/exercises/clock/tests/clock.rs +331 -0
- data/tracks/rust/exercises/custom-set/tests/custom-set.rs +3 -3
- data/tracks/rust/exercises/dominoes/example.rs +1 -1
- data/tracks/rust/exercises/grade-school/example.rs +1 -1
- data/tracks/rust/exercises/hamming/example.rs +1 -1
- data/tracks/rust/exercises/nth-prime/Cargo.lock +4 -0
- data/tracks/rust/exercises/nth-prime/Cargo.toml +6 -0
- data/tracks/rust/exercises/nth-prime/README.md +47 -0
- data/tracks/rust/exercises/nth-prime/example.rs +28 -0
- data/tracks/rust/exercises/nth-prime/src/lib.rs +0 -0
- data/tracks/rust/exercises/nth-prime/tests/nth-prime.rs +30 -0
- data/tracks/rust/exercises/parallel-letter-frequency/example.rs +1 -1
- data/tracks/rust/exercises/phone-number/example.rs +1 -1
- data/tracks/rust/exercises/pythagorean-triplet/Cargo.lock +4 -0
- data/tracks/rust/exercises/pythagorean-triplet/Cargo.toml +6 -0
- data/tracks/rust/exercises/pythagorean-triplet/README.md +56 -0
- data/tracks/rust/exercises/pythagorean-triplet/example.rs +11 -0
- data/tracks/rust/exercises/pythagorean-triplet/src/lib.rs +0 -0
- data/tracks/rust/exercises/pythagorean-triplet/tests/pythagorean-triplet.rs +6 -0
- data/tracks/rust/exercises/rna-transcription/tests/rna-transcription.rs +1 -1
- data/tracks/rust/exercises/robot-name/tests/robot-name.rs +2 -2
- data/tracks/rust/exercises/say/example.rs +4 -4
- data/tracks/rust/exercises/say/tests/say.rs +4 -4
- data/tracks/rust/exercises/tournament/example.rs +2 -2
- data/tracks/scala/config/maintainers.json +10 -6
- data/tracks/scala/exercises/bracket-push/example.scala +2 -2
- data/tracks/scala/exercises/bracket-push/src/test/scala/BracketPushTest.scala +74 -0
- data/tracks/scala/exercises/crypto-square/example.scala +9 -9
- data/tracks/scala/exercises/crypto-square/src/test/scala/CryptoSquareTest.scala +33 -41
- data/tracks/scala/testgen/src/main/scala/BracketPushTestGenerator.scala +9 -38
- data/tracks/scala/testgen/src/main/scala/CryptoSquareTestGenerator.scala +17 -0
- data/tracks/sml/config.json +1 -1
- data/tracks/swift/config/maintainers.json +35 -0
- data/tracks/swift/docs/ABOUT.md +15 -5
- data/tracks/vimscript/config/maintainers.json +35 -0
- metadata +58 -8
- data/tracks/ocaml/exercises/point-mutations/Makefile +0 -8
- data/tracks/ocaml/exercises/point-mutations/README.md +0 -81
- data/tracks/ocaml/exercises/point-mutations/dna.mli +0 -6
- data/tracks/scala/exercises/bracket-push/src/test/scala/BracketsTest.scala +0 -68
- data/tracks/scala/exercises/crypto-square/src/main/scala/CryptoSquare.scala +0 -11
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import org.scalatest.{Matchers, FunSuite}
|
|
2
|
+
|
|
3
|
+
/** @version 1.1.0 */
|
|
4
|
+
class BracketPushTest extends FunSuite with Matchers {
|
|
5
|
+
|
|
6
|
+
test("paired square brackets") {
|
|
7
|
+
BracketPush.isPaired("[]") should be (true)
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
test("empty string") {
|
|
11
|
+
pending
|
|
12
|
+
BracketPush.isPaired("") should be (true)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
test("unpaired brackets") {
|
|
16
|
+
pending
|
|
17
|
+
BracketPush.isPaired("[[") should be (false)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
test("wrong ordered brackets") {
|
|
21
|
+
pending
|
|
22
|
+
BracketPush.isPaired("}{") should be (false)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
test("wrong closing bracket") {
|
|
26
|
+
pending
|
|
27
|
+
BracketPush.isPaired("{]") should be (false)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
test("paired with whitespace") {
|
|
31
|
+
pending
|
|
32
|
+
BracketPush.isPaired("{ }") should be (true)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
test("simple nested brackets") {
|
|
36
|
+
pending
|
|
37
|
+
BracketPush.isPaired("{[]}") should be (true)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
test("several paired brackets") {
|
|
41
|
+
pending
|
|
42
|
+
BracketPush.isPaired("{}[]") should be (true)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
test("paired and nested brackets") {
|
|
46
|
+
pending
|
|
47
|
+
BracketPush.isPaired("([{}({}[])])") should be (true)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
test("unopened closing brackets") {
|
|
51
|
+
pending
|
|
52
|
+
BracketPush.isPaired("{[)][]}") should be (false)
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
test("unpaired and nested brackets") {
|
|
56
|
+
pending
|
|
57
|
+
BracketPush.isPaired("([{])") should be (false)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
test("paired and wrong nested brackets") {
|
|
61
|
+
pending
|
|
62
|
+
BracketPush.isPaired("[({]})") should be (false)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
test("math expression") {
|
|
66
|
+
pending
|
|
67
|
+
BracketPush.isPaired("(((185 + 223.85) * 15) - 543)/2") should be (true)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
test("complex latex expression") {
|
|
71
|
+
pending
|
|
72
|
+
BracketPush.isPaired("\\\\left(\\\\begin{array}{cc} \\\\frac{1}{3} & x\\\\\\\\ \\\\mathrm{e}^{x} &... x^2 \\\\end{array}\\\\right)") should be (true)
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
object CryptoSquare {
|
|
2
|
-
def
|
|
2
|
+
def normalizedPlaintext(text: String): String =
|
|
3
3
|
text.filter(c => c.isLetterOrDigit).toLowerCase
|
|
4
4
|
|
|
5
5
|
def squareSize(text: String): Int = Math.ceil(Math.sqrt(text.length)).asInstanceOf[Int]
|
|
6
6
|
|
|
7
7
|
def plaintextSegments(text: String): List[String] = {
|
|
8
|
-
val normalized =
|
|
8
|
+
val normalized = normalizedPlaintext(text)
|
|
9
9
|
val size = squareSize(normalized)
|
|
10
10
|
size match {
|
|
11
11
|
case 0 => List.empty
|
|
@@ -13,13 +13,13 @@ object CryptoSquare {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
def
|
|
16
|
+
def encoded(text: String): String = {
|
|
17
17
|
val plainSegs = plaintextSegments(text)
|
|
18
18
|
|
|
19
|
-
transpose(plainSegs).mkString
|
|
19
|
+
transpose(plainSegs).mkString.filter(c => !c.isWhitespace)
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
def
|
|
22
|
+
def ciphertext(text: String): String = {
|
|
23
23
|
val plainSegs = plaintextSegments(text)
|
|
24
24
|
|
|
25
25
|
transpose(plainSegs).mkString(" ")
|
|
@@ -30,10 +30,10 @@ object CryptoSquare {
|
|
|
30
30
|
List.empty
|
|
31
31
|
} else {
|
|
32
32
|
val size = texts.head.length
|
|
33
|
-
// Scala's transpose must work on
|
|
34
|
-
// strip off the padding before return.
|
|
35
|
-
val padded = texts.map(s => s.padTo(size, "
|
|
36
|
-
padded.transpose.map(item => item.mkString.replaceAll("
|
|
33
|
+
// Scala's transpose must work on Lists where all elements are same size.
|
|
34
|
+
// So pad the List. Then strip off the padding before return.
|
|
35
|
+
val padded = texts.map(s => s.padTo(size, "\u0000"))
|
|
36
|
+
padded.transpose.map(item => item.mkString.replaceAll("\u0000", " "))
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
}
|
|
@@ -1,72 +1,64 @@
|
|
|
1
|
-
import org.scalatest.{Matchers,
|
|
1
|
+
import org.scalatest.{Matchers, FunSuite}
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
/** @version 2.0.0 */
|
|
4
|
+
class CryptoSquareTest extends FunSuite with Matchers {
|
|
5
|
+
|
|
6
|
+
test("Lowercase") {
|
|
7
|
+
CryptoSquare.normalizedPlaintext("Hello") should be ("hello")
|
|
6
8
|
}
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
test("Remove spaces") {
|
|
9
11
|
pending
|
|
10
|
-
CryptoSquare.
|
|
12
|
+
CryptoSquare.normalizedPlaintext("Hi there") should be ("hithere")
|
|
11
13
|
}
|
|
12
14
|
|
|
15
|
+
test("Remove punctuation") {
|
|
16
|
+
pending
|
|
17
|
+
CryptoSquare.normalizedPlaintext("@1, 2%, 3 Go!") should be ("123go")
|
|
18
|
+
}
|
|
13
19
|
|
|
14
|
-
|
|
20
|
+
test("empty plaintext results in an empty rectangle") {
|
|
15
21
|
pending
|
|
16
|
-
CryptoSquare.
|
|
17
|
-
CryptoSquare.squareSize("123456789") should equal(3)
|
|
22
|
+
CryptoSquare.plaintextSegments("") should be (List())
|
|
18
23
|
}
|
|
19
24
|
|
|
20
|
-
|
|
25
|
+
test("4 character plaintext results in an 2x2 rectangle") {
|
|
21
26
|
pending
|
|
22
|
-
CryptoSquare.
|
|
23
|
-
CryptoSquare.squareSize("123456789abcd") should equal(4)
|
|
27
|
+
CryptoSquare.plaintextSegments("Ab Cd") should be (List("ab", "cd"))
|
|
24
28
|
}
|
|
25
29
|
|
|
26
|
-
|
|
30
|
+
test("9 character plaintext results in an 3x3 rectangle") {
|
|
27
31
|
pending
|
|
28
|
-
CryptoSquare.
|
|
32
|
+
CryptoSquare.plaintextSegments("This is fun!") should be (List("thi", "sis", "fun"))
|
|
29
33
|
}
|
|
30
34
|
|
|
35
|
+
test("54 character plaintext results in an 8x7 rectangle") {
|
|
36
|
+
pending
|
|
37
|
+
CryptoSquare.plaintextSegments("If man was meant to stay on the ground, god would have given us roots.") should be (List("ifmanwas", "meanttos", "tayonthe", "groundgo", "dwouldha", "vegivenu", "sroots"))
|
|
38
|
+
}
|
|
31
39
|
|
|
32
|
-
|
|
40
|
+
test("empty plaintext results in an empty encode") {
|
|
33
41
|
pending
|
|
34
|
-
CryptoSquare.
|
|
35
|
-
equal(List("neverv", "exthin", "eheart", "withid", "lewoes"))
|
|
42
|
+
CryptoSquare.encoded("") should be ("")
|
|
36
43
|
}
|
|
37
44
|
|
|
38
|
-
|
|
45
|
+
test("Non-empty plaintext results in the combined plaintext segments") {
|
|
39
46
|
pending
|
|
40
|
-
CryptoSquare.
|
|
41
|
-
equal(List("zomg", "zomb", "ies"))
|
|
47
|
+
CryptoSquare.encoded("If man was meant to stay on the ground, god would have given us roots.") should be ("imtgdvsfearwermayoogoanouuiontnnlvtwttddesaohghnsseoau")
|
|
42
48
|
}
|
|
43
49
|
|
|
44
|
-
|
|
50
|
+
test("empty plaintext results in an empty ciphertext") {
|
|
45
51
|
pending
|
|
46
|
-
CryptoSquare.ciphertext("
|
|
47
|
-
equal("tasneyinicdsmiohooelntuillibsuuml")
|
|
48
|
-
CryptoSquare.ciphertext("We all know interspecies romance is weird.") should
|
|
49
|
-
equal("wneiaweoreneawssciliprerlneoidktcms")
|
|
52
|
+
CryptoSquare.ciphertext("") should be ("")
|
|
50
53
|
}
|
|
51
54
|
|
|
52
|
-
|
|
55
|
+
test("9 character plaintext results in 3 chunks of 3 characters") {
|
|
53
56
|
pending
|
|
54
|
-
CryptoSquare.
|
|
55
|
-
equal("msemo aanin dnin ndla etlt shui")
|
|
56
|
-
CryptoSquare.normalizedCiphertext("If man was meant to stay on the ground " +
|
|
57
|
-
"god would have given us roots") should
|
|
58
|
-
equal("imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau")
|
|
57
|
+
CryptoSquare.ciphertext("This is fun!") should be ("tsf hiu isn")
|
|
59
58
|
}
|
|
60
59
|
|
|
61
|
-
|
|
60
|
+
test("54 character plaintext results in 7 chunks, the last two padded with spaces") {
|
|
62
61
|
pending
|
|
63
|
-
CryptoSquare.ciphertext("") should
|
|
64
|
-
equal("")
|
|
65
|
-
CryptoSquare.ciphertext(" ") should
|
|
66
|
-
equal("")
|
|
67
|
-
CryptoSquare.normalizedCiphertext("") should
|
|
68
|
-
equal("")
|
|
69
|
-
CryptoSquare.normalizedCiphertext(" ") should
|
|
70
|
-
equal("")
|
|
62
|
+
CryptoSquare.ciphertext("If man was meant to stay on the ground, god would have given us roots.") should be ("imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau ")
|
|
71
63
|
}
|
|
72
|
-
}
|
|
64
|
+
}
|
|
@@ -1,44 +1,15 @@
|
|
|
1
|
-
import
|
|
1
|
+
import java.io.File
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
class BracketPushTestGenerator {
|
|
6
|
-
implicit val testCaseReader = Json.reads[BracketTestCase]
|
|
7
|
-
|
|
8
|
-
private val filename = "bracket-push.json"
|
|
9
|
-
private val fileContents = Source.fromFile(filename).getLines.mkString
|
|
10
|
-
private val json = Json.parse(fileContents)
|
|
11
|
-
|
|
12
|
-
def write {
|
|
13
|
-
print("import org.scalatest.{FunSuite, Matchers}" + System.lineSeparator())
|
|
14
|
-
print(System.lineSeparator())
|
|
15
|
-
print("class BracketsTest extends FunSuite with Matchers {" + System.lineSeparator())
|
|
16
|
-
|
|
17
|
-
writeTestCases()
|
|
18
|
-
|
|
19
|
-
print("}" + System.lineSeparator())
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
private def writeTestCases(): Unit = {
|
|
23
|
-
val testCases = (json \ "cases").get.as[List[BracketTestCase]]
|
|
24
|
-
|
|
25
|
-
testCases.foreach(tc => {
|
|
26
|
-
print("\ttest(\"" + tc.description + "\") {" + System.lineSeparator())
|
|
27
|
-
println("pending")
|
|
28
|
-
println("Brackets.areBalanced(\"\"\"" + tc.input + "\"\"\") should be (" + tc.expected + ")")
|
|
29
|
-
|
|
30
|
-
print("\t}" + System.lineSeparator())
|
|
31
|
-
print(System.lineSeparator())
|
|
32
|
-
})
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
case class BracketTestCase(description: String,
|
|
37
|
-
input: String,
|
|
38
|
-
expected: Boolean)
|
|
3
|
+
import testgen.TestSuiteBuilder._
|
|
4
|
+
import testgen._
|
|
39
5
|
|
|
40
6
|
object BracketPushTestGenerator {
|
|
41
7
|
def main(args: Array[String]): Unit = {
|
|
42
|
-
new
|
|
8
|
+
val file = new File("src/main/resources/bracket-push.json")
|
|
9
|
+
|
|
10
|
+
val code = TestSuiteBuilder.build(file, fromLabeledTest("input"))
|
|
11
|
+
println(s"-------------")
|
|
12
|
+
println(code)
|
|
13
|
+
println(s"-------------")
|
|
43
14
|
}
|
|
44
15
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import java.io.File
|
|
2
|
+
|
|
3
|
+
import testgen.TestSuiteBuilder._
|
|
4
|
+
import testgen._
|
|
5
|
+
|
|
6
|
+
object CryptoSquareTestGenerator {
|
|
7
|
+
def main(args: Array[String]): Unit = {
|
|
8
|
+
val file = new File("src/main/resources/crypto-square.json")
|
|
9
|
+
|
|
10
|
+
val code = TestSuiteBuilder.build(file,
|
|
11
|
+
fromLabeledTestAlt("normalizedPlaintext" -> Seq("plaintext"), "plaintextSegments" -> Seq("plaintext"),
|
|
12
|
+
"encoded" -> Seq("plaintext"), "ciphertext" -> Seq("plaintext")))
|
|
13
|
+
println(s"-------------")
|
|
14
|
+
println(code)
|
|
15
|
+
println(s"-------------")
|
|
16
|
+
}
|
|
17
|
+
}
|
data/tracks/sml/config.json
CHANGED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"maintainers": [
|
|
3
|
+
{
|
|
4
|
+
"github_username": "hankturowski",
|
|
5
|
+
"show_on_website": false,
|
|
6
|
+
"alumnus": false,
|
|
7
|
+
"name": null,
|
|
8
|
+
"bio": null,
|
|
9
|
+
"link_text": null,
|
|
10
|
+
"link_url": null,
|
|
11
|
+
"avatar_url": null
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"github_username": "masters3d",
|
|
15
|
+
"show_on_website": false,
|
|
16
|
+
"alumnus": false,
|
|
17
|
+
"name": null,
|
|
18
|
+
"bio": null,
|
|
19
|
+
"link_text": null,
|
|
20
|
+
"link_url": null,
|
|
21
|
+
"avatar_url": null
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"github_username": "robtimp",
|
|
25
|
+
"show_on_website": false,
|
|
26
|
+
"alumnus": false,
|
|
27
|
+
"name": null,
|
|
28
|
+
"bio": null,
|
|
29
|
+
"link_text": null,
|
|
30
|
+
"link_url": null,
|
|
31
|
+
"avatar_url": null
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md"
|
|
35
|
+
}
|
data/tracks/swift/docs/ABOUT.md
CHANGED
|
@@ -1,9 +1,19 @@
|
|
|
1
|
-
Swift is a modern open source programming language that runs
|
|
1
|
+
Swift is a modern open source programming language that runs on macOS, Linux and on Windows using a linux subsystem.
|
|
2
2
|
|
|
3
|
-
Swift
|
|
3
|
+
Swift was developed initially by Apple to interoperate with their key frameworks, Cocoa and CocoaTouch, both of which are mostly implemented in Objective-C.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Swift is influenced by a large number of existing programming languages, and it incorporates concepts from a wide range of programming methods. Everything from scripting to object oriented and functional programming.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Apple refers to Swift as a "protocol oriented programming language" and has expressed the goal of eventually making Swift useful for everything from scripts to an operating system.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
***
|
|
10
|
+
|
|
11
|
+
This [Swift Tour](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/GuidedTour.html) is an introduction the language on Apple's Public Developer Website.
|
|
12
|
+
|
|
13
|
+
***
|
|
14
|
+
|
|
15
|
+
[Wikipedia's Swift Page](https://en.wikipedia.org/wiki/Swift_(programming_language)) giving a good, Wikipedia-styled overview.
|
|
16
|
+
|
|
17
|
+
***
|
|
18
|
+
|
|
19
|
+
Swift is documented in [The Swift Programming Language](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/index.html) - again, on Apple's Public Developer Website - and in the [iBooks Store](https://itunes.apple.com/us/book/swift-programming-language/id881256329?mt=11). The ePub version is also available on [Swift.org](https://swift.org/documentation/#the-swift-programming-language).
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"maintainers": [
|
|
3
|
+
{
|
|
4
|
+
"github_username": "kotp",
|
|
5
|
+
"show_on_website": false,
|
|
6
|
+
"alumnus": false,
|
|
7
|
+
"name": null,
|
|
8
|
+
"bio": null,
|
|
9
|
+
"link_text": null,
|
|
10
|
+
"link_url": null,
|
|
11
|
+
"avatar_url": null
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"github_username": "mhinz",
|
|
15
|
+
"show_on_website": false,
|
|
16
|
+
"alumnus": false,
|
|
17
|
+
"name": null,
|
|
18
|
+
"bio": null,
|
|
19
|
+
"link_text": null,
|
|
20
|
+
"link_url": null,
|
|
21
|
+
"avatar_url": null
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"github_username": "kevinlitchfield",
|
|
25
|
+
"show_on_website": false,
|
|
26
|
+
"alumnus": false,
|
|
27
|
+
"name": null,
|
|
28
|
+
"bio": null,
|
|
29
|
+
"link_text": null,
|
|
30
|
+
"link_url": null,
|
|
31
|
+
"avatar_url": null
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md"
|
|
35
|
+
}
|
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.
|
|
4
|
+
version: 2.2.1.7
|
|
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-
|
|
11
|
+
date: 2017-08-01 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rubyzip
|
|
@@ -1634,6 +1634,7 @@ files:
|
|
|
1634
1634
|
- tracks/crystal/bin/fetch-configlet
|
|
1635
1635
|
- tracks/crystal/config.json
|
|
1636
1636
|
- tracks/crystal/config/exercise_readme.go.tmpl
|
|
1637
|
+
- tracks/crystal/config/maintainers.json
|
|
1637
1638
|
- tracks/crystal/docs/ABOUT.md
|
|
1638
1639
|
- tracks/crystal/docs/EXERCISE_README_INSERT.md
|
|
1639
1640
|
- tracks/crystal/docs/INSTALLATION.md
|
|
@@ -1764,6 +1765,7 @@ files:
|
|
|
1764
1765
|
- tracks/csharp/circle.yml
|
|
1765
1766
|
- tracks/csharp/config.json
|
|
1766
1767
|
- tracks/csharp/config/exercise_readme.go.tmpl
|
|
1768
|
+
- tracks/csharp/config/maintainers.json
|
|
1767
1769
|
- tracks/csharp/docs/ABOUT.md
|
|
1768
1770
|
- tracks/csharp/docs/EXERCISE_README_INSERT.md
|
|
1769
1771
|
- tracks/csharp/docs/INSTALLATION.md
|
|
@@ -2487,6 +2489,7 @@ files:
|
|
|
2487
2489
|
- tracks/dart/bin/fetch-configlet
|
|
2488
2490
|
- tracks/dart/config.json
|
|
2489
2491
|
- tracks/dart/config/exercise_readme.go.tmpl
|
|
2492
|
+
- tracks/dart/config/maintainers.json
|
|
2490
2493
|
- tracks/dart/docs/ABOUT.md
|
|
2491
2494
|
- tracks/dart/docs/EXERCISE_README_INSERT.md
|
|
2492
2495
|
- tracks/dart/docs/INSTALLATION.md
|
|
@@ -2988,6 +2991,10 @@ files:
|
|
|
2988
2991
|
- tracks/ecmascript/exercises/trinary/example.js
|
|
2989
2992
|
- tracks/ecmascript/exercises/trinary/package.json
|
|
2990
2993
|
- tracks/ecmascript/exercises/trinary/trinary.spec.js
|
|
2994
|
+
- tracks/ecmascript/exercises/twelve-days/README.md
|
|
2995
|
+
- tracks/ecmascript/exercises/twelve-days/example.js
|
|
2996
|
+
- tracks/ecmascript/exercises/twelve-days/package.json
|
|
2997
|
+
- tracks/ecmascript/exercises/twelve-days/twelve-days.spec.js
|
|
2991
2998
|
- tracks/ecmascript/exercises/two-bucket/README.md
|
|
2992
2999
|
- tracks/ecmascript/exercises/two-bucket/example.js
|
|
2993
3000
|
- tracks/ecmascript/exercises/two-bucket/package.json
|
|
@@ -4051,6 +4058,7 @@ files:
|
|
|
4051
4058
|
- tracks/fsharp/circle.yml
|
|
4052
4059
|
- tracks/fsharp/config.json
|
|
4053
4060
|
- tracks/fsharp/config/exercise_readme.go.tmpl
|
|
4061
|
+
- tracks/fsharp/config/maintainers.json
|
|
4054
4062
|
- tracks/fsharp/docs/ABOUT.md
|
|
4055
4063
|
- tracks/fsharp/docs/EXERCISE_README_INSERT.md
|
|
4056
4064
|
- tracks/fsharp/docs/INSTALLATION.md
|
|
@@ -6462,6 +6470,7 @@ files:
|
|
|
6462
6470
|
- tracks/kotlin/bin/unit-tests.sh
|
|
6463
6471
|
- tracks/kotlin/config.json
|
|
6464
6472
|
- tracks/kotlin/config/exercise_readme.go.tmpl
|
|
6473
|
+
- tracks/kotlin/config/maintainers.json
|
|
6465
6474
|
- tracks/kotlin/docs/ABOUT.md
|
|
6466
6475
|
- tracks/kotlin/docs/EXERCISE_README_INSERT.md
|
|
6467
6476
|
- tracks/kotlin/docs/INSTALLATION.md
|
|
@@ -6827,6 +6836,7 @@ files:
|
|
|
6827
6836
|
- tracks/lfe/bin/fetch-configlet
|
|
6828
6837
|
- tracks/lfe/config.json
|
|
6829
6838
|
- tracks/lfe/config/exercise_readme.go.tmpl
|
|
6839
|
+
- tracks/lfe/config/maintainers.json
|
|
6830
6840
|
- tracks/lfe/docs/ABOUT.md
|
|
6831
6841
|
- tracks/lfe/docs/EXERCISE_README_INSERT.md
|
|
6832
6842
|
- tracks/lfe/docs/INSTALLATION.md
|
|
@@ -7095,6 +7105,7 @@ files:
|
|
|
7095
7105
|
- tracks/lisp/bin/xlisp-test.lisp
|
|
7096
7106
|
- tracks/lisp/config.json
|
|
7097
7107
|
- tracks/lisp/config/exercise_readme.go.tmpl
|
|
7108
|
+
- tracks/lisp/config/maintainers.json
|
|
7098
7109
|
- tracks/lisp/docs/ABOUT.md
|
|
7099
7110
|
- tracks/lisp/docs/EXERCISE_README_INSERT.md
|
|
7100
7111
|
- tracks/lisp/docs/INSTALLATION.md
|
|
@@ -7790,6 +7801,7 @@ files:
|
|
|
7790
7801
|
- tracks/ocaml/bin/fetch-configlet
|
|
7791
7802
|
- tracks/ocaml/config.json
|
|
7792
7803
|
- tracks/ocaml/config/exercise_readme.go.tmpl
|
|
7804
|
+
- tracks/ocaml/config/maintainers.json
|
|
7793
7805
|
- tracks/ocaml/docs/ABOUT.md
|
|
7794
7806
|
- tracks/ocaml/docs/EXERCISE_README_INSERT.md
|
|
7795
7807
|
- tracks/ocaml/docs/INSTALLATION.md
|
|
@@ -7971,10 +7983,6 @@ files:
|
|
|
7971
7983
|
- tracks/ocaml/exercises/phone-number/example.ml
|
|
7972
7984
|
- tracks/ocaml/exercises/phone-number/phone_number.mli
|
|
7973
7985
|
- tracks/ocaml/exercises/phone-number/test.ml
|
|
7974
|
-
- tracks/ocaml/exercises/point-mutations/Makefile
|
|
7975
|
-
- tracks/ocaml/exercises/point-mutations/README.md
|
|
7976
|
-
- tracks/ocaml/exercises/point-mutations/dna.mli
|
|
7977
|
-
- tracks/ocaml/exercises/point-mutations/example.ml
|
|
7978
7986
|
- tracks/ocaml/exercises/prime-factors/.merlin
|
|
7979
7987
|
- tracks/ocaml/exercises/prime-factors/Makefile
|
|
7980
7988
|
- tracks/ocaml/exercises/prime-factors/README.md
|
|
@@ -8129,6 +8137,7 @@ files:
|
|
|
8129
8137
|
- tracks/perl5/bin/fetch-configlet
|
|
8130
8138
|
- tracks/perl5/config.json
|
|
8131
8139
|
- tracks/perl5/config/exercise_readme.go.tmpl
|
|
8140
|
+
- tracks/perl5/config/maintainers.json
|
|
8132
8141
|
- tracks/perl5/cpanfile
|
|
8133
8142
|
- tracks/perl5/docs/ABOUT.md
|
|
8134
8143
|
- tracks/perl5/docs/EXERCISE_README_INSERT.md
|
|
@@ -8369,6 +8378,7 @@ files:
|
|
|
8369
8378
|
- tracks/perl6/bin/fetch-configlet
|
|
8370
8379
|
- tracks/perl6/config.json
|
|
8371
8380
|
- tracks/perl6/config/exercise_readme.go.tmpl
|
|
8381
|
+
- tracks/perl6/config/maintainers.json
|
|
8372
8382
|
- tracks/perl6/docs/ABOUT.md
|
|
8373
8383
|
- tracks/perl6/docs/EXERCISE_README_INSERT.md
|
|
8374
8384
|
- tracks/perl6/docs/INSTALLATION.md
|
|
@@ -8732,6 +8742,7 @@ files:
|
|
|
8732
8742
|
- tracks/pony/bin/test-exercises
|
|
8733
8743
|
- tracks/pony/config.json
|
|
8734
8744
|
- tracks/pony/config/exercise_readme.go.tmpl
|
|
8745
|
+
- tracks/pony/config/maintainers.json
|
|
8735
8746
|
- tracks/pony/docs/ABOUT.md
|
|
8736
8747
|
- tracks/pony/docs/EXERCISE_README_INSERT.md
|
|
8737
8748
|
- tracks/pony/docs/INSTALLATION.md
|
|
@@ -8863,6 +8874,7 @@ files:
|
|
|
8863
8874
|
- tracks/purescript/bin/test.sh
|
|
8864
8875
|
- tracks/purescript/config.json
|
|
8865
8876
|
- tracks/purescript/config/exercise_readme.go.tmpl
|
|
8877
|
+
- tracks/purescript/config/maintainers.json
|
|
8866
8878
|
- tracks/purescript/docs/ABOUT.md
|
|
8867
8879
|
- tracks/purescript/docs/EXERCISE_README_INSERT.md
|
|
8868
8880
|
- tracks/purescript/docs/INSTALLATION.md
|
|
@@ -9388,6 +9400,10 @@ files:
|
|
|
9388
9400
|
- tracks/r/exercises/bob/bob.R
|
|
9389
9401
|
- tracks/r/exercises/bob/example.R
|
|
9390
9402
|
- tracks/r/exercises/bob/test_bob.R
|
|
9403
|
+
- tracks/r/exercises/collatz-conjecture/README.md
|
|
9404
|
+
- tracks/r/exercises/collatz-conjecture/collatz-conjecture.R
|
|
9405
|
+
- tracks/r/exercises/collatz-conjecture/example.R
|
|
9406
|
+
- tracks/r/exercises/collatz-conjecture/test_collatz-conjecture.R
|
|
9391
9407
|
- tracks/r/exercises/difference-of-squares/README.md
|
|
9392
9408
|
- tracks/r/exercises/difference-of-squares/difference-of-squares.R
|
|
9393
9409
|
- tracks/r/exercises/difference-of-squares/example.R
|
|
@@ -9420,6 +9436,14 @@ files:
|
|
|
9420
9436
|
- tracks/r/exercises/luhn/example.R
|
|
9421
9437
|
- tracks/r/exercises/luhn/luhn.R
|
|
9422
9438
|
- tracks/r/exercises/luhn/test_luhn.R
|
|
9439
|
+
- tracks/r/exercises/nucleotide-count/README.md
|
|
9440
|
+
- tracks/r/exercises/nucleotide-count/example.R
|
|
9441
|
+
- tracks/r/exercises/nucleotide-count/nucleotide-count.R
|
|
9442
|
+
- tracks/r/exercises/nucleotide-count/test_nucleotide-count.R
|
|
9443
|
+
- tracks/r/exercises/pangram/README.md
|
|
9444
|
+
- tracks/r/exercises/pangram/example.R
|
|
9445
|
+
- tracks/r/exercises/pangram/pangram.R
|
|
9446
|
+
- tracks/r/exercises/pangram/test_pangram.R
|
|
9423
9447
|
- tracks/r/exercises/pascals-triangle/README.md
|
|
9424
9448
|
- tracks/r/exercises/pascals-triangle/example.R
|
|
9425
9449
|
- tracks/r/exercises/pascals-triangle/pascals-triangle.R
|
|
@@ -9472,6 +9496,11 @@ files:
|
|
|
9472
9496
|
- tracks/r/exercises/tournament/example.R
|
|
9473
9497
|
- tracks/r/exercises/tournament/test_tournament.R
|
|
9474
9498
|
- tracks/r/exercises/tournament/tournament.R
|
|
9499
|
+
- tracks/r/exercises/triangle/.meta/hints.md
|
|
9500
|
+
- tracks/r/exercises/triangle/README.md
|
|
9501
|
+
- tracks/r/exercises/triangle/example.R
|
|
9502
|
+
- tracks/r/exercises/triangle/test_triangle.R
|
|
9503
|
+
- tracks/r/exercises/triangle/triangle.R
|
|
9475
9504
|
- tracks/r/exercises/word-count/README.md
|
|
9476
9505
|
- tracks/r/exercises/word-count/example.R
|
|
9477
9506
|
- tracks/r/exercises/word-count/test_word-count.R
|
|
@@ -10134,6 +10163,13 @@ files:
|
|
|
10134
10163
|
- tracks/rust/exercises/circular-buffer/example.rs
|
|
10135
10164
|
- tracks/rust/exercises/circular-buffer/src/lib.rs
|
|
10136
10165
|
- tracks/rust/exercises/circular-buffer/tests/circular-buffer.rs
|
|
10166
|
+
- tracks/rust/exercises/clock/.meta/hints.md
|
|
10167
|
+
- tracks/rust/exercises/clock/Cargo.lock
|
|
10168
|
+
- tracks/rust/exercises/clock/Cargo.toml
|
|
10169
|
+
- tracks/rust/exercises/clock/README.md
|
|
10170
|
+
- tracks/rust/exercises/clock/example.rs
|
|
10171
|
+
- tracks/rust/exercises/clock/src/lib.rs
|
|
10172
|
+
- tracks/rust/exercises/clock/tests/clock.rs
|
|
10137
10173
|
- tracks/rust/exercises/custom-set/.gitignore
|
|
10138
10174
|
- tracks/rust/exercises/custom-set/Cargo.lock
|
|
10139
10175
|
- tracks/rust/exercises/custom-set/Cargo.toml
|
|
@@ -10254,6 +10290,12 @@ files:
|
|
|
10254
10290
|
- tracks/rust/exercises/minesweeper/example.rs
|
|
10255
10291
|
- tracks/rust/exercises/minesweeper/src/lib.rs
|
|
10256
10292
|
- tracks/rust/exercises/minesweeper/tests/minesweeper.rs
|
|
10293
|
+
- tracks/rust/exercises/nth-prime/Cargo.lock
|
|
10294
|
+
- tracks/rust/exercises/nth-prime/Cargo.toml
|
|
10295
|
+
- tracks/rust/exercises/nth-prime/README.md
|
|
10296
|
+
- tracks/rust/exercises/nth-prime/example.rs
|
|
10297
|
+
- tracks/rust/exercises/nth-prime/src/lib.rs
|
|
10298
|
+
- tracks/rust/exercises/nth-prime/tests/nth-prime.rs
|
|
10257
10299
|
- tracks/rust/exercises/nucleotide-codons/.gitignore
|
|
10258
10300
|
- tracks/rust/exercises/nucleotide-codons/Cargo.lock
|
|
10259
10301
|
- tracks/rust/exercises/nucleotide-codons/Cargo.toml
|
|
@@ -10330,6 +10372,12 @@ files:
|
|
|
10330
10372
|
- tracks/rust/exercises/proverb/example.rs
|
|
10331
10373
|
- tracks/rust/exercises/proverb/src/lib.rs
|
|
10332
10374
|
- tracks/rust/exercises/proverb/tests/proverb.rs
|
|
10375
|
+
- tracks/rust/exercises/pythagorean-triplet/Cargo.lock
|
|
10376
|
+
- tracks/rust/exercises/pythagorean-triplet/Cargo.toml
|
|
10377
|
+
- tracks/rust/exercises/pythagorean-triplet/README.md
|
|
10378
|
+
- tracks/rust/exercises/pythagorean-triplet/example.rs
|
|
10379
|
+
- tracks/rust/exercises/pythagorean-triplet/src/lib.rs
|
|
10380
|
+
- tracks/rust/exercises/pythagorean-triplet/tests/pythagorean-triplet.rs
|
|
10333
10381
|
- tracks/rust/exercises/queen-attack/.gitignore
|
|
10334
10382
|
- tracks/rust/exercises/queen-attack/Cargo.lock
|
|
10335
10383
|
- tracks/rust/exercises/queen-attack/Cargo.toml
|
|
@@ -10576,7 +10624,7 @@ files:
|
|
|
10576
10624
|
- tracks/scala/exercises/bracket-push/build.sbt
|
|
10577
10625
|
- tracks/scala/exercises/bracket-push/example.scala
|
|
10578
10626
|
- tracks/scala/exercises/bracket-push/src/main/scala/.keep
|
|
10579
|
-
- tracks/scala/exercises/bracket-push/src/test/scala/
|
|
10627
|
+
- tracks/scala/exercises/bracket-push/src/test/scala/BracketPushTest.scala
|
|
10580
10628
|
- tracks/scala/exercises/change/README.md
|
|
10581
10629
|
- tracks/scala/exercises/change/build.sbt
|
|
10582
10630
|
- tracks/scala/exercises/change/example.scala
|
|
@@ -10597,7 +10645,6 @@ files:
|
|
|
10597
10645
|
- tracks/scala/exercises/crypto-square/build.sbt
|
|
10598
10646
|
- tracks/scala/exercises/crypto-square/example.scala
|
|
10599
10647
|
- tracks/scala/exercises/crypto-square/src/main/scala/.keep
|
|
10600
|
-
- tracks/scala/exercises/crypto-square/src/main/scala/CryptoSquare.scala
|
|
10601
10648
|
- tracks/scala/exercises/crypto-square/src/test/scala/CryptoSquareTest.scala
|
|
10602
10649
|
- tracks/scala/exercises/custom-set/README.md
|
|
10603
10650
|
- tracks/scala/exercises/custom-set/build.sbt
|
|
@@ -10960,6 +11007,7 @@ files:
|
|
|
10960
11007
|
- tracks/scala/testgen/src/main/scala/BookStoreTestGenerator.scala
|
|
10961
11008
|
- tracks/scala/testgen/src/main/scala/BowlingTestGenerator.scala
|
|
10962
11009
|
- tracks/scala/testgen/src/main/scala/BracketPushTestGenerator.scala
|
|
11010
|
+
- tracks/scala/testgen/src/main/scala/CryptoSquareTestGenerator.scala
|
|
10963
11011
|
- tracks/scala/testgen/src/main/scala/CustomSetTestGenerator.scala
|
|
10964
11012
|
- tracks/scala/testgen/src/main/scala/DifferenceOfSquaresTestGenerator.scala
|
|
10965
11013
|
- tracks/scala/testgen/src/main/scala/EtlTestGenerator.scala
|
|
@@ -11127,6 +11175,7 @@ files:
|
|
|
11127
11175
|
- tracks/swift/circle.yml
|
|
11128
11176
|
- tracks/swift/config.json
|
|
11129
11177
|
- tracks/swift/config/exercise_readme.go.tmpl
|
|
11178
|
+
- tracks/swift/config/maintainers.json
|
|
11130
11179
|
- tracks/swift/docs/ABOUT.md
|
|
11131
11180
|
- tracks/swift/docs/EXERCISE_README_INSERT.md
|
|
11132
11181
|
- tracks/swift/docs/INSTALLATION.md
|
|
@@ -11879,6 +11928,7 @@ files:
|
|
|
11879
11928
|
- tracks/vimscript/bin/pre-push
|
|
11880
11929
|
- tracks/vimscript/config.json
|
|
11881
11930
|
- tracks/vimscript/config/exercise_readme.go.tmpl
|
|
11931
|
+
- tracks/vimscript/config/maintainers.json
|
|
11882
11932
|
- tracks/vimscript/docs/ABOUT.md
|
|
11883
11933
|
- tracks/vimscript/docs/EXERCISE_README_INSERT.md
|
|
11884
11934
|
- tracks/vimscript/docs/INSTALLATION.md
|