From 60f55c933fb639435fd51d29bf1dcf17230d42d5 Mon Sep 17 00:00:00 2001 From: Monica Date: Mon, 20 Mar 2023 21:33:32 -0700 Subject: [PATCH 01/14] Draw letters is working --- adagrams/game.py | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/adagrams/game.py b/adagrams/game.py index 5fb37b11..535ad68f 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -1,5 +1,47 @@ +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 +} + def draw_letters(): - pass + used_letters = {} + letters = [] + possible_letters = list(LETTER_POOL.keys()) + + while len(letters) <= 9: + random_int = random.randint(0, 25) + random_l = possible_letters[random_int] + if not used_letters.get(random_l) == LETTER_POOL[random_l]: + if (not used_letters.get(random_l)): + used_letters[random_l] = 0 + used_letters[random_l] += 1 + letters.append(random_l) + + return letters def uses_available_letters(word, letter_bank): pass From 617cfe8a8cb11ef4eaa75287b7e033299e5c5c87 Mon Sep 17 00:00:00 2001 From: Monica Date: Tue, 21 Mar 2023 16:13:30 -0700 Subject: [PATCH 02/14] Finished test wave 1 --- adagrams/game.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/adagrams/game.py b/adagrams/game.py index 535ad68f..92870fe3 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -1,3 +1,5 @@ +import random + LETTER_POOL = { 'A': 9, 'B': 2, @@ -43,8 +45,25 @@ def draw_letters(): return letters + + def uses_available_letters(word, letter_bank): - pass + letter_bank_dict = {} + + for character in word: + if character in letter_bank and word.count(character) <= letter_bank_dict[character]: + return True + else: + return False + + + # for character in letter_bank: + # if character in letter_bank_dict.keys(): + # letter_bank_dict[character] += 1 + # else: + # letter_bank_dict[character] = 1 + + def score_word(word): pass From f76f4f6d70c4340dbbe836b0dec5b7ba28d44b1c Mon Sep 17 00:00:00 2001 From: Monica Date: Tue, 21 Mar 2023 21:58:33 -0700 Subject: [PATCH 03/14] Updated function uses_available letter. Now passes 3/5 wave 2 tests --- adagrams/game.py | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 92870fe3..966b4e23 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -49,19 +49,31 @@ def draw_letters(): def uses_available_letters(word, letter_bank): letter_bank_dict = {} + is_valid = False for character in word: - if character in letter_bank and word.count(character) <= letter_bank_dict[character]: - return True + if character in letter_bank: + is_valid = True else: + is_valid = False + + if character in letter_bank_dict.keys(): + letter_bank_dict[character] += 1 + else: + letter_bank_dict[character] = 1 + + character_frequency_word = word.count(character) + character_frequency_dict = letter_bank_dict[character] + + if character_frequency_word <= character_frequency_dict: + return True + else: + if character not in letter_bank or character_frequency_word >= character_frequency_dict: return False + + return - # for character in letter_bank: - # if character in letter_bank_dict.keys(): - # letter_bank_dict[character] += 1 - # else: - # letter_bank_dict[character] = 1 From d101dd838f68e23b276a5352eff7ecbb5cae7fd9 Mon Sep 17 00:00:00 2001 From: Monica Date: Wed, 22 Mar 2023 14:56:16 -0700 Subject: [PATCH 04/14] Added uppercase variable to pass last test wave on 2 git push q clear --- adagrams/game.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 966b4e23..cf8ddb65 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -48,21 +48,24 @@ def draw_letters(): def uses_available_letters(word, letter_bank): + upper_word = word.upper() letter_bank_dict = {} is_valid = False - for character in word: + for character in upper_word: if character in letter_bank: is_valid = True else: is_valid = False + return is_valid + if character in letter_bank_dict.keys(): letter_bank_dict[character] += 1 else: letter_bank_dict[character] = 1 - character_frequency_word = word.count(character) + character_frequency_word = upper_word.count(character) character_frequency_dict = letter_bank_dict[character] if character_frequency_word <= character_frequency_dict: @@ -70,9 +73,8 @@ def uses_available_letters(word, letter_bank): else: if character not in letter_bank or character_frequency_word >= character_frequency_dict: return False - - return - + + From c5327565a9a63c74ff513cff0f542ee51179267f Mon Sep 17 00:00:00 2001 From: Monica Date: Wed, 22 Mar 2023 15:20:56 -0700 Subject: [PATCH 05/14] Passed test wave 3!! --- adagrams/game.py | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/adagrams/game.py b/adagrams/game.py index cf8ddb65..5b4c3a48 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -80,7 +80,46 @@ def uses_available_letters(word, letter_bank): def score_word(word): - pass + upper_word = word.upper() + total_points = 0 + points_dict = { + '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 } + + for character in upper_word: + total_points += points_dict[character] + + if len(upper_word) >= 7: + total_points += 8 + else: + total_points += 0 + return total_points + + def get_highest_word_score(word_list): pass \ No newline at end of file From 0118bb989bf4ed7f927158477f4279ccaea11098 Mon Sep 17 00:00:00 2001 From: Monica Date: Thu, 23 Mar 2023 16:42:52 -0700 Subject: [PATCH 06/14] Created score dict & function to find highest score --- adagrams/game.py | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 5b4c3a48..b8d96c6c 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -73,10 +73,6 @@ def uses_available_letters(word, letter_bank): else: if character not in letter_bank or character_frequency_word >= character_frequency_dict: return False - - - - def score_word(word): @@ -122,4 +118,24 @@ def score_word(word): def get_highest_word_score(word_list): - pass \ No newline at end of file + highest_score = 0 + score_dict = {} + winning_word = "" + + for word in word_list: + scorez = score_word(word) + score_dict[word] = scorez + winning_word = word + + for word, scorez in score_dict.items(): + if scorez > highest_score: + highest_score = scorez + + + winner = (winning_word, highest_score) + + + return winner + + + From 0b2ea4dd831351cda6a0c488a943550c708aeb45 Mon Sep 17 00:00:00 2001 From: Monica Date: Thu, 23 Mar 2023 18:40:07 -0700 Subject: [PATCH 07/14] Worked on tie breaker loop --- adagrams/game.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/adagrams/game.py b/adagrams/game.py index b8d96c6c..e1d43f29 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -121,16 +121,27 @@ def get_highest_word_score(word_list): highest_score = 0 score_dict = {} winning_word = "" + tie_breaker = {} + #calculates word & score & adds to score_dict for word in word_list: scorez = score_word(word) score_dict[word] = scorez winning_word = word + # assigns highest score to highest_score for word, scorez in score_dict.items(): if scorez > highest_score: highest_score = scorez - + + # checks for tie breaker + for word in score_dict: + if len(word) == len(winning_word): + winning_word = + + + + winner = (winning_word, highest_score) From 34491b267175653064ca6036de77bcf93cef03f4 Mon Sep 17 00:00:00 2001 From: Monica Date: Fri, 24 Mar 2023 09:31:53 -0700 Subject: [PATCH 08/14] adagrams --- adagrams/game.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adagrams/game.py b/adagrams/game.py index e1d43f29..f64fc2b1 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -127,12 +127,12 @@ def get_highest_word_score(word_list): for word in word_list: scorez = score_word(word) score_dict[word] = scorez - winning_word = word # assigns highest score to highest_score for word, scorez in score_dict.items(): if scorez > highest_score: highest_score = scorez + winning_word = word # checks for tie breaker for word in score_dict: From e7dd1092b393581fce03498544a10985eb1c8d1c Mon Sep 17 00:00:00 2001 From: Monica Date: Sat, 8 Apr 2023 18:58:43 -0700 Subject: [PATCH 09/14] changed points_dict to constant --- adagrams/game.py | 60 +++++++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index f64fc2b1..1a632e41 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -29,6 +29,34 @@ 'Z': 1 } +POINTS_DICT = { + '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 draw_letters(): used_letters = {} letters = [] @@ -78,36 +106,10 @@ def uses_available_letters(word, letter_bank): def score_word(word): upper_word = word.upper() total_points = 0 - points_dict = { - '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 } + for character in upper_word: - total_points += points_dict[character] + total_points += POINTS_DICT[character] if len(upper_word) >= 7: total_points += 8 @@ -134,7 +136,7 @@ def get_highest_word_score(word_list): highest_score = scorez winning_word = word - # checks for tie breaker + #checks for tie breaker for word in score_dict: if len(word) == len(winning_word): winning_word = From 149bdd05ec3e5e12cd0832371d07c0e3f7e4a2cf Mon Sep 17 00:00:00 2001 From: Monica Date: Tue, 11 Apr 2023 18:21:42 -0700 Subject: [PATCH 10/14] DRYd up for character in upperword loop in uses_available_letters --- adagrams/game.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 1a632e41..1b8046b8 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -78,14 +78,11 @@ def draw_letters(): def uses_available_letters(word, letter_bank): upper_word = word.upper() letter_bank_dict = {} - is_valid = False + for character in upper_word: - if character in letter_bank: - is_valid = True - else: - is_valid = False - return is_valid + if character not in letter_bank: + return False if character in letter_bank_dict.keys(): From 8f74371aab1de8e9efe44644ae27d7a978f154ec Mon Sep 17 00:00:00 2001 From: Monica Date: Wed, 12 Apr 2023 13:35:39 -0700 Subject: [PATCH 11/14] reworked wave 1 --- adagrams/game.py | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 1b8046b8..29ba6b22 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -59,20 +59,21 @@ def draw_letters(): used_letters = {} - letters = [] - possible_letters = list(LETTER_POOL.keys()) + letters_hand = [] + possible_letters = [] - while len(letters) <= 9: - random_int = random.randint(0, 25) - random_l = possible_letters[random_int] - if not used_letters.get(random_l) == LETTER_POOL[random_l]: - if (not used_letters.get(random_l)): - used_letters[random_l] = 0 - used_letters[random_l] += 1 - letters.append(random_l) - - return letters + #creates possible_letters list + for key, value in LETTER_POOL.items(): + for i in range(value): + possible_letters.append(key) + #pull 10 letters + while len(letters_hand) <= 9: + random_int = random.randint(0,len(possible_letters)- 1) + chosen_letter = possible_letters[random_int] + letters_hand.append(chosen_letter) + possible_letters.remove(chosen_letter) + return letters_hand def uses_available_letters(word, letter_bank): @@ -134,9 +135,9 @@ def get_highest_word_score(word_list): winning_word = word #checks for tie breaker - for word in score_dict: - if len(word) == len(winning_word): - winning_word = + # for word in score_dict: + # if len(word) == len(winning_word): + # winning_word = From 09d1a48259ca12ebdec7a04f44d7acc5c1ba298f Mon Sep 17 00:00:00 2001 From: Monica Date: Wed, 12 Apr 2023 14:07:03 -0700 Subject: [PATCH 12/14] cleaned up wave 2 --- adagrams/game.py | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 29ba6b22..26d7406b 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -78,27 +78,14 @@ def draw_letters(): def uses_available_letters(word, letter_bank): upper_word = word.upper() - letter_bank_dict = {} - + letter_bank_copy = letter_bank.copy() for character in upper_word: - if character not in letter_bank: - return False - - - if character in letter_bank_dict.keys(): - letter_bank_dict[character] += 1 - else: - letter_bank_dict[character] = 1 - - character_frequency_word = upper_word.count(character) - character_frequency_dict = letter_bank_dict[character] - - if character_frequency_word <= character_frequency_dict: - return True - else: - if character not in letter_bank or character_frequency_word >= character_frequency_dict: + if character not in letter_bank_copy: return False + else: + letter_bank_copy.remove(character) + return True def score_word(word): @@ -135,9 +122,9 @@ def get_highest_word_score(word_list): winning_word = word #checks for tie breaker - # for word in score_dict: - # if len(word) == len(winning_word): - # winning_word = + for word in score_dict: + if len(word) == len(winning_word): + pass From 722b7b8c0960e4ab24b4bb95d84559411057fecc Mon Sep 17 00:00:00 2001 From: Monica Date: Thu, 13 Apr 2023 20:23:31 -0700 Subject: [PATCH 13/14] worked on some logic for wave 4 --- adagrams/game.py | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 26d7406b..224705cc 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -115,25 +115,20 @@ def get_highest_word_score(word_list): scorez = score_word(word) score_dict[word] = scorez - # assigns highest score to highest_score + # # assigns highest score to highest_score for word, scorez in score_dict.items(): if scorez > highest_score: highest_score = scorez - winning_word = word + winning_word = word + winnerzzz = (winning_word, highest_score) + elif scorez == scorez: + + return winnerzzz - #checks for tie breaker - for word in score_dict: - if len(word) == len(winning_word): - pass - - - - - - winner = (winning_word, highest_score) - - - return winner - - + # if 2 scorez are the same: + # len of shortest word wins + # elif len(word) == 10 + # that word wins + # elif if len(word) == len(word) and score ==score: + # pick the first occuring \ No newline at end of file From e913eab1368e7c31c44dbb275de646e7f7cda151 Mon Sep 17 00:00:00 2001 From: Monica Date: Fri, 14 Apr 2023 16:12:37 -0700 Subject: [PATCH 14/14] passing all tests git status git push origin --- adagrams/game.py | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 224705cc..947521db 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -115,16 +115,30 @@ def get_highest_word_score(word_list): scorez = score_word(word) score_dict[word] = scorez - # # assigns highest score to highest_score + # assigns highest_score & winning_word for word, scorez in score_dict.items(): if scorez > highest_score: highest_score = scorez winning_word = word - winnerzzz = (winning_word, highest_score) - elif scorez == scorez: - - return winnerzzz + + elif scorez == highest_score: + if len(winning_word) == 10: + pass + elif len(word) == 10: + winning_word = word + elif len(word) < len(winning_word): + winning_word = word + elif len(word) == len(winning_word): + pass + return (winning_word, highest_score) + + + + + + + #indexing into a tuple # if 2 scorez are the same: # len of shortest word wins