trackler 2.0.8.28 → 2.0.8.29
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/common/CONTRIBUTING.md +4 -1
- data/common/README.md +52 -0
- data/lib/trackler/version.rb +1 -1
- data/tracks/ecmascript/config.json +7 -0
- data/tracks/ecmascript/exercises/perfect-numbers/example.js +68 -0
- data/tracks/ecmascript/exercises/perfect-numbers/gulpfile.js +89 -0
- data/tracks/ecmascript/exercises/perfect-numbers/package.json +28 -0
- data/tracks/ecmascript/exercises/perfect-numbers/perfect-numbers.spec.js +75 -0
- data/tracks/erlang/exercises/accumulate/src/accumulate.app.src +1 -1
- data/tracks/erlang/exercises/all-your-base/src/all_your_base.app.src +1 -1
- data/tracks/erlang/exercises/allergies/src/allergies.app.src +1 -1
- data/tracks/erlang/exercises/anagram/src/anagram.app.src +1 -1
- data/tracks/erlang/exercises/atbash-cipher/src/atbash_cipher.app.src +1 -1
- data/tracks/erlang/exercises/bank-account/src/bank_account.app.src +1 -1
- data/tracks/erlang/exercises/beer-song/src/beer_song.app.src +1 -1
- data/tracks/erlang/exercises/bob/src/bob.app.src +1 -1
- data/tracks/erlang/exercises/circular-buffer/src/circular_buffer.app.src +1 -1
- data/tracks/erlang/exercises/clock/src/clock.app.src +1 -1
- data/tracks/erlang/exercises/difference-of-squares/src/difference_of_squares.app.src +1 -1
- data/tracks/erlang/exercises/etl/src/etl.app.src +1 -1
- data/tracks/erlang/exercises/gigasecond/src/gigasecond.app.src +1 -1
- data/tracks/erlang/exercises/grade-school/src/grade_school.app.src +1 -1
- data/tracks/erlang/exercises/grains/src/grains.app.src +1 -1
- data/tracks/erlang/exercises/hamming/src/hamming.app.src +1 -1
- data/tracks/erlang/exercises/hello-world/src/hello_world.app.src +1 -1
- data/tracks/erlang/exercises/largest-series-product/src/largest_series_product.app.src +1 -1
- data/tracks/erlang/exercises/leap/src/leap.app.src +1 -1
- data/tracks/erlang/exercises/luhn/src/luhn.app.src +1 -1
- data/tracks/erlang/exercises/meetup/src/meetup.app.src +1 -1
- data/tracks/erlang/exercises/nucleotide-count/src/nucleotide_count.app.src +1 -1
- data/tracks/erlang/exercises/parallel-letter-frequency/src/parallel_letter_frequency.app.src +1 -1
- data/tracks/erlang/exercises/phone-number/src/phone_number.app.src +1 -1
- data/tracks/erlang/exercises/rna-transcription/src/rna_transcription.app.src +1 -1
- data/tracks/erlang/exercises/robot-simulator/src/robot_simulator.app.src +1 -1
- data/tracks/erlang/exercises/roman-numerals/src/roman_numerals.app.src +1 -1
- data/tracks/erlang/exercises/rotational-cipher/src/rotational_cipher.app.src +1 -1
- data/tracks/erlang/exercises/scrabble-score/src/scrabble_score.app.src +1 -1
- data/tracks/erlang/exercises/series/src/series.app.src +1 -1
- data/tracks/erlang/exercises/space-age/src/space_age.app.src +1 -1
- data/tracks/erlang/exercises/strain/src/strain.app.src +1 -1
- data/tracks/erlang/exercises/sum-of-multiples/src/sum_of_multiples.app.src +1 -1
- data/tracks/erlang/exercises/triangle/src/triangle.app.src +1 -1
- data/tracks/erlang/exercises/word-count/src/word_count.app.src +1 -1
- data/tracks/erlang/exercises/zipper/src/zipper.app.src +1 -1
- data/tracks/go/exercises/hello-world/hello_world.go +10 -1
- data/tracks/haskell/exercises/simple-linked-list/examples/success-standard/package.yaml +1 -0
- data/tracks/haskell/exercises/simple-linked-list/examples/success-standard/src/LinkedList.hs +1 -0
- data/tracks/haskell/exercises/simple-linked-list/package.yaml +1 -0
- data/tracks/haskell/exercises/simple-linked-list/src/LinkedList.hs +1 -1
- data/tracks/haskell/exercises/simple-linked-list/test/Tests.hs +37 -1
- data/tracks/java/exercises/diamond/src/test/java/DiamondPrinterTest.java +13 -6
- data/tracks/java/exercises/secret-handshake/src/test/java/HandshakeCalculatorTest.java +21 -13
- data/tracks/objective-c/exercises/atbash-cipher/AtbashCipherExample.m +1 -1
- data/tracks/objective-c/exercises/beer-song/BeerSongExample.m +1 -1
- data/tracks/objective-c/exercises/beer-song/BeerSongTest.m +4 -4
- data/tracks/objective-c/exercises/binary-search/BinarySearchExample.m +1 -1
- data/tracks/objective-c/exercises/flatten-array/FlattenArrayExample.h +2 -1
- data/tracks/objective-c/exercises/flatten-array/FlattenArrayExample.m +12 -25
- data/tracks/objective-c/exercises/flatten-array/FlattenArrayTest.m +32 -80
- data/tracks/objective-c/exercises/sublist/SublistTest.m +47 -70
- data/tracks/perl6/exercises/allergies/Allergies.pm6 +1 -0
- data/tracks/perl6/exercises/allergies/Example.pm +3 -1
- data/tracks/perl6/exercises/allergies/allergies.t +187 -137
- data/tracks/perl6/exercises/anagram/Anagram.pm6 +1 -0
- data/tracks/perl6/exercises/anagram/Example.pm +15 -15
- data/tracks/perl6/exercises/anagram/anagram.t +164 -15
- data/tracks/perl6/exercises/atbash-cipher/AtbashCipher.pm6 +1 -0
- data/tracks/perl6/exercises/atbash-cipher/Example.pm +2 -0
- data/tracks/perl6/exercises/atbash-cipher/atbash-cipher.t +109 -86
- data/tracks/perl6/exercises/grains/Example.pm +10 -9
- data/tracks/perl6/exercises/grains/Grains.pm6 +1 -0
- data/tracks/perl6/exercises/grains/grains.t +126 -18
- data/tracks/perl6/exercises/leap/Example.pm +9 -9
- data/tracks/perl6/exercises/leap/Leap.pm6 +4 -0
- data/tracks/perl6/exercises/leap/leap.t +61 -17
- data/tracks/perl6/exercises/phone-number/Example.pm +4 -28
- data/tracks/perl6/exercises/phone-number/PhoneNumber.pm6 +4 -0
- data/tracks/perl6/exercises/phone-number/phone-number.t +102 -65
- data/tracks/perl6/exercises/raindrops/Example.pm +10 -8
- data/tracks/perl6/exercises/raindrops/Raindrops.pm6 +4 -0
- data/tracks/perl6/exercises/raindrops/raindrops.t +153 -20
- data/tracks/perl6/exercises/rna-transcription/Example.pm +5 -7
- data/tracks/perl6/exercises/rna-transcription/RNA.pm6 +4 -0
- data/tracks/perl6/exercises/rna-transcription/rna-transcription.t +107 -11
- data/tracks/perl6/exercises/scrabble-score/Example.pm +14 -19
- data/tracks/perl6/exercises/scrabble-score/Scrabble.pm6 +4 -0
- data/tracks/perl6/exercises/scrabble-score/scrabble-score.t +106 -15
- data/tracks/perl6/exercises/space-age/Example.pm +29 -13
- data/tracks/perl6/exercises/space-age/SpaceAge.pm6 +22 -0
- data/tracks/perl6/exercises/space-age/space-age.t +90 -52
- data/tracks/perl6/exercises/word-count/Example.pm +4 -8
- data/tracks/perl6/exercises/word-count/WordCount.pm6 +4 -0
- data/tracks/perl6/exercises/word-count/word-count.t +149 -16
- data/tracks/perl6/exercises/wordy/Example.pm +13 -13
- data/tracks/perl6/exercises/wordy/Wordy.pm6 +4 -0
- data/tracks/perl6/exercises/wordy/wordy.t +140 -97
- data/tracks/purescript/config.json +7 -0
- data/tracks/purescript/exercises/atbash-cipher/bower.json +18 -0
- data/tracks/purescript/exercises/atbash-cipher/examples/src/AtbashCipher.purs +41 -0
- data/tracks/purescript/exercises/atbash-cipher/src/AtbashCipher.purs +4 -0
- data/tracks/purescript/exercises/atbash-cipher/test/Main.purs +64 -0
- data/tracks/python/exercises/run-length-encoding/run_length_encoding_test.py +2 -0
- data/tracks/swift/exercises/grade-school/Tests/GradeSchoolTests/GradeSchoolTests.swift +1 -1
- metadata +22 -2
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "atbash-cipher",
|
|
3
|
+
"ignore": [
|
|
4
|
+
"**/.*",
|
|
5
|
+
"node_modules",
|
|
6
|
+
"bower_components",
|
|
7
|
+
"output"
|
|
8
|
+
],
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"purescript-prelude": "^2.5.0",
|
|
11
|
+
"purescript-maps": "^2.1.2",
|
|
12
|
+
"purescript-unicode": "^2.0.2"
|
|
13
|
+
},
|
|
14
|
+
"devDependencies": {
|
|
15
|
+
"purescript-psci-support": "^2.0.0",
|
|
16
|
+
"purescript-test-unit": "^10.1.0"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
module AtbashCipher
|
|
2
|
+
( decode
|
|
3
|
+
, encode
|
|
4
|
+
) where
|
|
5
|
+
|
|
6
|
+
import Prelude
|
|
7
|
+
import Data.Array (drop, filter, take, zip, (:))
|
|
8
|
+
import Data.Char.Unicode (isPunctuation, isSpace)
|
|
9
|
+
import Data.Map (Map, fromFoldable, lookup)
|
|
10
|
+
import Data.Maybe (Maybe)
|
|
11
|
+
import Data.String (fromCharArray, joinWith, toCharArray, toLower)
|
|
12
|
+
import Data.Traversable (traverse)
|
|
13
|
+
|
|
14
|
+
plain :: Array Char
|
|
15
|
+
plain = toCharArray "abcdefghijklmnopqrstuvwxyz0123456789"
|
|
16
|
+
|
|
17
|
+
cipher :: Array Char
|
|
18
|
+
cipher = toCharArray "zyxwvutsrqponmlkjihgfedcba0123456789"
|
|
19
|
+
|
|
20
|
+
decMap :: Map Char Char
|
|
21
|
+
decMap = fromFoldable (zip cipher plain)
|
|
22
|
+
|
|
23
|
+
encMap :: Map Char Char
|
|
24
|
+
encMap = fromFoldable (zip plain cipher)
|
|
25
|
+
|
|
26
|
+
decode :: String -> Maybe String
|
|
27
|
+
decode s = fromCharArray <$> dec (toCharArray s)
|
|
28
|
+
where dec = filter ((/=) ' ')
|
|
29
|
+
>>> traverse (_ `lookup` decMap)
|
|
30
|
+
|
|
31
|
+
chunks :: forall a. Int -> Array a -> Array (Array a)
|
|
32
|
+
chunks n [] = []
|
|
33
|
+
chunks n a = take n a : chunks n (drop n a)
|
|
34
|
+
|
|
35
|
+
encode :: String -> Maybe String
|
|
36
|
+
encode s = group <$> enc (toLower s # toCharArray)
|
|
37
|
+
where enc = filter (not (isPunctuation || isSpace))
|
|
38
|
+
>>> traverse (_ `lookup` encMap)
|
|
39
|
+
group = chunks 5
|
|
40
|
+
>>> map fromCharArray
|
|
41
|
+
>>> joinWith " "
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
module Test.Main where
|
|
2
|
+
|
|
3
|
+
import Prelude
|
|
4
|
+
import Control.Monad.Eff (Eff)
|
|
5
|
+
import Data.Maybe (Maybe(..))
|
|
6
|
+
import Test.Unit.Assert as Assert
|
|
7
|
+
import Test.Unit (suite, test)
|
|
8
|
+
import Test.Unit.Main (runTest)
|
|
9
|
+
import AtbashCipher (decode, encode)
|
|
10
|
+
|
|
11
|
+
main :: Eff _ Unit
|
|
12
|
+
main = runTest do
|
|
13
|
+
|
|
14
|
+
suite "AtbashCipher.encode" do
|
|
15
|
+
|
|
16
|
+
test "encode yes" $
|
|
17
|
+
Assert.equal (Just "bvh")
|
|
18
|
+
(encode "yes")
|
|
19
|
+
|
|
20
|
+
test "encode no" $
|
|
21
|
+
Assert.equal (Just "ml")
|
|
22
|
+
(encode "no")
|
|
23
|
+
|
|
24
|
+
test "encode OMG" $
|
|
25
|
+
Assert.equal (Just "lnt")
|
|
26
|
+
(encode "OMG")
|
|
27
|
+
|
|
28
|
+
test "encode spaces" $
|
|
29
|
+
Assert.equal (Just "lnt")
|
|
30
|
+
(encode "O M G")
|
|
31
|
+
|
|
32
|
+
test "encode mindblowingly" $
|
|
33
|
+
Assert.equal (Just "nrmwy oldrm tob")
|
|
34
|
+
(encode "mindblowingly")
|
|
35
|
+
|
|
36
|
+
test "encode numbers" $
|
|
37
|
+
Assert.equal (Just "gvhgr mt123 gvhgr mt")
|
|
38
|
+
(encode "Testing,1 2 3, testing.")
|
|
39
|
+
|
|
40
|
+
test "encode deep thought" $
|
|
41
|
+
Assert.equal (Just "gifgs rhurx grlm")
|
|
42
|
+
(encode "Truth is fiction.")
|
|
43
|
+
|
|
44
|
+
test "encode all the letters" $
|
|
45
|
+
Assert.equal (Just "gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt")
|
|
46
|
+
(encode "The quick brown fox jumps over the lazy dog.")
|
|
47
|
+
|
|
48
|
+
suite "AtbashCipher.decode" do
|
|
49
|
+
|
|
50
|
+
test "decode exercism" $
|
|
51
|
+
Assert.equal (Just "exercism")
|
|
52
|
+
(decode "vcvix rhn")
|
|
53
|
+
|
|
54
|
+
test "decode a sentence" $
|
|
55
|
+
Assert.equal (Just "anobstacleisoftenasteppingstone")
|
|
56
|
+
(decode "zmlyh gzxov rhlug vmzhg vkkrm thglm v")
|
|
57
|
+
|
|
58
|
+
test "decode numbers" $
|
|
59
|
+
Assert.equal (Just "testing123testing")
|
|
60
|
+
(decode "gvhgr mt123 gvhgr mt")
|
|
61
|
+
|
|
62
|
+
test "decode all the letters" $
|
|
63
|
+
Assert.equal (Just "thequickbrownfoxjumpsoverthelazydog")
|
|
64
|
+
(decode "gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt")
|
|
@@ -3,6 +3,8 @@ import unittest
|
|
|
3
3
|
from run_length_encoding import encode, decode
|
|
4
4
|
|
|
5
5
|
|
|
6
|
+
# test cases adapted from `x-common//canonical-data.json` @ version: 1.0.0
|
|
7
|
+
|
|
6
8
|
class WordCountTests(unittest.TestCase):
|
|
7
9
|
def test_encode_empty_string(self):
|
|
8
10
|
self.assertMultiLineEqual(encode(''), '')
|
|
@@ -15,7 +15,7 @@ class GradeSchoolTests: XCTestCase {
|
|
|
15
15
|
return result.count.toIntMax() == IntMax(expected.count)
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
func XCTAssertEqualCollection (_ collectionS:
|
|
18
|
+
func XCTAssertEqualCollection<C:Collection> (_ collectionS: C?, _ collectionA: [String]? ) where C.Iterator.Element == String {
|
|
19
19
|
XCTAssert(sameCollection(collectionS, collectionA))
|
|
20
20
|
}
|
|
21
21
|
|
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.0.8.
|
|
4
|
+
version: 2.0.8.29
|
|
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-03-
|
|
11
|
+
date: 2017-03-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rubyzip
|
|
@@ -2195,6 +2195,10 @@ files:
|
|
|
2195
2195
|
- tracks/ecmascript/exercises/pascals-triangle/gulpfile.js
|
|
2196
2196
|
- tracks/ecmascript/exercises/pascals-triangle/package.json
|
|
2197
2197
|
- tracks/ecmascript/exercises/pascals-triangle/pascals-triangle.spec.js
|
|
2198
|
+
- tracks/ecmascript/exercises/perfect-numbers/example.js
|
|
2199
|
+
- tracks/ecmascript/exercises/perfect-numbers/gulpfile.js
|
|
2200
|
+
- tracks/ecmascript/exercises/perfect-numbers/package.json
|
|
2201
|
+
- tracks/ecmascript/exercises/perfect-numbers/perfect-numbers.spec.js
|
|
2198
2202
|
- tracks/ecmascript/exercises/phone-number/example.js
|
|
2199
2203
|
- tracks/ecmascript/exercises/phone-number/gulpfile.js
|
|
2200
2204
|
- tracks/ecmascript/exercises/phone-number/package.json
|
|
@@ -6141,10 +6145,13 @@ files:
|
|
|
6141
6145
|
- tracks/perl6/exercises/all-your-base/AllYourBase.pm6
|
|
6142
6146
|
- tracks/perl6/exercises/all-your-base/Example.pm
|
|
6143
6147
|
- tracks/perl6/exercises/all-your-base/all-your-base.t
|
|
6148
|
+
- tracks/perl6/exercises/allergies/Allergies.pm6
|
|
6144
6149
|
- tracks/perl6/exercises/allergies/Example.pm
|
|
6145
6150
|
- tracks/perl6/exercises/allergies/allergies.t
|
|
6151
|
+
- tracks/perl6/exercises/anagram/Anagram.pm6
|
|
6146
6152
|
- tracks/perl6/exercises/anagram/Example.pm
|
|
6147
6153
|
- tracks/perl6/exercises/anagram/anagram.t
|
|
6154
|
+
- tracks/perl6/exercises/atbash-cipher/AtbashCipher.pm6
|
|
6148
6155
|
- tracks/perl6/exercises/atbash-cipher/Example.pm
|
|
6149
6156
|
- tracks/perl6/exercises/atbash-cipher/atbash-cipher.t
|
|
6150
6157
|
- tracks/perl6/exercises/binary/Example.pm
|
|
@@ -6156,33 +6163,42 @@ files:
|
|
|
6156
6163
|
- tracks/perl6/exercises/grade-school/GradeSchool.pm6
|
|
6157
6164
|
- tracks/perl6/exercises/grade-school/grade-school.t
|
|
6158
6165
|
- tracks/perl6/exercises/grains/Example.pm
|
|
6166
|
+
- tracks/perl6/exercises/grains/Grains.pm6
|
|
6159
6167
|
- tracks/perl6/exercises/grains/grains.t
|
|
6160
6168
|
- tracks/perl6/exercises/hello-world/Example.pm
|
|
6161
6169
|
- tracks/perl6/exercises/hello-world/HelloWorld.pm6
|
|
6162
6170
|
- tracks/perl6/exercises/hello-world/hello-world.t
|
|
6163
6171
|
- tracks/perl6/exercises/leap/Example.pm
|
|
6172
|
+
- tracks/perl6/exercises/leap/Leap.pm6
|
|
6164
6173
|
- tracks/perl6/exercises/leap/leap.t
|
|
6165
6174
|
- tracks/perl6/exercises/linked-list/Example.pm6
|
|
6166
6175
|
- tracks/perl6/exercises/linked-list/LinkedList.pm6
|
|
6167
6176
|
- tracks/perl6/exercises/linked-list/linked-list.t
|
|
6168
6177
|
- tracks/perl6/exercises/phone-number/Example.pm
|
|
6178
|
+
- tracks/perl6/exercises/phone-number/PhoneNumber.pm6
|
|
6169
6179
|
- tracks/perl6/exercises/phone-number/phone-number.t
|
|
6170
6180
|
- tracks/perl6/exercises/raindrops/Example.pm
|
|
6181
|
+
- tracks/perl6/exercises/raindrops/Raindrops.pm6
|
|
6171
6182
|
- tracks/perl6/exercises/raindrops/raindrops.t
|
|
6172
6183
|
- tracks/perl6/exercises/rna-transcription/Example.pm
|
|
6184
|
+
- tracks/perl6/exercises/rna-transcription/RNA.pm6
|
|
6173
6185
|
- tracks/perl6/exercises/rna-transcription/rna-transcription.t
|
|
6174
6186
|
- tracks/perl6/exercises/robot-name/Example.pm
|
|
6175
6187
|
- tracks/perl6/exercises/robot-name/Robot.pm6
|
|
6176
6188
|
- tracks/perl6/exercises/robot-name/robot-name.t
|
|
6177
6189
|
- tracks/perl6/exercises/scrabble-score/Example.pm
|
|
6190
|
+
- tracks/perl6/exercises/scrabble-score/Scrabble.pm6
|
|
6178
6191
|
- tracks/perl6/exercises/scrabble-score/scrabble-score.t
|
|
6179
6192
|
- tracks/perl6/exercises/space-age/Example.pm
|
|
6193
|
+
- tracks/perl6/exercises/space-age/SpaceAge.pm6
|
|
6180
6194
|
- tracks/perl6/exercises/space-age/space-age.t
|
|
6181
6195
|
- tracks/perl6/exercises/trinary/Example.pm
|
|
6182
6196
|
- tracks/perl6/exercises/trinary/trinary.t
|
|
6183
6197
|
- tracks/perl6/exercises/word-count/Example.pm
|
|
6198
|
+
- tracks/perl6/exercises/word-count/WordCount.pm6
|
|
6184
6199
|
- tracks/perl6/exercises/word-count/word-count.t
|
|
6185
6200
|
- tracks/perl6/exercises/wordy/Example.pm
|
|
6201
|
+
- tracks/perl6/exercises/wordy/Wordy.pm6
|
|
6186
6202
|
- tracks/perl6/exercises/wordy/wordy.t
|
|
6187
6203
|
- tracks/perl6/img/icon.png
|
|
6188
6204
|
- tracks/php/.editorconfig
|
|
@@ -6462,6 +6478,10 @@ files:
|
|
|
6462
6478
|
- tracks/purescript/exercises/acronym/examples/src/Acronym.purs
|
|
6463
6479
|
- tracks/purescript/exercises/acronym/src/Acronym.purs
|
|
6464
6480
|
- tracks/purescript/exercises/acronym/test/Main.purs
|
|
6481
|
+
- tracks/purescript/exercises/atbash-cipher/bower.json
|
|
6482
|
+
- tracks/purescript/exercises/atbash-cipher/examples/src/AtbashCipher.purs
|
|
6483
|
+
- tracks/purescript/exercises/atbash-cipher/src/AtbashCipher.purs
|
|
6484
|
+
- tracks/purescript/exercises/atbash-cipher/test/Main.purs
|
|
6465
6485
|
- tracks/purescript/exercises/bob/bower.json
|
|
6466
6486
|
- tracks/purescript/exercises/bob/examples/src/Bob.purs
|
|
6467
6487
|
- tracks/purescript/exercises/bob/src/Bob.purs
|