trackler 2.0.5.5 → 2.0.5.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/csharp/config.json +15 -0
  4. data/tracks/csharp/exercises/list-ops/Example.cs +77 -0
  5. data/tracks/csharp/exercises/list-ops/HINTS.md +2 -0
  6. data/tracks/csharp/exercises/list-ops/ListOpsTest.cs +195 -0
  7. data/tracks/csharp/exercises/two-bucket/Example.cs +109 -0
  8. data/tracks/csharp/exercises/two-bucket/TwoBucketTest.cs +71 -0
  9. data/tracks/ecmascript/config.json +13 -30
  10. data/tracks/ecmascript/exercises/all-your-base/all-your-base.spec.js +139 -0
  11. data/tracks/ecmascript/exercises/all-your-base/example.js +55 -0
  12. data/tracks/ecmascript/exercises/all-your-base/gulpfile.js +89 -0
  13. data/tracks/ecmascript/exercises/all-your-base/package.json +28 -0
  14. data/tracks/fsharp/exercises/diffie-hellman/HINTS.md +3 -0
  15. data/tracks/fsharp/exercises/gigasecond/HINTS.md +2 -0
  16. data/tracks/fsharp/exercises/palindrome-products/HINTS.md +2 -0
  17. data/tracks/java/config.json +6 -0
  18. data/tracks/java/docs/INSTALLATION.md +1 -0
  19. data/tracks/java/exercises/custom-set/build.gradle +18 -0
  20. data/tracks/java/exercises/custom-set/src/example/java/CustomSet.java +74 -0
  21. data/tracks/java/exercises/custom-set/src/main/java/.keep +0 -0
  22. data/tracks/java/exercises/custom-set/src/test/java/CustomSetTest.java +505 -0
  23. data/tracks/java/exercises/settings.gradle +1 -0
  24. data/tracks/purescript/config.json +25 -0
  25. data/tracks/purescript/exercises/accumulate/bower.json +16 -0
  26. data/tracks/purescript/exercises/accumulate/examples/src/Accumulate.purs +15 -0
  27. data/tracks/purescript/exercises/accumulate/src/Accumulate.purs +3 -0
  28. data/tracks/purescript/exercises/accumulate/test/Main.purs +41 -0
  29. data/tracks/purescript/exercises/acronym/bower.json +1 -1
  30. data/tracks/purescript/exercises/bob/bower.json +1 -1
  31. data/tracks/purescript/exercises/pangram/bower.json +1 -1
  32. data/tracks/purescript/exercises/raindrops/bower.json +1 -1
  33. data/tracks/purescript/exercises/scrabble-score/bower.json +16 -0
  34. data/tracks/purescript/exercises/scrabble-score/examples/src/ScrabbleScore.purs +47 -0
  35. data/tracks/purescript/exercises/scrabble-score/src/ScrabbleScore.purs +3 -0
  36. data/tracks/purescript/exercises/scrabble-score/test/Main.purs +45 -0
  37. data/tracks/purescript/exercises/triangle/bower.json +19 -0
  38. data/tracks/purescript/exercises/triangle/examples/src/Triangle.purs +40 -0
  39. data/tracks/purescript/exercises/triangle/src/Triangle.purs +4 -0
  40. data/tracks/purescript/exercises/triangle/test/Main.purs +66 -0
  41. data/tracks/ruby/.rubocop.yml +3 -0
  42. data/tracks/ruby/README.md +1 -1
  43. metadata +30 -2
@@ -10,6 +10,7 @@ include 'binary-search-tree'
10
10
  include 'bob'
11
11
  include 'bracket-push'
12
12
  include 'crypto-square'
13
+ include 'custom-set'
13
14
  include 'difference-of-squares'
14
15
  include 'etl'
15
16
  include 'gigasecond'
@@ -40,6 +40,23 @@
40
40
  "chars"
41
41
  ]
42
42
  },
43
+ {
44
+ "slug": "scrabble-score",
45
+ "difficulty": 1,
46
+ "topics": [
47
+ "strings",
48
+ "chars"
49
+ ]
50
+ },
51
+ {
52
+ "slug": "accumulate",
53
+ "difficulty": 1,
54
+ "topics": [
55
+ "recursion",
56
+ "type variables",
57
+ "pattern matching"
58
+ ]
59
+ },
43
60
  {
44
61
  "slug": "acronym",
45
62
  "difficulty": 2,
@@ -47,6 +64,14 @@
47
64
  "strings",
48
65
  "chars"
49
66
  ]
67
+ },
68
+ {
69
+ "slug": "triangle",
70
+ "difficulty": 2,
71
+ "topics": [
72
+ "algebraic data types",
73
+ "type classes"
74
+ ]
50
75
  }
51
76
  ],
52
77
  "deprecated": [
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "hello-world",
3
+ "ignore": [
4
+ "**/.*",
5
+ "node_modules",
6
+ "bower_components",
7
+ "output"
8
+ ],
9
+ "dependencies": {
10
+ "purescript-prelude": "^2.1.0"
11
+ },
12
+ "devDependencies": {
13
+ "purescript-psci-support": "^2.0.0",
14
+ "purescript-test-unit": "^10.0.1"
15
+ }
16
+ }
@@ -0,0 +1,15 @@
1
+ module Accumulate
2
+ ( accumulate
3
+ ) where
4
+
5
+
6
+ import Data.List (List(Nil), (:), reverse)
7
+
8
+
9
+ accumulate :: forall a b . (a -> b) -> List a -> List b
10
+ accumulate =
11
+ let
12
+ accumulate' acc f Nil = reverse acc
13
+ accumulate' acc f (v:vs) = accumulate' (f v:acc) f vs
14
+ in
15
+ accumulate' Nil
@@ -0,0 +1,3 @@
1
+ module Accumulate
2
+ ( accumulate
3
+ ) where
@@ -0,0 +1,41 @@
1
+ module Test.Main where
2
+
3
+ import Prelude
4
+ import Control.Monad.Eff (Eff)
5
+ import Test.Unit (suite, test)
6
+ import Test.Unit.Main (runTest)
7
+ import Test.Unit.Assert as Assert
8
+ import Data.List (List, fromFoldable)
9
+ import Data.String as String
10
+ import Accumulate (accumulate)
11
+
12
+
13
+ main :: Eff _ Unit
14
+ main = runTest do
15
+ suite "Accumulate.accumulate" do
16
+ test "empty accumulation" $
17
+ let
18
+ emptyList = (fromFoldable [] :: List Int)
19
+ in
20
+ Assert.equal emptyList $
21
+ accumulate square emptyList
22
+
23
+ test "accumulate single square" $
24
+ Assert.equal (fromFoldable [4]) $
25
+ accumulate square (fromFoldable [2])
26
+
27
+ test "accumulate squares" $
28
+ Assert.equal (fromFoldable [1, 4, 9]) $
29
+ accumulate square (fromFoldable [1, 2, 3])
30
+
31
+ test "accumulate upcases" $
32
+ Assert.equal (fromFoldable ["HELLO", "WORLD"]) $
33
+ accumulate String.toUpper (fromFoldable ["hello", "world"])
34
+
35
+ test "accumulate length of strings" $
36
+ Assert.equal (fromFoldable [3, 5, 5, 3, 3]) $
37
+ accumulate String.length (fromFoldable ["the", "quick", "brown", "fox", "etc"])
38
+
39
+
40
+ square :: forall a. (Semiring a) => a -> a
41
+ square x = x * x
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "leap",
2
+ "name": "acronym",
3
3
  "ignore": [
4
4
  "**/.*",
5
5
  "node_modules",
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "hello-world",
2
+ "name": "bob",
3
3
  "ignore": [
4
4
  "**/.*",
5
5
  "node_modules",
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "hello-world",
2
+ "name": "prangram",
3
3
  "ignore": [
4
4
  "**/.*",
5
5
  "node_modules",
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "hello-world",
2
+ "name": "raindrops",
3
3
  "ignore": [
4
4
  "**/.*",
5
5
  "node_modules",
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "scrabble-score",
3
+ "ignore": [
4
+ "**/.*",
5
+ "node_modules",
6
+ "bower_components",
7
+ "output"
8
+ ],
9
+ "dependencies": {
10
+ "purescript-prelude": "^2.1.0"
11
+ },
12
+ "devDependencies": {
13
+ "purescript-psci-support": "^2.0.0",
14
+ "purescript-test-unit": "^10.0.1"
15
+ }
16
+ }
@@ -0,0 +1,47 @@
1
+ module ScrabbleScore
2
+ ( scoreWord
3
+ ) where
4
+
5
+ import Prelude
6
+ import Data.Char (toLower)
7
+ import Data.String (toCharArray)
8
+ import Data.Foldable (foldl)
9
+
10
+
11
+ scoreWord :: String -> Int
12
+ scoreWord =
13
+ let
14
+ addLetterScore acc =
15
+ add acc <<< scoreChar <<< toLower
16
+ in
17
+ foldl addLetterScore 0 <<< toCharArray
18
+
19
+
20
+ scoreChar :: Char -> Int
21
+ scoreChar 'a' = 1
22
+ scoreChar 'e' = 1
23
+ scoreChar 'i' = 1
24
+ scoreChar 'o' = 1
25
+ scoreChar 'u' = 1
26
+ scoreChar 'l' = 1
27
+ scoreChar 'n' = 1
28
+ scoreChar 'r' = 1
29
+ scoreChar 's' = 1
30
+ scoreChar 't' = 1
31
+ scoreChar 'd' = 2
32
+ scoreChar 'g' = 2
33
+ scoreChar 'b' = 3
34
+ scoreChar 'c' = 3
35
+ scoreChar 'm' = 3
36
+ scoreChar 'p' = 3
37
+ scoreChar 'f' = 4
38
+ scoreChar 'h' = 4
39
+ scoreChar 'v' = 4
40
+ scoreChar 'w' = 4
41
+ scoreChar 'y' = 4
42
+ scoreChar 'k' = 5
43
+ scoreChar 'j' = 8
44
+ scoreChar 'x' = 8
45
+ scoreChar 'q' = 10
46
+ scoreChar 'z' = 10
47
+ scoreChar _ = 0
@@ -0,0 +1,3 @@
1
+ module ScrabbleScore
2
+ ( scoreWord
3
+ ) where
@@ -0,0 +1,45 @@
1
+ module Test.Main where
2
+
3
+ import Prelude
4
+ import Test.Unit.Assert as Assert
5
+ import Control.Monad.Eff (Eff)
6
+ import ScrabbleScore (scoreWord)
7
+ import Test.Unit (suite, test)
8
+ import Test.Unit.Main (runTest)
9
+
10
+
11
+ main :: Eff _ Unit
12
+ main = runTest do
13
+ suite "ScrabbleScore.scoreWord" do
14
+ test "lowercase letter" do
15
+ Assert.equal 1 (scoreWord "a")
16
+
17
+ test "uppercase letter" do
18
+ Assert.equal 1 (scoreWord "A")
19
+
20
+ test "valuable letter" do
21
+ Assert.equal 4 (scoreWord "f")
22
+
23
+ test "short word" do
24
+ Assert.equal 2 (scoreWord "at")
25
+
26
+ test "short, valuable word" do
27
+ Assert.equal 12 (scoreWord "zoo")
28
+
29
+ test "medium word" do
30
+ Assert.equal 6 (scoreWord "street")
31
+
32
+ test "medium, valuable word" do
33
+ Assert.equal 22 (scoreWord "quirky")
34
+
35
+ test "long, mixed-case word" do
36
+ Assert.equal 41 (scoreWord "OxyphenButazone")
37
+
38
+ test "english-like word" do
39
+ Assert.equal 8 (scoreWord "pinata")
40
+
41
+ test "non-english letter is not scored" do
42
+ Assert.equal 7 (scoreWord "piñata")
43
+
44
+ test "empty input" do
45
+ Assert.equal 0 (scoreWord "")
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "triangle",
3
+ "ignore": [
4
+ "**/.*",
5
+ "node_modules",
6
+ "bower_components",
7
+ "output"
8
+ ],
9
+ "dependencies": {
10
+ "purescript-prelude": "^2.1.0",
11
+ "purescript-console": "^2.0.0",
12
+ "purescript-either": "^2.0.0",
13
+ "purescript-sets": "^2.0.0"
14
+ },
15
+ "devDependencies": {
16
+ "purescript-psci-support": "^2.0.0",
17
+ "purescript-test-unit": "^10.0.1"
18
+ }
19
+ }
@@ -0,0 +1,40 @@
1
+ module Triangle
2
+ ( Triangle(Equilateral, Isosceles, Scalene)
3
+ , triangleKind
4
+ ) where
5
+
6
+ import Prelude
7
+ import Data.Set as Set
8
+ import Data.Either (Either(Left, Right))
9
+ import Data.Generic (class Generic, gShow)
10
+
11
+
12
+ data Triangle
13
+ = Equilateral
14
+ | Isosceles
15
+ | Scalene
16
+
17
+ derive instance eqTriangle :: Eq Triangle
18
+
19
+ derive instance genericTriangle :: Generic Triangle
20
+
21
+ instance showTriangle :: Show Triangle where
22
+ show = gShow
23
+
24
+
25
+ type ErrorMsg = String
26
+
27
+
28
+ triangleKind :: Int -> Int -> Int -> Either ErrorMsg Triangle
29
+ triangleKind x y z
30
+ | x <= 0 || y <= 0 || z <= 0
31
+ = Left "Invalid lengths"
32
+
33
+ | x + y <= z || x + z <= y || y + z <= x
34
+ = Left "Violates inequality"
35
+
36
+ | otherwise
37
+ = case Set.size $ Set.fromFoldable [x, y, z] of
38
+ 1 -> Right Equilateral
39
+ 2 -> Right Isosceles
40
+ _ -> Right Scalene
@@ -0,0 +1,4 @@
1
+ module Triangle
2
+ ( Triangle(Equilateral, Isosceles, Scalene)
3
+ , triangleKind
4
+ ) where
@@ -0,0 +1,66 @@
1
+ module Test.Main where
2
+
3
+ import Prelude
4
+ import Test.Unit.Assert as Assert
5
+ import Control.Monad.Eff (Eff)
6
+ import Data.Either (Either(Left, Right))
7
+ import Test.Unit (suite, test)
8
+ import Test.Unit.Main (runTest)
9
+ import Triangle (triangleKind, Triangle(Equilateral, Isosceles, Scalene))
10
+
11
+
12
+ main :: Eff _ Unit
13
+ main = runTest do
14
+ suite "Triangle.triangleKind" do
15
+ test "equilateral triangles have equal sides" do
16
+ Assert.equal
17
+ (Right Equilateral) $
18
+ triangleKind 2 2 2
19
+ test "larger equilateral triangles also have equal sides" do
20
+ Assert.equal
21
+ (Right Equilateral)
22
+ $ triangleKind 10 10 10
23
+ test "isosceles triangles have last two sides equal" do
24
+ Assert.equal
25
+ (Right Isosceles)
26
+ $ triangleKind 3 4 4
27
+ test "isosceles triangles have first and last sides equal" do
28
+ Assert.equal
29
+ (Right Isosceles)
30
+ $ triangleKind 4 3 4
31
+ test "isosceles triangles have two first sides equal" do
32
+ Assert.equal
33
+ (Right Isosceles)
34
+ $ triangleKind 4 4 3
35
+ test "isosceles triangles have in fact exactly two sides equal" do
36
+ Assert.equal
37
+ (Right Isosceles)
38
+ $ triangleKind 10 10 2
39
+ test "scalene triangles have no equal sides" do
40
+ Assert.equal
41
+ (Right Scalene)
42
+ $ triangleKind 3 4 5
43
+ test "scalene triangles have no equal sides at a larger scale too" do
44
+ Assert.equal
45
+ (Right Scalene)
46
+ $ triangleKind 10 11 12
47
+ test "scalene triangles have no equal sides at a larger scale too 2" do
48
+ Assert.equal
49
+ (Right Scalene)
50
+ $ triangleKind 5 4 2
51
+ test "triangles with no size are illegal" do
52
+ Assert.equal
53
+ (Left "Invalid lengths")
54
+ $ triangleKind 0 0 0
55
+ test "triangles with negative sides are illegal" do
56
+ Assert.equal
57
+ (Left "Invalid lengths")
58
+ $ triangleKind 3 4 (-5)
59
+ test "triangles violating triangle inequality are illegal 1" do
60
+ Assert.equal
61
+ (Left "Violates inequality")
62
+ $ triangleKind 1 1 3
63
+ test "triangles violating triangle inequality are illegal 2" do
64
+ Assert.equal
65
+ (Left "Violates inequality")
66
+ $ triangleKind 7 3 2
@@ -1,3 +1,6 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.1
3
+
1
4
  # Type 'Lint' (48):
2
5
  Lint/AmbiguousOperator:
3
6
  Description: Checks for ambiguous operators in the first argument of a method invocation
@@ -6,7 +6,7 @@ Exercism Exercises in Ruby
6
6
 
7
7
  ## Setup
8
8
 
9
- You'll need a recent (1.9.3+) version of Ruby, but that's it. Minitest
9
+ You'll need a recent (2.1+) version of Ruby, but that's it. Minitest
10
10
  ships
11
11
  with the language, so you're all set.
12
12
 
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.5.5
4
+ version: 2.0.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katrina Owen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-20 00:00:00.000000000 Z
11
+ date: 2016-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -1349,6 +1349,9 @@ files:
1349
1349
  - tracks/csharp/exercises/leap/LeapTest.cs
1350
1350
  - tracks/csharp/exercises/linked-list/Example.cs
1351
1351
  - tracks/csharp/exercises/linked-list/LinkedListTest.cs
1352
+ - tracks/csharp/exercises/list-ops/Example.cs
1353
+ - tracks/csharp/exercises/list-ops/HINTS.md
1354
+ - tracks/csharp/exercises/list-ops/ListOpsTest.cs
1352
1355
  - tracks/csharp/exercises/luhn/Example.cs
1353
1356
  - tracks/csharp/exercises/luhn/LuhnTest.cs
1354
1357
  - tracks/csharp/exercises/matrix/Example.cs
@@ -1443,6 +1446,8 @@ files:
1443
1446
  - tracks/csharp/exercises/triangle/TriangleTest.cs
1444
1447
  - tracks/csharp/exercises/twelve-days/Example.cs
1445
1448
  - tracks/csharp/exercises/twelve-days/TwelveDaysTest.cs
1449
+ - tracks/csharp/exercises/two-bucket/Example.cs
1450
+ - tracks/csharp/exercises/two-bucket/TwoBucketTest.cs
1446
1451
  - tracks/csharp/exercises/variable-length-quantity/Example.cs
1447
1452
  - tracks/csharp/exercises/variable-length-quantity/VariableLengthQuantityTest.cs
1448
1453
  - tracks/csharp/exercises/word-count/Example.cs
@@ -1525,6 +1530,10 @@ files:
1525
1530
  - tracks/ecmascript/exercises/acronym/example.js
1526
1531
  - tracks/ecmascript/exercises/acronym/gulpfile.js
1527
1532
  - tracks/ecmascript/exercises/acronym/package.json
1533
+ - tracks/ecmascript/exercises/all-your-base/all-your-base.spec.js
1534
+ - tracks/ecmascript/exercises/all-your-base/example.js
1535
+ - tracks/ecmascript/exercises/all-your-base/gulpfile.js
1536
+ - tracks/ecmascript/exercises/all-your-base/package.json
1528
1537
  - tracks/ecmascript/exercises/allergies/allergies.spec.js
1529
1538
  - tracks/ecmascript/exercises/allergies/example.js
1530
1539
  - tracks/ecmascript/exercises/allergies/gulpfile.js
@@ -2425,6 +2434,7 @@ files:
2425
2434
  - tracks/fsharp/exercises/difference-of-squares/HINTS.md
2426
2435
  - tracks/fsharp/exercises/diffie-hellman/DiffieHellmanTest.fs
2427
2436
  - tracks/fsharp/exercises/diffie-hellman/Example.fs
2437
+ - tracks/fsharp/exercises/diffie-hellman/HINTS.md
2428
2438
  - tracks/fsharp/exercises/dominoes/DominoesTest.fs
2429
2439
  - tracks/fsharp/exercises/dominoes/Example.fs
2430
2440
  - tracks/fsharp/exercises/dot-dsl/DotDslTest.fs
@@ -2440,6 +2450,7 @@ files:
2440
2450
  - tracks/fsharp/exercises/forth/ForthTest.fs
2441
2451
  - tracks/fsharp/exercises/gigasecond/Example.fs
2442
2452
  - tracks/fsharp/exercises/gigasecond/GigasecondTest.fs
2453
+ - tracks/fsharp/exercises/gigasecond/HINTS.md
2443
2454
  - tracks/fsharp/exercises/go-counting/Example.fs
2444
2455
  - tracks/fsharp/exercises/go-counting/GoCountingTest.fs
2445
2456
  - tracks/fsharp/exercises/grade-school/Example.fs
@@ -2494,6 +2505,7 @@ files:
2494
2505
  - tracks/fsharp/exercises/ocr-numbers/OcrNumbersTest.fs
2495
2506
  - tracks/fsharp/exercises/paket.references
2496
2507
  - tracks/fsharp/exercises/palindrome-products/Example.fs
2508
+ - tracks/fsharp/exercises/palindrome-products/HINTS.md
2497
2509
  - tracks/fsharp/exercises/palindrome-products/PalindromeTest.fs
2498
2510
  - tracks/fsharp/exercises/pangram/Example.fs
2499
2511
  - tracks/fsharp/exercises/pangram/PangramTest.fs
@@ -3521,6 +3533,10 @@ files:
3521
3533
  - tracks/java/exercises/crypto-square/src/example/java/Crypto.java
3522
3534
  - tracks/java/exercises/crypto-square/src/main/java/.keep
3523
3535
  - tracks/java/exercises/crypto-square/src/test/java/CryptoSquareTest.java
3536
+ - tracks/java/exercises/custom-set/build.gradle
3537
+ - tracks/java/exercises/custom-set/src/example/java/CustomSet.java
3538
+ - tracks/java/exercises/custom-set/src/main/java/.keep
3539
+ - tracks/java/exercises/custom-set/src/test/java/CustomSetTest.java
3524
3540
  - tracks/java/exercises/difference-of-squares/build.gradle
3525
3541
  - tracks/java/exercises/difference-of-squares/src/example/java/Difference.java
3526
3542
  - tracks/java/exercises/difference-of-squares/src/main/java/Difference.java
@@ -5456,6 +5472,10 @@ files:
5456
5472
  - tracks/purescript/docs/LEARNING.md
5457
5473
  - tracks/purescript/docs/RESOURCES.md
5458
5474
  - tracks/purescript/docs/TESTS.md
5475
+ - tracks/purescript/exercises/accumulate/bower.json
5476
+ - tracks/purescript/exercises/accumulate/examples/src/Accumulate.purs
5477
+ - tracks/purescript/exercises/accumulate/src/Accumulate.purs
5478
+ - tracks/purescript/exercises/accumulate/test/Main.purs
5459
5479
  - tracks/purescript/exercises/acronym/bower.json
5460
5480
  - tracks/purescript/exercises/acronym/examples/src/Acronym.purs
5461
5481
  - tracks/purescript/exercises/acronym/src/Acronym.purs
@@ -5480,6 +5500,14 @@ files:
5480
5500
  - tracks/purescript/exercises/raindrops/examples/src/Raindrops.purs
5481
5501
  - tracks/purescript/exercises/raindrops/src/Raindrops.purs
5482
5502
  - tracks/purescript/exercises/raindrops/test/Main.purs
5503
+ - tracks/purescript/exercises/scrabble-score/bower.json
5504
+ - tracks/purescript/exercises/scrabble-score/examples/src/ScrabbleScore.purs
5505
+ - tracks/purescript/exercises/scrabble-score/src/ScrabbleScore.purs
5506
+ - tracks/purescript/exercises/scrabble-score/test/Main.purs
5507
+ - tracks/purescript/exercises/triangle/bower.json
5508
+ - tracks/purescript/exercises/triangle/examples/src/Triangle.purs
5509
+ - tracks/purescript/exercises/triangle/src/Triangle.purs
5510
+ - tracks/purescript/exercises/triangle/test/Main.purs
5483
5511
  - tracks/purescript/img/icon.png
5484
5512
  - tracks/python/.git
5485
5513
  - tracks/python/.gitignore