From 24532deb137a15c3220781a8793ea28313eaddcd Mon Sep 17 00:00:00 2001 From: Janice Date: Thu, 16 Mar 2023 14:58:18 -0700 Subject: [PATCH 1/7] added comment to function --- adagrams/game.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/adagrams/game.py b/adagrams/game.py index 5fb37b11..27729fb3 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -1,9 +1,11 @@ + def draw_letters(): pass def uses_available_letters(word, letter_bank): pass +# This function takes the word created by the user and scores it. def score_word(word): pass From e9a6ba1b02dfd4b21b3e6cfd1e3ff15cc3f827db Mon Sep 17 00:00:00 2001 From: Janice Date: Sat, 18 Mar 2023 17:12:33 -0700 Subject: [PATCH 2/7] passed three tests, failed 1 --- adagrams/game.py | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 27729fb3..18b667c7 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -1,11 +1,51 @@ +import random def draw_letters(): - pass + 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 +} + + + list_of_letters =[] + hand = [] + + for letter in LETTER_POOL.keys(): + list_of_letters.append(letter) + + while len(hand) != 10: + random_letter = random.choice(list_of_letters) + hand.append(random_letter) + return hand def uses_available_letters(word, letter_bank): pass -# This function takes the word created by the user and scores it. + def score_word(word): pass From 4d428898ebeba5f6953051b9216f36354f97b431 Mon Sep 17 00:00:00 2001 From: Janice Date: Mon, 20 Mar 2023 20:41:49 -0700 Subject: [PATCH 3/7] passed 4 tests --- adagrams/game.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 18b667c7..1e4013c1 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -29,21 +29,28 @@ def draw_letters(): 'Y': 2, 'Z': 1 } + available_letters =[] + for letter, number in LETTER_POOL.items(): + letter_quantity = letter * number + available_letters.append(letter_quantity) + + letter_string = ''.join(available_letters) + list_letter_pool = list(letter_string) - list_of_letters =[] hand = [] - for letter in LETTER_POOL.keys(): - list_of_letters.append(letter) - while len(hand) != 10: - random_letter = random.choice(list_of_letters) + random_letter = random.choice(list_letter_pool) hand.append(random_letter) + for letter in list_letter_pool: + if letter in hand: + list_letter_pool.remove(letter) return hand -def uses_available_letters(word, letter_bank): - pass + +cl +def uses_available_letters(word, hand): def score_word(word): From 96f110e08bba9545767c1a7691700260e9c90eca Mon Sep 17 00:00:00 2001 From: Janice Date: Tue, 21 Mar 2023 17:10:49 -0700 Subject: [PATCH 4/7] passed all wave 3 tests --- adagrams/game.py | 48 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 45 insertions(+), 3 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 1e4013c1..88a94075 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -49,12 +49,54 @@ def draw_letters(): return hand -cl -def uses_available_letters(word, hand): +def uses_available_letters(word, hand): + + for letter in word.upper(): + if letter in hand: + return True + else: + return False def score_word(word): - pass + + score = 0 + bonus_point_list =[7,8,9,10] + points_value = {'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 +} + for letter in word.upper(): + score += points_value[letter] + if word == "": + score = 0 + if len(word) in bonus_point_list: + score = score + 8 + return(score) + def get_highest_word_score(word_list): pass \ No newline at end of file From d1bbdf58051cfaa307316ba36f2581685f7e71ef Mon Sep 17 00:00:00 2001 From: Janice Date: Thu, 23 Mar 2023 10:26:06 -0700 Subject: [PATCH 5/7] passed 5/10 tests in wave 4 --- adagrams/game.py | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 88a94075..dd296378 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -51,12 +51,13 @@ def draw_letters(): def uses_available_letters(word, hand): + word = word.upper() + for letter in word: + if letter not in hand or word.count(letter) > hand.count(letter): + return False + else: + return True - for letter in word.upper(): - if letter in hand: - return True - else: - return False def score_word(word): @@ -91,7 +92,7 @@ def score_word(word): } for letter in word.upper(): score += points_value[letter] - if word == "": + if len(word) == 0: score = 0 if len(word) in bonus_point_list: score = score + 8 @@ -99,4 +100,18 @@ def score_word(word): def get_highest_word_score(word_list): - pass \ No newline at end of file + + word_value_dictionary = {} + score_list = [] + for word in word_list: + score = score_word(word) + # points_list.append(score) + word_value_dictionary[word] = score + + highest_score = max(word_value_dictionary.values()) + for k,v in word_value_dictionary.items(): + if v == highest_score: + score_list.append(k) + score_list.append(highest_score) + return tuple(score_list) + From e46c2d836785bf10d1d9620551e9611855a1204d Mon Sep 17 00:00:00 2001 From: Janice Date: Thu, 23 Mar 2023 12:09:10 -0700 Subject: [PATCH 6/7] passed all tests for wave 2 --- adagrams/game.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index dd296378..f6c48940 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -51,12 +51,13 @@ def draw_letters(): def uses_available_letters(word, hand): - word = word.upper() + word = word.upper() for letter in word: - if letter not in hand or word.count(letter) > hand.count(letter): - return False - else: - return True + if letter in hand and word.count(letter) < hand.count(letter): + continue + elif letter not in hand or word.count(letter) > hand.count(letter): + return False + return True def score_word(word): From 18f68a589a18c181157017b9ce0ce18ee9d2d2ac Mon Sep 17 00:00:00 2001 From: Janice Date: Fri, 24 Mar 2023 09:04:54 -0700 Subject: [PATCH 7/7] added comments to code --- adagrams/game.py | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index f6c48940..f9d0ca66 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -29,29 +29,34 @@ def draw_letters(): 'Y': 2, 'Z': 1 } - available_letters =[] + list_letter_pool =[] for letter, number in LETTER_POOL.items(): letter_quantity = letter * number - available_letters.append(letter_quantity) + list_letter_pool.append(letter_quantity) - letter_string = ''.join(available_letters) - list_letter_pool = list(letter_string) + letter_string = ''.join(list_letter_pool) + + # Available letters with frequencies list + available_letters = list(letter_string) hand = [] +# Returns a list of 10 random letters while len(hand) != 10: - random_letter = random.choice(list_letter_pool) + random_letter = random.choice(available_letters) hand.append(random_letter) - for letter in list_letter_pool: + for letter in available_letters: if letter in hand: - list_letter_pool.remove(letter) + available_letters.remove(letter) return hand def uses_available_letters(word, hand): - word = word.upper() + # Changes user's input to uppercase + word = word.upper() + # Returns true if all the letters in word are in the hand for letter in word: if letter in hand and word.count(letter) < hand.count(letter): continue @@ -64,6 +69,7 @@ def score_word(word): score = 0 bonus_point_list =[7,8,9,10] + points_value = {'A': 1, 'E' : 1, 'I': 1, @@ -90,7 +96,7 @@ def score_word(word): 'X':8, 'Q':10, 'Z':10 -} +} # Gets the score of the word for letter in word.upper(): score += points_value[letter] if len(word) == 0: @@ -101,18 +107,22 @@ def score_word(word): def get_highest_word_score(word_list): - + # Stores the word and it's score word_value_dictionary = {} + + # Stores the scores of the words in score_list = [] + # Scores each word in the word list and stores it a dictionary for word in word_list: score = score_word(word) - # points_list.append(score) word_value_dictionary[word] = score - + # Gets the highest score highest_score = max(word_value_dictionary.values()) - for k,v in word_value_dictionary.items(): - if v == highest_score: - score_list.append(k) + # Gets the word with the highest score and returns it in a tuple + for word,value in word_value_dictionary.items(): + if value == highest_score: + score_list.append(word) score_list.append(highest_score) + return tuple(score_list)