trackler 2.1.0.10 → 2.1.0.11

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 (111) hide show
  1. checksums.yaml +4 -4
  2. data/bin/bump-content +3 -3
  3. data/common/README.md +0 -1
  4. data/common/exercises/kindergarten-garden/canonical-data.json +124 -0
  5. data/lib/trackler/version.rb +1 -1
  6. data/tracks/coq/README.md +8 -6
  7. data/tracks/haskell/exercises/all-your-base/package.yaml +1 -1
  8. data/tracks/haskell/exercises/allergies/package.yaml +1 -1
  9. data/tracks/haskell/exercises/alphametics/package.yaml +1 -1
  10. data/tracks/haskell/exercises/anagram/package.yaml +1 -1
  11. data/tracks/haskell/exercises/anagram/test/Tests.hs +2 -2
  12. data/tracks/haskell/exercises/atbash-cipher/package.yaml +1 -1
  13. data/tracks/haskell/exercises/bob/package.yaml +1 -1
  14. data/tracks/haskell/exercises/change/package.yaml +1 -1
  15. data/tracks/haskell/exercises/change/test/Tests.hs +10 -0
  16. data/tracks/haskell/exercises/clock/package.yaml +1 -1
  17. data/tracks/haskell/exercises/connect/package.yaml +1 -1
  18. data/tracks/haskell/exercises/custom-set/package.yaml +1 -1
  19. data/tracks/haskell/exercises/difference-of-squares/package.yaml +1 -1
  20. data/tracks/haskell/exercises/dominoes/package.yaml +1 -1
  21. data/tracks/haskell/exercises/etl/package.yaml +1 -1
  22. data/tracks/haskell/exercises/forth/package.yaml +1 -1
  23. data/tracks/haskell/exercises/grains/package.yaml +1 -1
  24. data/tracks/haskell/exercises/hamming/package.yaml +1 -1
  25. data/tracks/haskell/exercises/hello-world/package.yaml +1 -1
  26. data/tracks/haskell/exercises/kindergarten-garden/package.yaml +1 -1
  27. data/tracks/haskell/exercises/kindergarten-garden/test/Tests.hs +4 -12
  28. data/tracks/haskell/exercises/largest-series-product/package.yaml +1 -1
  29. data/tracks/haskell/exercises/largest-series-product/test/Tests.hs +4 -31
  30. data/tracks/haskell/exercises/meetup/package.yaml +1 -1
  31. data/tracks/haskell/exercises/minesweeper/package.yaml +1 -1
  32. data/tracks/haskell/exercises/nth-prime/package.yaml +1 -1
  33. data/tracks/haskell/exercises/nucleotide-count/package.yaml +1 -1
  34. data/tracks/haskell/exercises/ocr-numbers/package.yaml +1 -1
  35. data/tracks/haskell/exercises/pascals-triangle/package.yaml +1 -1
  36. data/tracks/haskell/exercises/phone-number/package.yaml +1 -1
  37. data/tracks/haskell/exercises/pig-latin/package.yaml +1 -1
  38. data/tracks/haskell/exercises/pov/package.yaml +1 -1
  39. data/tracks/haskell/exercises/prime-factors/package.yaml +1 -1
  40. data/tracks/haskell/exercises/queen-attack/package.yaml +1 -1
  41. data/tracks/haskell/exercises/raindrops/package.yaml +1 -1
  42. data/tracks/haskell/exercises/rna-transcription/package.yaml +1 -1
  43. data/tracks/haskell/exercises/robot-simulator/package.yaml +1 -1
  44. data/tracks/haskell/exercises/run-length-encoding/package.yaml +1 -1
  45. data/tracks/haskell/exercises/run-length-encoding/test/Tests.hs +16 -0
  46. data/tracks/haskell/exercises/saddle-points/package.yaml +1 -1
  47. data/tracks/haskell/exercises/saddle-points/test/Tests.hs +8 -8
  48. data/tracks/haskell/exercises/say/package.yaml +1 -1
  49. data/tracks/haskell/exercises/scrabble-score/package.yaml +1 -1
  50. data/tracks/haskell/exercises/secret-handshake/package.yaml +1 -1
  51. data/tracks/haskell/exercises/sieve/package.yaml +1 -1
  52. data/tracks/haskell/exercises/space-age/package.yaml +1 -1
  53. data/tracks/haskell/exercises/sublist/package.yaml +1 -1
  54. data/tracks/haskell/exercises/sum-of-multiples/package.yaml +1 -1
  55. data/tracks/haskell/exercises/word-count/package.yaml +1 -1
  56. data/tracks/haskell/exercises/wordy/package.yaml +1 -1
  57. data/tracks/java/exercises/binary-search-tree/src/test/java/BSTTest.java +1 -1
  58. data/tracks/java/exercises/bracket-push/src/test/java/BracketCheckerTest.java +12 -12
  59. data/tracks/java/exercises/simple-linked-list/src/test/java/SimpleLinkedListTest.java +6 -6
  60. data/tracks/javascript/SETUP.md +6 -1
  61. data/tracks/javascript/exercises/hello-world/HINTS.md +2 -2
  62. data/tracks/ruby/exercises/phone-number/phone_number_test.rb +1 -1
  63. data/tracks/ruby/exercises/tournament/.meta/.version +1 -1
  64. data/tracks/ruby/exercises/tournament/example.rb +1 -1
  65. data/tracks/ruby/exercises/tournament/tournament_test.rb +118 -21
  66. data/tracks/ruby/lib/tasks/exercise.rb +1 -1
  67. data/tracks/ruby/test/tasks/exercise_test.rb +4 -2
  68. data/tracks/rust/exercises/acronym/Cargo.toml +1 -1
  69. data/tracks/rust/exercises/all-your-base/Cargo.toml +1 -1
  70. data/tracks/rust/exercises/allergies/Cargo.toml +1 -1
  71. data/tracks/rust/exercises/alphametics/Cargo.toml +1 -1
  72. data/tracks/rust/exercises/atbash-cipher/Cargo.toml +1 -1
  73. data/tracks/rust/exercises/bowling/Cargo.toml +1 -1
  74. data/tracks/rust/exercises/bracket-push/Cargo.toml +1 -1
  75. data/tracks/rust/exercises/custom-set/Cargo.toml +1 -1
  76. data/tracks/rust/exercises/dominoes/Cargo.toml +1 -1
  77. data/tracks/rust/exercises/gigasecond/Cargo.toml +1 -1
  78. data/tracks/rust/exercises/grains/Cargo.toml +1 -1
  79. data/tracks/rust/exercises/hello-world/Cargo.toml +1 -1
  80. data/tracks/rust/exercises/largest-series-product/Cargo.toml +1 -1
  81. data/tracks/rust/exercises/leap/Cargo.toml +1 -1
  82. data/tracks/rust/exercises/pascals-triangle/Cargo.toml +1 -1
  83. data/tracks/rust/exercises/queen-attack/Cargo.toml +1 -1
  84. data/tracks/rust/exercises/react/Cargo.toml +1 -1
  85. data/tracks/rust/exercises/robot-simulator/Cargo.toml +1 -1
  86. data/tracks/rust/exercises/roman-numerals/Cargo.toml +1 -1
  87. data/tracks/rust/exercises/rotational-cipher/Cargo.toml +1 -1
  88. data/tracks/rust/exercises/run-length-encoding/Cargo.lock +1 -1
  89. data/tracks/rust/exercises/run-length-encoding/Cargo.toml +1 -1
  90. data/tracks/rust/exercises/scrabble-score/Cargo.toml +1 -1
  91. data/tracks/rust/exercises/sieve/Cargo.toml +1 -1
  92. data/tracks/rust/exercises/space-age/Cargo.toml +1 -1
  93. data/tracks/rust/exercises/sum-of-multiples/Cargo.toml +1 -1
  94. data/tracks/rust/exercises/variable-length-quantity/Cargo.toml +1 -1
  95. data/tracks/rust/exercises/wordy/Cargo.toml +1 -1
  96. data/tracks/typescript/config.json +6 -1
  97. data/tracks/typescript/exercises/scrabble-score/package.json +36 -0
  98. data/tracks/typescript/exercises/scrabble-score/scrabble-score.example.ts +26 -0
  99. data/tracks/typescript/exercises/scrabble-score/scrabble-score.test.ts +16 -0
  100. data/tracks/typescript/exercises/scrabble-score/tsconfig.json +21 -0
  101. data/tracks/typescript/exercises/scrabble-score/tslint.json +127 -0
  102. data/tracks/typescript/exercises/scrabble-score/yarn.lock +2739 -0
  103. metadata +9 -10
  104. data/tracks/coq/exercises/hello-world/example.v +0 -3
  105. data/tracks/coq/exercises/hello-world/hello-world.v +0 -3
  106. data/tracks/coq/exercises/rna-transcription/DNA.v +0 -4
  107. data/tracks/coq/exercises/rna-transcription/example.v +0 -15
  108. data/tracks/coq/exercises/rna-transcription/rna-transcription.v +0 -5
  109. data/tracks/coq/exercises/tautology/description.md +0 -1
  110. data/tracks/coq/exercises/tautology/example.v +0 -4
  111. data/tracks/coq/exercises/tautology/tautology.v +0 -4
@@ -2,7 +2,7 @@
2
2
  require 'minitest/autorun'
3
3
  require_relative 'phone_number'
4
4
 
5
- # Common test data version: 51d2475
5
+ # Common test data version: 1.1.0 51d2475
6
6
  class PhoneNumberTest < Minitest::Test
7
7
  def test_cleans_the_number
8
8
  # skip
@@ -1,5 +1,5 @@
1
1
  module BookKeeping
2
- VERSION = 2
2
+ VERSION = 3
3
3
  end
4
4
 
5
5
  class Tournament
@@ -2,11 +2,126 @@
2
2
  require 'minitest/autorun'
3
3
  require_relative 'tournament'
4
4
 
5
- # Common test data version: 1.1.0 877cd7d
5
+ # Common test data version: 1.3.0 f2042f1
6
6
  class TournamentTest < Minitest::Test
7
- def test_typical_input
7
+ def test_just_the_header_if_no_input
8
8
  # skip
9
9
  input = <<-INPUT.gsub(/^ */, '')
10
+
11
+ INPUT
12
+ actual = Tournament.tally(input)
13
+ expected = <<-TALLY.gsub(/^ */, '')
14
+ Team | MP | W | D | L | P
15
+ TALLY
16
+ assert_equal expected, actual
17
+ end
18
+
19
+ def test_a_win_is_three_points_a_loss_is_zero_points
20
+ skip
21
+ input = <<-INPUT.gsub(/^ */, '')
22
+ Allegoric Alaskans;Blithering Badgers;win
23
+ INPUT
24
+ actual = Tournament.tally(input)
25
+ expected = <<-TALLY.gsub(/^ */, '')
26
+ Team | MP | W | D | L | P
27
+ Allegoric Alaskans | 1 | 1 | 0 | 0 | 3
28
+ Blithering Badgers | 1 | 0 | 0 | 1 | 0
29
+ TALLY
30
+ assert_equal expected, actual
31
+ end
32
+
33
+ def test_a_win_can_also_be_expressed_as_a_loss
34
+ skip
35
+ input = <<-INPUT.gsub(/^ */, '')
36
+ Blithering Badgers;Allegoric Alaskans;loss
37
+ INPUT
38
+ actual = Tournament.tally(input)
39
+ expected = <<-TALLY.gsub(/^ */, '')
40
+ Team | MP | W | D | L | P
41
+ Allegoric Alaskans | 1 | 1 | 0 | 0 | 3
42
+ Blithering Badgers | 1 | 0 | 0 | 1 | 0
43
+ TALLY
44
+ assert_equal expected, actual
45
+ end
46
+
47
+ def test_a_different_team_can_win
48
+ skip
49
+ input = <<-INPUT.gsub(/^ */, '')
50
+ Blithering Badgers;Allegoric Alaskans;win
51
+ INPUT
52
+ actual = Tournament.tally(input)
53
+ expected = <<-TALLY.gsub(/^ */, '')
54
+ Team | MP | W | D | L | P
55
+ Blithering Badgers | 1 | 1 | 0 | 0 | 3
56
+ Allegoric Alaskans | 1 | 0 | 0 | 1 | 0
57
+ TALLY
58
+ assert_equal expected, actual
59
+ end
60
+
61
+ def test_a_draw_is_one_point_each
62
+ skip
63
+ input = <<-INPUT.gsub(/^ */, '')
64
+ Allegoric Alaskans;Blithering Badgers;draw
65
+ INPUT
66
+ actual = Tournament.tally(input)
67
+ expected = <<-TALLY.gsub(/^ */, '')
68
+ Team | MP | W | D | L | P
69
+ Allegoric Alaskans | 1 | 0 | 1 | 0 | 1
70
+ Blithering Badgers | 1 | 0 | 1 | 0 | 1
71
+ TALLY
72
+ assert_equal expected, actual
73
+ end
74
+
75
+ def test_there_can_be_more_than_one_match
76
+ skip
77
+ input = <<-INPUT.gsub(/^ */, '')
78
+ Allegoric Alaskans;Blithering Badgers;win
79
+ Allegoric Alaskans;Blithering Badgers;win
80
+ INPUT
81
+ actual = Tournament.tally(input)
82
+ expected = <<-TALLY.gsub(/^ */, '')
83
+ Team | MP | W | D | L | P
84
+ Allegoric Alaskans | 2 | 2 | 0 | 0 | 6
85
+ Blithering Badgers | 2 | 0 | 0 | 2 | 0
86
+ TALLY
87
+ assert_equal expected, actual
88
+ end
89
+
90
+ def test_there_can_be_more_than_one_winner
91
+ skip
92
+ input = <<-INPUT.gsub(/^ */, '')
93
+ Allegoric Alaskans;Blithering Badgers;loss
94
+ Allegoric Alaskans;Blithering Badgers;win
95
+ INPUT
96
+ actual = Tournament.tally(input)
97
+ expected = <<-TALLY.gsub(/^ */, '')
98
+ Team | MP | W | D | L | P
99
+ Allegoric Alaskans | 2 | 1 | 0 | 1 | 3
100
+ Blithering Badgers | 2 | 1 | 0 | 1 | 3
101
+ TALLY
102
+ assert_equal expected, actual
103
+ end
104
+
105
+ def test_there_can_be_more_than_two_teams
106
+ skip
107
+ input = <<-INPUT.gsub(/^ */, '')
108
+ Allegoric Alaskans;Blithering Badgers;win
109
+ Blithering Badgers;Courageous Californians;win
110
+ Courageous Californians;Allegoric Alaskans;loss
111
+ INPUT
112
+ actual = Tournament.tally(input)
113
+ expected = <<-TALLY.gsub(/^ */, '')
114
+ Team | MP | W | D | L | P
115
+ Allegoric Alaskans | 2 | 2 | 0 | 0 | 6
116
+ Blithering Badgers | 2 | 1 | 0 | 1 | 3
117
+ Courageous Californians | 2 | 0 | 0 | 2 | 0
118
+ TALLY
119
+ assert_equal expected, actual
120
+ end
121
+
122
+ def test_typical_input
123
+ skip
124
+ input = <<-INPUT.gsub(/^ */, '')
10
125
  Allegoric Alaskans;Blithering Badgers;win
11
126
  Devastating Donkeys;Courageous Californians;draw
12
127
  Devastating Donkeys;Allegoric Alaskans;win
@@ -65,24 +180,6 @@ TALLY
65
180
  assert_equal expected, actual
66
181
  end
67
182
 
68
- def test_mostly_invalid_lines
69
- skip
70
- input = <<-INPUT.gsub(/^ */, '')
71
-
72
- Allegoric Alaskans@Blithering Badgers;draw
73
- Blithering Badgers;Devastating Donkeys;loss
74
- Devastating Donkeys;Courageous Californians;win;5
75
- Courageous Californians;Allegoric Alaskans;los
76
- INPUT
77
- actual = Tournament.tally(input)
78
- expected = <<-TALLY.gsub(/^ */, '')
79
- Team | MP | W | D | L | P
80
- Devastating Donkeys | 1 | 1 | 0 | 0 | 3
81
- Blithering Badgers | 1 | 0 | 0 | 1 | 0
82
- TALLY
83
- assert_equal expected, actual
84
- end
85
-
86
183
  # Problems in exercism evolve over time, as we find better ways to ask
87
184
  # questions.
88
185
  # The version number refers to the version of the problem you solved,
@@ -102,6 +199,6 @@ TALLY
102
199
 
103
200
  def test_bookkeeping
104
201
  skip
105
- assert_equal 2, BookKeeping::VERSION
202
+ assert_equal 3, BookKeeping::VERSION
106
203
  end
107
204
  end
@@ -23,7 +23,7 @@ class Exercise
23
23
  end
24
24
 
25
25
  def example_file
26
- File.exist?(example_filename) ? example_filename : legacy_example_filename
26
+ File.exist?(File.join(directory, example_filename)) ? example_filename : legacy_example_filename
27
27
  end
28
28
 
29
29
  def testable_example_file
@@ -31,8 +31,10 @@ class ExerciseTest < Minitest::Test
31
31
  end
32
32
 
33
33
  def test_example_file
34
- File.stub(:exist?, true) do
35
- assert_equal '.meta/solutions/name.rb', Exercise.new('name').example_file
34
+ mock_exist = Minitest::Mock.new
35
+ mock_exist.expect(:call, true, ['exercises/alpha/./.meta/solutions/alpha.rb'])
36
+ File.stub(:exist?, mock_exist) do
37
+ assert_equal '.meta/solutions/alpha.rb', Exercise.new('alpha').example_file
36
38
  end
37
39
  end
38
40
 
@@ -1,5 +1,5 @@
1
1
  [package]
2
2
  name = "acronym"
3
- version = "0.1.0"
3
+ version = "1.0.0"
4
4
 
5
5
  [dependencies]
@@ -1,3 +1,3 @@
1
1
  [package]
2
2
  name = "allyourbase"
3
- version = "0.0.0"
3
+ version = "1.0.0"
@@ -1,4 +1,4 @@
1
1
  [package]
2
2
  name = "allergies"
3
- version = "0.0.0"
3
+ version = "1.0.0"
4
4
 
@@ -1,3 +1,3 @@
1
1
  [package]
2
2
  name = "alphametics"
3
- version = "0.0.0"
3
+ version = "1.0.0"
@@ -1,3 +1,3 @@
1
1
  [package]
2
2
  name = "atbash-cipher"
3
- version = "0.0.0"
3
+ version = "1.0.0"
@@ -1,3 +1,3 @@
1
1
  [package]
2
2
  name = "bowling"
3
- version = "0.0.0"
3
+ version = "1.0.0"
@@ -1,3 +1,3 @@
1
1
  [package]
2
2
  name = "bracket-push"
3
- version = "0.0.0"
3
+ version = "1.0.0"
@@ -1,3 +1,3 @@
1
1
  [package]
2
2
  name = "custom-set"
3
- version = "0.0.0"
3
+ version = "1.0.1"
@@ -1,3 +1,3 @@
1
1
  [package]
2
2
  name = "dominoes"
3
- version = "0.0.0"
3
+ version = "1.0.0"
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "gigasecond"
3
- version = "0.0.0"
3
+ version = "1.0.0"
4
4
 
5
5
  [dependencies]
6
6
  chrono = "0.2"
@@ -1,3 +1,3 @@
1
1
  [package]
2
2
  name = "grains"
3
- version = "0.0.0"
3
+ version = "1.0.0"
@@ -1,3 +1,3 @@
1
1
  [package]
2
2
  name = "hello-world"
3
- version = "0.0.0"
3
+ version = "1.0.0"
@@ -1,3 +1,3 @@
1
1
  [package]
2
2
  name = "largest-series-product"
3
- version = "0.0.0"
3
+ version = "1.0.0"
@@ -1,3 +1,3 @@
1
1
  [package]
2
2
  name = "leap"
3
- version = "0.0.0"
3
+ version = "1.0.0"
@@ -1,3 +1,3 @@
1
1
  [package]
2
2
  name = "pascals-triangle"
3
- version = "0.0.0"
3
+ version = "1.0.0"
@@ -1,3 +1,3 @@
1
1
  [package]
2
2
  name = "queen-attack"
3
- version = "0.0.0"
3
+ version = "1.0.0"
@@ -1,3 +1,3 @@
1
1
  [package]
2
2
  name = "react"
3
- version = "0.0.0"
3
+ version = "1.0.0"
@@ -1,3 +1,3 @@
1
1
  [package]
2
2
  name = "robot-simulator"
3
- version = "0.0.0"
3
+ version = "1.0.0"
@@ -1,3 +1,3 @@
1
1
  [package]
2
2
  name = "roman-numerals"
3
- version = "0.0.0"
3
+ version = "1.0.0"
@@ -1,4 +1,4 @@
1
1
  [package]
2
2
  name = "rotational-cipher"
3
- version = "0.0.0"
3
+ version = "1.0.0"
4
4
  authors = ["Chad Baxter <cbaxter@mail.umw.edu>"]
@@ -1,4 +1,4 @@
1
1
  [root]
2
2
  name = "run-length-encoding"
3
- version = "0.1.0"
3
+ version = "1.0.0"
4
4
 
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "run-length-encoding"
3
- version = "0.1.0"
3
+ version = "1.0.0"
4
4
  authors = ["zombiefungus <divmermarlav@gmail.com>"]
5
5
 
6
6
  [dependencies]
@@ -1,3 +1,3 @@
1
1
  [package]
2
2
  name = "scrabble-score"
3
- version = "0.0.0"
3
+ version = "1.0.0"
@@ -1,3 +1,3 @@
1
1
  [package]
2
2
  name = "sieve"
3
- version = "0.0.0"
3
+ version = "1.0.0"
@@ -1,3 +1,3 @@
1
1
  [package]
2
2
  name = "space-age"
3
- version = "0.0.0"
3
+ version = "1.0.0"
@@ -1,3 +1,3 @@
1
1
  [package]
2
2
  name = "sum-of-multiples"
3
- version = "0.0.0"
3
+ version = "1.0.0"
@@ -1,3 +1,3 @@
1
1
  [package]
2
2
  name = "variable-length-quantity"
3
- version = "0.0.0"
3
+ version = "1.0.0"
@@ -1,3 +1,3 @@
1
1
  [package]
2
2
  name = "wordy"
3
- version = "0.0.0"
3
+ version = "1.0.0"
@@ -118,8 +118,13 @@
118
118
  "difficulty": 1,
119
119
  "topics": [
120
120
  ]
121
+ },
122
+ {
123
+ "slug": "scrabble-score",
124
+ "difficulty": 1,
125
+ "topics": [
126
+ ]
121
127
  }
122
-
123
128
  ],
124
129
  "deprecated": [
125
130
 
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "xtypescript",
3
+ "version": "0",
4
+ "description": "Exercism exercises in Typescript.",
5
+ "author": "",
6
+ "private": true,
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/exercism/xtypescript"
10
+ },
11
+ "devDependencies": {},
12
+ "scripts": {
13
+ "test": "jest --no-cache",
14
+ "lint": "tslint '*.ts?(x)'; exit 0"
15
+ },
16
+ "dependencies": {
17
+ "@types/jest": "^18.1.1",
18
+ "@types/node": "^7.0.5",
19
+ "jest": "^19.0.2",
20
+ "ts-jest": "^19.0.0",
21
+ "tslint": "^4.5.1",
22
+ "typescript": "^2.2.1"
23
+ },
24
+ "jest": {
25
+ "transform": {
26
+ ".(ts|tsx)": "<rootDir>/node_modules/ts-jest/preprocessor.js"
27
+ },
28
+ "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",
29
+ "testResultsProcessor": "<rootDir>/node_modules/ts-jest/coverageprocessor.js",
30
+ "moduleFileExtensions": [
31
+ "ts",
32
+ "tsx",
33
+ "js"
34
+ ]
35
+ }
36
+ }
@@ -0,0 +1,26 @@
1
+ interface LetterScore {
2
+ [key: string]: number
3
+ }
4
+
5
+ const letterScores: LetterScore = {
6
+ a : 1, e : 1, i : 1, o : 1,
7
+ u : 1, l : 1, n : 1, r : 1,
8
+ s : 1, t : 1, d : 2, g : 2,
9
+ b : 3, c : 3, m : 3, p : 3,
10
+ f : 4, h : 4, v : 4, w : 4,
11
+ y : 4, k : 5, j : 8, x : 8,
12
+ q : 10, z : 10
13
+ }
14
+
15
+ const score = (word: string): number => {
16
+ word = word ? word.toLowerCase() : ''
17
+
18
+ let output = 0
19
+ word.split('').forEach((letter: string): void => {
20
+ output += letterScores[letter]
21
+ })
22
+
23
+ return output
24
+ }
25
+
26
+ export default score