From 88ce4267d94c311fe4434f184619c196951ba249 Mon Sep 17 00:00:00 2001 From: Dominique Date: Wed, 13 Nov 2019 14:39:42 -0800 Subject: [PATCH 1/4] made letter pool object --- src/adagrams.js | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/src/adagrams.js b/src/adagrams.js index 54043451..e0e75010 100644 --- a/src/adagrams.js +++ b/src/adagrams.js @@ -1,6 +1,47 @@ const Adagrams = { drawLetters() { - // Implement this method for wave 1 + const letter_pool = { + A: 9, + B: 2, + C: 2, + D: 4, + E: 12, + F: 2, + G: 3, + H: 2, + I: 9, + J: 1, + K: 1, + L: 4, + M: 2, + N: 6, + O: 8, + P: 2, + Q: 1, + R: 6, + S: 4, + T: 6, + U: 4, + V: 2, + W: 2, + X: 1, + Y: 2, + Z: 1} + + const keys = Object.keys(letter_pool) + + + + + + + + + + + + + const hand = ["a", "b", "i", "d", "e", "o", "z", "h", "i", "m"] }, }; From 33e27811a7798c3b600995c06e764b62956623db Mon Sep 17 00:00:00 2001 From: Dominique Date: Sat, 16 Nov 2019 11:57:37 -0800 Subject: [PATCH 2/4] completed wave 2 --- src/adagrams.js | 52 +++++++++++++++++++++++++++++++++---------- test/adagrams.test.js | 6 ++--- 2 files changed, 43 insertions(+), 15 deletions(-) diff --git a/src/adagrams.js b/src/adagrams.js index e0e75010..4824eca5 100644 --- a/src/adagrams.js +++ b/src/adagrams.js @@ -1,6 +1,7 @@ const Adagrams = { + drawLetters() { - const letter_pool = { + const rawTiles = { A: 9, B: 2, C: 2, @@ -26,24 +27,51 @@ const Adagrams = { W: 2, X: 1, Y: 2, - Z: 1} + Z: 1}; - const keys = Object.keys(letter_pool) - - + const keys = Object.keys(rawTiles); + const letterPool = []; + for(const key in rawTiles) { + let i = 0 + while (i <= rawTiles[key]) { + letterPool.push(key); + i += 1 + }; + }; + const hand = []; + let i = 0 - - - - - const hand = ["a", "b", "i", "d", "e", "o", "z", "h", "i", "m"] - }, -}; + while ( i <= 9) { + hand.push(letterPool[Math.floor(Math.random()*letterPool.length)]); + i += 1 + } + return hand + }, + + usesAvailableLetters(input, lettersInHand) { + let lettersAvailable = true + + const checkForLetter = function(letter) { + if (lettersInHand.includes(letter)) { + let index = lettersInHand.indexOf(letter) + lettersInHand.splice(index, 1); + + } else { + // console.log(`Letter is ${letter}`); + // console.log(`lettersInHand is ${lettersInHand}`); + lettersAvailable = false; + } + } + + input.split('').forEach(checkForLetter); + return lettersAvailable + } +} // Do not remove this line or your tests will break! export default Adagrams; diff --git a/test/adagrams.test.js b/test/adagrams.test.js index 371027a0..445e44d0 100644 --- a/test/adagrams.test.js +++ b/test/adagrams.test.js @@ -45,7 +45,7 @@ describe('Adagrams', () => { }); }); - describe('scoreWord', () => { + xdescribe('scoreWord', () => { const expectScores = (wordScores) => { Object.entries(wordScores).forEach(([word, score]) => { expect(Adagrams.scoreWord(word)).toBe(score); @@ -84,7 +84,7 @@ describe('Adagrams', () => { }); }); - describe.skip('highestScoreFrom', () => { + xdescribe('highestScoreFrom', () => { it('returns a hash that contains the word and score of best word in an array', () => { const words = ['X', 'XX', 'XXX', 'XXXX']; const correct = { word: 'XXXX', score: Adagrams.scoreWord('XXXX') }; @@ -99,7 +99,7 @@ describe('Adagrams', () => { expect(Adagrams.highestScoreFrom(words)).toEqual(correct); }); - describe('in case of tied score', () => { + xdescribe.skip('in case of tied score', () => { const expectTie = (words) => { const scores = words.map(word => Adagrams.scoreWord(word)); const highScore = scores.reduce((h, s) => h < s ? s : h, 0); From 996e859c9e004c90a2957e04e6de4289f547119c Mon Sep 17 00:00:00 2001 From: Dominique Date: Sat, 16 Nov 2019 13:27:01 -0800 Subject: [PATCH 3/4] wordDowncase method added --- src/adagrams.js | 66 +++++++++++++++++++++++++++++++++++++++---- test/adagrams.test.js | 2 +- 2 files changed, 61 insertions(+), 7 deletions(-) diff --git a/src/adagrams.js b/src/adagrams.js index 4824eca5..2bb1a19d 100644 --- a/src/adagrams.js +++ b/src/adagrams.js @@ -44,21 +44,21 @@ const Adagrams = { const hand = []; - let i = 0 + let i = 0; while ( i <= 9) { hand.push(letterPool[Math.floor(Math.random()*letterPool.length)]); i += 1 } - return hand + return hand; }, usesAvailableLetters(input, lettersInHand) { - let lettersAvailable = true + let lettersAvailable = true; const checkForLetter = function(letter) { if (lettersInHand.includes(letter)) { - let index = lettersInHand.indexOf(letter) + let index = lettersInHand.indexOf(letter); lettersInHand.splice(index, 1); } else { @@ -69,8 +69,62 @@ const Adagrams = { } input.split('').forEach(checkForLetter); - return lettersAvailable - } + return lettersAvailable; + }, + + + + scoreWord(word) { + const scoreChart = { + "a": 1, + "e": 1, + "i": 1, + "o": 1, + "u": 1, + "l": 1, + "n": 1, + "r": 1, + "s": 1, + "t": 1, + "d": 2, + "g": 2, + "b": 3, + "c": 3, + "m": 3, + "p": 3, + "f": 4, + "h": 4, + "v": 4, + "w": 4, + "y": 4, + "k": 5, + "j": 8, + "x": 8, + "q": 10, + "z": 10, + }; + + let wordScore = 0; + const wordDowncase = word.toLowerCase(); + + wordDowncase.split('').forEach( function(letter) { + if (scoreChart[letter]) { + wordScore += scoreChart[letter]; + }; + }); + + return wordScore + + + // Make a score chart hash. + // Create a variable called wordScore + // if given empty string, return a score of 0 + // Iterate through the word and if hash[letter], assign the value of that letter to the + // variable wordScore + // additional points for length of the word can be added on later. + // calculate the length of the word and assign additional points if necessary + }, + } // Do not remove this line or your tests will break! diff --git a/test/adagrams.test.js b/test/adagrams.test.js index 445e44d0..658ed86e 100644 --- a/test/adagrams.test.js +++ b/test/adagrams.test.js @@ -45,7 +45,7 @@ describe('Adagrams', () => { }); }); - xdescribe('scoreWord', () => { + describe('scoreWord', () => { const expectScores = (wordScores) => { Object.entries(wordScores).forEach(([word, score]) => { expect(Adagrams.scoreWord(word)).toBe(score); From 264675715477d1d92e0405e240cd9a7a20de9c84 Mon Sep 17 00:00:00 2001 From: Dominique Date: Sat, 16 Nov 2019 13:30:01 -0800 Subject: [PATCH 4/4] wave 3 complete --- src/adagrams.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/adagrams.js b/src/adagrams.js index 2bb1a19d..bf15aec5 100644 --- a/src/adagrams.js +++ b/src/adagrams.js @@ -113,6 +113,10 @@ const Adagrams = { }; }); + if (wordDowncase.length >= 7) { + wordScore += 8; + } + return wordScore