From f6d0e66eef54ba22a9264fe80aba06a52176be98 Mon Sep 17 00:00:00 2001 From: Rinostar Date: Sat, 16 Nov 2019 16:34:48 -0800 Subject: [PATCH 1/4] set up data structure --- src/adagrams.js | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/src/adagrams.js b/src/adagrams.js index 54043451..42cd3e8e 100644 --- a/src/adagrams.js +++ b/src/adagrams.js @@ -1,8 +1,39 @@ +// 1. Set up array data structure: +const pool = Array(9).fill('A').concat( + Array(2).fill('B'), + Array(2).fill('C'), + Array(4).fill('D'), + Array(12).fill('E'), + Array(2).fill('F'), + Array(3).fill('G'), + Array(2).fill('H'), + Array(9).fill('I'), + Array(1).fill('J'), + Array(1).fill('K'), + Array(4).fill('L'), + Array(2).fill('M'), + Array(6).fill('N'), + Array(8).fill('O'), + Array(2).fill('P'), + Array(1).fill('Q'), + Array(6).fill('R'), + Array(4).fill('S'), + Array(6).fill('T'), + Array(4).fill('U'), + Array(2).fill('V'), + Array(2).fill('W'), + Array(1).fill('X'), + Array(2).fill('Y'), + Array(1).fill('Z') +); +let POOL = pool; + const Adagrams = { drawLetters() { - // Implement this method for wave 1 + letters_in_hand = POOL[Math.floor(Math.random() * POOL.length)].slice(0, 9); + return letters_in_hand }, }; // Do not remove this line or your tests will break! -export default Adagrams; +export default Adagrams; \ No newline at end of file From 0f36d45718a0d8040d53f43001001f12d75fbda0 Mon Sep 17 00:00:00 2001 From: Rinostar Date: Sat, 16 Nov 2019 16:50:24 -0800 Subject: [PATCH 2/4] wave 1: implement 'drawLetters()' function and pass tests --- src/adagrams.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/adagrams.js b/src/adagrams.js index 42cd3e8e..125a14ee 100644 --- a/src/adagrams.js +++ b/src/adagrams.js @@ -30,8 +30,13 @@ let POOL = pool; const Adagrams = { drawLetters() { - letters_in_hand = POOL[Math.floor(Math.random() * POOL.length)].slice(0, 9); - return letters_in_hand + let i = 0; + const lettersInHand = new Array(10); + while (i < 10) { + lettersInHand[i] = POOL[Math.floor(Math.random() * POOL.length)]; + i += 1; + }; + return lettersInHand }, }; From 64fc37a718cf6496179f5d5fbefb6612c0f35659 Mon Sep 17 00:00:00 2001 From: Rinostar Date: Sat, 16 Nov 2019 17:36:17 -0800 Subject: [PATCH 3/4] wave 2: implement 'usesAvailableLetters' function and pass tests --- src/adagrams.js | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/src/adagrams.js b/src/adagrams.js index 125a14ee..84a88135 100644 --- a/src/adagrams.js +++ b/src/adagrams.js @@ -29,16 +29,47 @@ const pool = Array(9).fill('A').concat( let POOL = pool; const Adagrams = { + drawLetters() { let i = 0; const lettersInHand = new Array(10); while (i < 10) { lettersInHand[i] = POOL[Math.floor(Math.random() * POOL.length)]; i += 1; - }; - return lettersInHand + } + return lettersInHand; + }, + + usesAvailableLetters(input, lettersInHand) { + const lettersObj = new Object(); + lettersInHand.forEach(function(element){ + if (lettersObj[element]) { + lettersObj[element] += 1; + } else { + lettersObj[element] = 1; + } + }); + + let j = 0; + while (j < input.length) { + if (lettersObj[input.charAt(j)]) { + lettersObj[input.charAt(j)] -= 1; + } else { + return false; + } + j += 1; + } + + let n = 0; + while (n < lettersObj.length) { + if (lettersObj[j] < 0) { + return false; + } + n += 1; + } + return true }, -}; +} // Do not remove this line or your tests will break! export default Adagrams; \ No newline at end of file From 4970c16f80eff5db716949c32a78805669db756e Mon Sep 17 00:00:00 2001 From: Rinostar Date: Sat, 16 Nov 2019 18:30:16 -0800 Subject: [PATCH 4/4] wave 3: implement 'scoreWord' function and pass tests --- src/adagrams.js | 50 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/adagrams.js b/src/adagrams.js index 84a88135..effa0c9d 100644 --- a/src/adagrams.js +++ b/src/adagrams.js @@ -69,6 +69,56 @@ const Adagrams = { } return true }, + + 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 + }, + + scoreWord(word) { + const final_word = word.toUpperCase(); + let score = 0; + let m = 0; + while (m < final_word.length) { + score += this.scoreChart[final_word.charAt(m)]; + m += 1; + } + + switch (final_word.length) { + case 7: + case 8: + case 9: + case 10: + score += 8; + break; + } + + return score + }, } // Do not remove this line or your tests will break!