From 89922fc9031fda87131515f79bab89a20fd75aa6 Mon Sep 17 00:00:00 2001 From: Geiselle Holt Date: Tue, 27 Sep 2022 18:25:50 -0600 Subject: [PATCH 1/7] Wave 1 attempt 1 Geiselle --- adagrams/game.py | 47 ++++++++++++++++++++++++++++++++++++++++++++++- main.py | 2 +- 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 5fb37b11..072cf2f4 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -1,5 +1,50 @@ +import random +import string +from collections import Counter + 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, + } + + letters = string.ascii_lowercase + drawn_letters = random.choices(letters,k=10) + + count = Counter(drawn_letters) + + for each_letter in drawn_letters: + if count[each_letter] > letter_pool[each_letter]: + # each_letter = "e" + # drawn_letters = random.choices(letters,k=10) + + return drawn_letters + def uses_available_letters(word, letter_bank): pass diff --git a/main.py b/main.py index bcd6ab0b..9bc645e6 100644 --- a/main.py +++ b/main.py @@ -13,7 +13,7 @@ def wave_1_run_game(): display_retry_instructions() continue_input = input() game_continue = continue_input == "y" - + display_goodbye_message() def wave_2_run_game(): From ed7aa2a1f8cbd06b26933a6ce200ca6bd7bf95b1 Mon Sep 17 00:00:00 2001 From: Geiselle Holt Date: Tue, 27 Sep 2022 20:25:49 -0600 Subject: [PATCH 2/7] Wave 1 all test passed --- adagrams/game.py | 75 ++++++++++++++++++++++++------------------------ 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 072cf2f4..c2eeec03 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -1,47 +1,48 @@ -import random import string -from collections import Counter +from random import sample +# from collections import Counter 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, + 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 } +# APPROACH # 1 + # letters = string.ascii_lowercase + # drawn_letters = random.choices(letters,k=10) - letters = string.ascii_lowercase - drawn_letters = random.choices(letters,k=10) - - count = Counter(drawn_letters) + # count = Counter(drawn_letters) - for each_letter in drawn_letters: - if count[each_letter] > letter_pool[each_letter]: - # each_letter = "e" - # drawn_letters = random.choices(letters,k=10) + # for each_letter in drawn_letters: + # if count[each_letter] > letter_pool[each_letter]: + # drawn_letters = random.choices(letters,k=10) + + drawn_letters = sample(LETTER_POOL.keys(), k=10, counts=LETTER_POOL.values()) return drawn_letters From 517d8b4a0e2b3e0a03e0c0f11e8f6b2f321be1dc Mon Sep 17 00:00:00 2001 From: Geiselle Holt Date: Wed, 28 Sep 2022 05:51:33 -0600 Subject: [PATCH 3/7] Wave 2 passed all tests --- adagrams/game.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index c2eeec03..f63fe359 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -1,6 +1,6 @@ import string from random import sample -# from collections import Counter +from collections import Counter def draw_letters(): @@ -48,7 +48,23 @@ def draw_letters(): def uses_available_letters(word, letter_bank): - pass + + word = word.upper() + + for letter in word: + if letter not in letter_bank: + return False + + count_word = Counter(word) + count_letter_bank = Counter(letter_bank) + + for k, v in count_word.items(): + if k in count_letter_bank: + if v <= count_letter_bank[k]: + return True + + return False + def score_word(word): pass From 47818e042f9a0bb17d8974e15324ca75d0d32b29 Mon Sep 17 00:00:00 2001 From: Geiselle Holt Date: Wed, 28 Sep 2022 06:09:33 -0600 Subject: [PATCH 4/7] Wave 3 all tests passed --- adagrams/game.py | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/adagrams/game.py b/adagrams/game.py index f63fe359..8b3c483c 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -67,7 +67,42 @@ def uses_available_letters(word, letter_bank): def score_word(word): - pass + LETTERS_VALUES = { + "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, + } + word = word.upper() + word_value = 0 + for letter in word: + if letter in LETTERS_VALUES: + word_value += LETTERS_VALUES[letter] + if len(word) > 6: + word_value += 8 + return word_value def get_highest_word_score(word_list): pass \ No newline at end of file From 84bd7d0d5262e55841e24165f96d38b8601e5b95 Mon Sep 17 00:00:00 2001 From: Geiselle Holt Date: Wed, 28 Sep 2022 19:16:51 -0600 Subject: [PATCH 5/7] Wave 4 attempt 1 --- adagrams/game.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/adagrams/game.py b/adagrams/game.py index 8b3c483c..256d3484 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -105,4 +105,21 @@ def score_word(word): return word_value def get_highest_word_score(word_list): - pass \ No newline at end of file + + score_list = [] + for word in word_list: + score = score_word(word) + score_list.append(score) + + word_score_tuple = list(zip(word_list, score_list)) + + # winning_word = max(word_score_tuple) + + sorted_tuple = sorted(word_score_tuple, key=lambda t: t[1], reverse = True) + + winning_word = sorted_tuple[0] + + return winning_word + + + return winning_word \ No newline at end of file From d95609aa95c2847bbeb5dea34760819c828d1f21 Mon Sep 17 00:00:00 2001 From: Geiselle Holt Date: Wed, 28 Sep 2022 21:20:58 -0600 Subject: [PATCH 6/7] Wave 4 all tests passed --- adagrams/game.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 256d3484..aabc6165 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -113,13 +113,16 @@ def get_highest_word_score(word_list): word_score_tuple = list(zip(word_list, score_list)) - # winning_word = max(word_score_tuple) - sorted_tuple = sorted(word_score_tuple, key=lambda t: t[1], reverse = True) - winning_word = sorted_tuple[0] + if sorted_tuple[0][1] == sorted_tuple[1][1]: + if len(sorted_tuple[0][0]) == 10: + winning_word = sorted_tuple[0] + elif len(sorted_tuple[1][0]) == 10: + winning_word = sorted_tuple[1] + elif len(sorted_tuple[0][0]) > len(sorted_tuple[1][0]): + winning_word = sorted_tuple[1] + elif len(sorted_tuple[0][0]) < len(sorted_tuple[1][0]): + winning_word = sorted_tuple[0] - return winning_word - - return winning_word \ No newline at end of file From 14061ae178dc2fccaf27ca14731ce3642a070fd6 Mon Sep 17 00:00:00 2001 From: Geiselle Holt Date: Thu, 29 Sep 2022 21:55:45 -0600 Subject: [PATCH 7/7] Refactoring --- adagrams/game.py | 39 +++++++++++++++------------------------ 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index aabc6165..0a63a046 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -32,19 +32,10 @@ def draw_letters(): 'Y': 2, 'Z': 1 } -# APPROACH # 1 - # letters = string.ascii_lowercase - # drawn_letters = random.choices(letters,k=10) - # count = Counter(drawn_letters) - - # for each_letter in drawn_letters: - # if count[each_letter] > letter_pool[each_letter]: - # drawn_letters = random.choices(letters,k=10) + letter_bank = sample(LETTER_POOL.keys(), k=10, counts=LETTER_POOL.values()) - drawn_letters = sample(LETTER_POOL.keys(), k=10, counts=LETTER_POOL.values()) - - return drawn_letters + return letter_bank def uses_available_letters(word, letter_bank): @@ -111,18 +102,18 @@ def get_highest_word_score(word_list): score = score_word(word) score_list.append(score) - word_score_tuple = list(zip(word_list, score_list)) - - sorted_tuple = sorted(word_score_tuple, key=lambda t: t[1], reverse = True) - winning_word = sorted_tuple[0] - if sorted_tuple[0][1] == sorted_tuple[1][1]: - if len(sorted_tuple[0][0]) == 10: - winning_word = sorted_tuple[0] - elif len(sorted_tuple[1][0]) == 10: - winning_word = sorted_tuple[1] - elif len(sorted_tuple[0][0]) > len(sorted_tuple[1][0]): - winning_word = sorted_tuple[1] - elif len(sorted_tuple[0][0]) < len(sorted_tuple[1][0]): - winning_word = sorted_tuple[0] + word_score_tuples = list(zip(word_list, score_list)) + + sorted_tuples = sorted(word_score_tuples, key=lambda t: -t[1]) + winning_word = sorted_tuples[0] + if sorted_tuples[0][1] == sorted_tuples[1][1]: + if len(sorted_tuples[0][0]) == 10: + winning_word = sorted_tuples[0] + elif len(sorted_tuples[1][0]) == 10: + winning_word = sorted_tuples[1] + elif len(sorted_tuples[0][0]) > len(sorted_tuples[1][0]): + winning_word = sorted_tuples[1] + elif len(sorted_tuples[0][0]) < len(sorted_tuples[1][0]): + winning_word = sorted_tuples[0] return winning_word \ No newline at end of file