From 8178137ade132989ae89156f37ab673569c869aa Mon Sep 17 00:00:00 2001 From: Gabriela Ibarra Date: Mon, 28 Mar 2022 14:03:39 -0500 Subject: [PATCH 1/7] Updated draw_letters function --- adagrams/game.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/adagrams/game.py b/adagrams/game.py index 5fb37b11..7252d07b 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -1,6 +1,48 @@ 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 + } + + hand = [] + for i in range(10): + pass + print(hand) + + # Empty list = hand + # For loop to iterate over letter pool + # Iterate 10 times + # Append letter to list (hand) + # Append letter and count to dictionary + # E.g. "a", "b", "e", "f", "a" + # a: 2, b: 1 + def uses_available_letters(word, letter_bank): pass From 3b51803dccc7c1a9cc29d214c30be07a0f0806d1 Mon Sep 17 00:00:00 2001 From: Gabriela Ibarra Date: Mon, 28 Mar 2022 20:15:41 -0500 Subject: [PATCH 2/7] Made helper function get_letter_frequency and finished draw_letters function --- adagrams/game.py | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 7252d07b..d11e8577 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -1,6 +1,19 @@ -def draw_letters(): - pass +import random + +def get_letter_frequency(letter_dict, letter): + """ + Takes in a dictionary (letter_dict), and string (letter). + Returns a dictionary where keys are the string, and values are the count. + """ + if letter not in letter_dict: + letter_dict[letter] = 1 + elif letter in letter_dict: + letter_dict[letter] += 1 + + return letter_dict + +def draw_letters(): LETTER_POOL = { 'A': 9, 'B': 2, @@ -31,9 +44,23 @@ def draw_letters(): } hand = [] - for i in range(10): - pass - print(hand) + letters_count = {} + letters = list(LETTER_POOL.keys()) + + while len(hand) < 10: + random_letter = random.choice(letters) + letters_count = get_letter_frequency(letters_count, random_letter) + letter_limit = LETTER_POOL[random_letter] + + if letters_count[random_letter] > letter_limit: + continue + + hand.append(random_letter) + + return hand + + + # Empty list = hand # For loop to iterate over letter pool From 41b30f52d45b7c65dd524002f13ef783cad7adf5 Mon Sep 17 00:00:00 2001 From: Gabriela Ibarra Date: Mon, 28 Mar 2022 20:17:30 -0500 Subject: [PATCH 3/7] Removed pseudocode from draw_letters function --- adagrams/game.py | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index d11e8577..5e60fc29 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -57,18 +57,7 @@ def draw_letters(): hand.append(random_letter) - return hand - - - - - # Empty list = hand - # For loop to iterate over letter pool - # Iterate 10 times - # Append letter to list (hand) - # Append letter and count to dictionary - # E.g. "a", "b", "e", "f", "a" - # a: 2, b: 1 + return hand def uses_available_letters(word, letter_bank): pass From b6a6ea4c8d25365cd50e692907e88b0e25f0c81b Mon Sep 17 00:00:00 2001 From: Gabriela Ibarra Date: Tue, 29 Mar 2022 15:52:42 -0500 Subject: [PATCH 4/7] Updated score_word function. Passes all Wave 3 tests --- adagrams/game.py | 100 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 69 insertions(+), 31 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 5e60fc29..7ec7369c 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -1,9 +1,67 @@ import random +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 + } + +LETTER_POINTS = { + '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 + } + def get_letter_frequency(letter_dict, letter): """ Takes in a dictionary (letter_dict), and string (letter). - Returns a dictionary where keys are the string, and values are the count. + Returns a dictionary where keys are the letter, and values are the count. """ if letter not in letter_dict: letter_dict[letter] = 1 @@ -14,35 +72,6 @@ def get_letter_frequency(letter_dict, letter): def draw_letters(): - 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 - } - hand = [] letters_count = {} letters = list(LETTER_POOL.keys()) @@ -63,7 +92,16 @@ def uses_available_letters(word, letter_bank): pass def score_word(word): - pass + points = 0 + word_all_caps = word.upper() + + if len(word) >= 7: + points += 8 + + for letter in word_all_caps: + points += LETTER_POINTS[letter] + + return points def get_highest_word_score(word_list): pass \ No newline at end of file From 4391257b9ffcf0e112e750d0f5514c661e79be79 Mon Sep 17 00:00:00 2001 From: Gricelda Date: Tue, 29 Mar 2022 17:02:59 -0700 Subject: [PATCH 5/7] Added to score_word --- adagrams/game.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 5e60fc29..3fc664c1 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -60,10 +60,22 @@ def draw_letters(): return hand def uses_available_letters(word, letter_bank): - pass + # pass + for letter in word: + for element in letter_bank: + if element in letter: + return True + else: + return False + + def score_word(word): - pass + point_total = 0 + for letter in word: + point_total += draw_letters.get(letter) + return point_total + # pass def get_highest_word_score(word_list): pass \ No newline at end of file From e92febfa89320c8a8f32ad371e1b495a57c7499e Mon Sep 17 00:00:00 2001 From: Gabriela Ibarra Date: Thu, 31 Mar 2022 11:13:19 -0500 Subject: [PATCH 6/7] Added comments why random library was used --- adagrams/game.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/adagrams/game.py b/adagrams/game.py index 7ec7369c..7badd441 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -1,4 +1,8 @@ import random +# Imported random library to utilize random.choice() method +# choice() method returns a randomly selected element from a specified sequencee +# Used choice() to randomly select a letter from the letter pool + LETTER_POOL = { 'A': 9, 'B': 2, From c93bf5e40d18fe53225d928801dc73e56b6af89d Mon Sep 17 00:00:00 2001 From: GitHub4Gigi Date: Thu, 31 Mar 2022 17:44:50 -0700 Subject: [PATCH 7/7] Updates to Wave 2 and Wave 4 --- adagrams/game.py | 68 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 52 insertions(+), 16 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 67de7a62..b5f46516 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -1,3 +1,4 @@ +from operator import truediv import random LETTER_POOL = { 'A': 9, @@ -89,24 +90,33 @@ def draw_letters(): return hand def uses_available_letters(word, letter_bank): - # pass - for letter in word: - for element in letter_bank: - if element in letter: - return True - else: - return False + letter_frequency = {} + + + for char in letter_bank: + if char in letter_frequency: + letter_frequency[char] += 1 + else: + letter_frequency[char] = 1 + + for letter in word.upper(): + # print(letter) + # print(letter_bank[letter]) + if not letter in letter_bank: + return False + if letter_frequency[letter] == 0: + return False + if letter in letter_bank: + letter_frequency[letter] -= 1 + else: + continue + return True + def score_word(word): -# <<<<<<< HEAD -# # point_total = 0 -# # for letter in word: -# # point_total += draw_letters.get(letter) -# # return point_total -# # # pass -# ======= + points = 0 word_all_caps = word.upper() @@ -117,7 +127,33 @@ def score_word(word): points += LETTER_POINTS[letter] return points -# >>>>>>> b6a6ea4c8d25365cd50e692907e88b0e25f0c81b + def get_highest_word_score(word_list): - pass \ No newline at end of file + highest_score = 0 + highest_word = "" + + + + for word in word_list: + score = score_word(word) + + if score > highest_score: + highest_score = score + highest_word = word + if score == highest_score: + if len(word) == len(highest_word): + continue + if len(word) == 10: + highest_word = word + highest_score = score + if len(word) < len(highest_word) and len(highest_word) < 10: + highest_score = score + highest_word = word + + + + + + return (highest_word, highest_score) +