Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 126 additions & 8 deletions src/adagrams.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,133 @@




export const drawLetters = () => {
// Implement this method for wave 1
};

const letterPool = {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can be declared outside of the function so that it doesn't have to be recreated each time the function is called.

'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
};

let letterList = [];

for (let letter in letterPool){
let freq = letterPool[letter];
for (let i = 0 ; i < freq ; i++) {
letterList.push(letter);
}
}

let hand = [];
while (hand.length < 10){
let index = Math.floor(Math.random()*letterList.length);
let letterDrawn = letterList[index];
hand.push(letterDrawn);
letterList.splice(index, 1);
}
return hand;
Comment on lines +36 to +52

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excellent!


}

export const usesAvailableLetters = (input, lettersInHand) => {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excellent!

// Implement this method for wave 2
};
let hand = [...lettersInHand];
let word = input;

for (let letter of word){
if (!hand.includes(letter)){
return false;}
else{
let index = hand.indexOf(letter);
hand.splice(index,1);}
}
return true
}

export const scoreWord = (word) => {
// Implement this method for wave 3
};
const pointValues = {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can be declared outside of the function.

'A': 1,
'B': 3,
'C': 3,
'D': 2,
'E': 1,
'F': 4,
'G': 2,
'H': 4,
'I': 1,
'J': 8,
'K': 5,
'L': 1,
'M': 3,
'N': 1,
'O': 1,
'P': 3,
'Q': 10,
'R': 1,
'S': 1,
'T': 1,
'U': 1,
'V': 4,
'W': 4,
'X': 8,
'Y': 4,
'Z': 10
};

let total = 0;
let wordUpper = word.toUpperCase();

if (6 < word.length && word.length < 11) {
total += 8
}
for (let letter of wordUpper){
let letPoint = pointValues[letter];
total += letPoint;
}

return total;
Comment on lines +100 to +111

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excellent!

}

export const highestScoreFrom = (words) => {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excellent!

// Implement this method for wave 4
};
let winning_word = ""
let winning_score = -1
for (let word of words){
let score = scoreWord(word);
if (score > winning_score){
winning_word = word;
winning_score = score;
}
else if (score === winning_score && winning_word.length != 10){
if (word.length == 10 || word.length < winning_word.length){
winning_word = word
}
}
}
return {
"score" : winning_score,
"word" : winning_word
}
}
8 changes: 5 additions & 3 deletions test/adagrams.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,9 @@ describe("Adagrams", () => {
});

it("returns a score of 0 if given an empty input", () => {
throw "Complete test";
expectScores({

})
Comment on lines +123 to +125

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like this test was not completed. Make sure to complete all tests!

});

it("adds an extra 8 points if word is 7 or more characters long", () => {
Expand All @@ -133,7 +135,7 @@ describe("Adagrams", () => {
});
});

describe.skip("highestScoreFrom", () => {
describe("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: scoreWord("XXXX") };
Expand All @@ -145,7 +147,7 @@ describe("Adagrams", () => {
const words = ["XXX", "XXXX", "X", "XX"];
const correct = { word: "XXXX", score: scoreWord("XXXX") };

throw "Complete test by adding an assertion";
expect(highestScoreFrom(words)).toEqual(correct);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excellent!

});

describe("in case of tied score", () => {
Expand Down