-
Notifications
You must be signed in to change notification settings - Fork 103
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
raina cambpell PR #85
base: main
Are you sure you want to change the base?
Changes from all commits
4025bc0
50ca673
8683376
4c58ae7
a6910a8
dc4aa64
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
{ | ||
// Use IntelliSense to learn about possible attributes. | ||
// Hover to view descriptions of existing attributes. | ||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 | ||
"version": "0.2.0", | ||
"configurations": [ | ||
{ | ||
"type": "node", | ||
"request": "launch", | ||
"name": "Launch Program", | ||
"skipFiles": [ | ||
"<node_internals>/**" | ||
], | ||
"program": "${workspaceFolder}/src/adagrams.js" | ||
} | ||
] | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,153 @@ | ||
const letterPool = { | ||
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 lettersArr = Object.keys(letterPool); | ||
let lettersPool = []; | ||
lettersArr.forEach((letter) => { | ||
console.log(letter); | ||
for (let i = 0; i < letterPool[letter]; i++) { | ||
lettersPool.push(letter); | ||
} | ||
}); | ||
console.log(lettersPool); | ||
|
||
export const drawLetters = () => { | ||
// Implement this method for wave 1 | ||
let hand = []; | ||
let letterPoolCopy = [...lettersPool]; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I see you made a copy of There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Actually, disregard this comment! Upon further inspection I can see where you mutated it! |
||
for (let i = 0; i < 10; i++) { | ||
let randomIndex = Math.floor( | ||
Math.random() * Object.keys(letterPool).length | ||
); | ||
// Create a random letter from the list of letters | ||
// using the random index | ||
let selectedLetter = letterPoolCopy[randomIndex]; | ||
hand.push(selectedLetter); | ||
letterPoolCopy.splice(randomIndex, 1); | ||
} | ||
return hand; | ||
}; | ||
|
||
export const usesAvailableLetters = (input, lettersInHand) => { | ||
// Implement this method for wave 2 | ||
// create variable to count occurrences of each letter in word | ||
input = input.toUpperCase(); | ||
let input_letter_count = {}; | ||
for (let i = 0; i < input.length; i++) { | ||
let letter = input[i]; | ||
input_letter_count[letter] = (input_letter_count[letter] || 0) + 1; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Oh wow, I'm stealing this! 😭 |
||
} | ||
|
||
// create variable to count occurrences of each letter in the letter bank | ||
let bank_letter_count = {}; | ||
for (let i = 0; i < lettersInHand.length; i++) { | ||
let letter = lettersInHand[i]; | ||
bank_letter_count[letter] = (bank_letter_count[letter] || 0) + 1; | ||
} | ||
|
||
// compare the input_letter_count and bank_letter_count to see if input can be made | ||
for (let letter in input_letter_count) { | ||
let count = input_letter_count[letter]; | ||
// check if not in bank_letter_count | ||
if (!(letter in bank_letter_count) || count > bank_letter_count[letter]) { | ||
return false; | ||
} | ||
} | ||
|
||
return true; | ||
}; | ||
|
||
export const scoreWord = (word) => { | ||
// Implement this method for wave 3 | ||
let letter_values = { | ||
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 score = 0; | ||
word = word.toUpperCase(); | ||
|
||
for (let i = 0; i < word.length; i++) { | ||
let letter = word[i]; | ||
score += letter_values[letter] || 0; | ||
} | ||
|
||
if (word.length >= 7 && word.length <= 10) { | ||
score += 8; | ||
} | ||
|
||
return score; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ⭐️ |
||
}; | ||
|
||
export const highestScoreFrom = (words) => { | ||
// Implement this method for wave 4 | ||
let highestScore = 0; | ||
let winningWord = ''; | ||
Comment on lines
+130
to
+131
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If we know we want to return these variables in object form, could just initialize said object here? |
||
|
||
// check through each | ||
// console.log(108, words); | ||
for (let i = 0; i < words.length; i++) { | ||
const word = words[i]; | ||
const score = scoreWord(word); | ||
|
||
if (score > highestScore) { | ||
highestScore = score; | ||
winningWord = word; | ||
} else if (score === highestScore) { | ||
if ( | ||
winningWord.length !== 10 && | ||
(word.length === 10 || word.length < winningWord.length) | ||
) { | ||
winningWord = word; | ||
} | ||
} | ||
} | ||
|
||
return { word: winningWord, score: highestScore }; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Very easy to follow! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nice job, Raina! As you probably noticed, I didn't give too much feedback due to the scope of the project (Translating your python code to Javascript code). I tried to just point out any glaring issues, if any. With that being said, if you want to discuss anything in greater detail, feel free to reach out to me! |
||
}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remember we want to reserve the use of
let
for variables to look to re-assign later on andconst
for variables that we want to protect from re-assignment.