From b577367d381dfb4f00787d52954ac363737f3491 Mon Sep 17 00:00:00 2001 From: Marie Keefer Date: Mon, 26 Sep 2022 14:20:10 -0400 Subject: [PATCH 01/20] Adds time zones to README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6a066368..467c9e91 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # AdaGrams + ## Skills Assessed From 36d97b32512fb5119ae1d8399902d4fe4629a0b4 Mon Sep 17 00:00:00 2001 From: Marie Keefer Date: Mon, 26 Sep 2022 15:09:26 -0400 Subject: [PATCH 02/20] work on first function --- adagrams/game.py | 12 ++++++++++++ tests/test_wave_01.py | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 5fb37b11..f2675fc4 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -1,5 +1,17 @@ +from tests.test_wave_01 import LETTER_POOL + + def draw_letters(): pass +# create word pool list +# use while loop to loop through and randomly select letters using choice() +# appending the letter strings to an empty list + word_pool_list = [] + for letter in LETTER_POOL: + word_pool_list.append(LETTER_POOL["letter"]) + print(word_pool_list) + return word_pool_list + def uses_available_letters(word, letter_bank): pass diff --git a/tests/test_wave_01.py b/tests/test_wave_01.py index 25ef73e7..6e769715 100644 --- a/tests/test_wave_01.py +++ b/tests/test_wave_01.py @@ -38,7 +38,7 @@ def test_draw_letters_draws_ten(): # Assert assert len(letters) == 10 -def test_draw_letters_is_list_of_letter_strings(): +# def test_draw_letters_is_list_of_letter_strings(): # Arrange/Act letters = draw_letters() @@ -49,7 +49,7 @@ def test_draw_letters_is_list_of_letter_strings(): assert type(elem) == str assert len(elem) == 1 -def test_letter_not_selected_too_many_times(): +# def test_letter_not_selected_too_many_times(): for i in range(1000): # Arrange/Act From c884eb2a8f9acbda453532a0748490469feda57c Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Mon, 26 Sep 2022 15:20:50 -0600 Subject: [PATCH 03/20] modified game.py file so we would stop getting a discovery error, aka an error saying our tests could not be found. --- README.md | 2 +- adagrams/game.py | 13 +------------ tests/test_wave_01.py | 4 ++-- 3 files changed, 4 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 467c9e91..f2a26b0f 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # AdaGrams - +#-- Sunny: Mountain time. Marie: Eastern ## Skills Assessed diff --git a/adagrams/game.py b/adagrams/game.py index f2675fc4..a4cc50b8 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -1,17 +1,6 @@ -from tests.test_wave_01 import LETTER_POOL - - def draw_letters(): + pass -# create word pool list -# use while loop to loop through and randomly select letters using choice() -# appending the letter strings to an empty list - word_pool_list = [] - for letter in LETTER_POOL: - word_pool_list.append(LETTER_POOL["letter"]) - print(word_pool_list) - return word_pool_list - def uses_available_letters(word, letter_bank): pass diff --git a/tests/test_wave_01.py b/tests/test_wave_01.py index 6e769715..25ef73e7 100644 --- a/tests/test_wave_01.py +++ b/tests/test_wave_01.py @@ -38,7 +38,7 @@ def test_draw_letters_draws_ten(): # Assert assert len(letters) == 10 -# def test_draw_letters_is_list_of_letter_strings(): +def test_draw_letters_is_list_of_letter_strings(): # Arrange/Act letters = draw_letters() @@ -49,7 +49,7 @@ def test_draw_letters_draws_ten(): assert type(elem) == str assert len(elem) == 1 -# def test_letter_not_selected_too_many_times(): +def test_letter_not_selected_too_many_times(): for i in range(1000): # Arrange/Act From 7c1ac3bd7736fe7a1c83fda52b7fe13a6c87ac2d Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Mon, 26 Sep 2022 15:32:36 -0600 Subject: [PATCH 04/20] modified function draw_letters, tests 1 and 2 in Wave 01 are now passing --- adagrams/game.py | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/adagrams/game.py b/adagrams/game.py index a4cc50b8..fed0f7af 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -1,6 +1,49 @@ +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 +} + + def draw_letters(): + word_pool_list = [] + random_string = [] + + for letter in LETTER_POOL: + for num in range(0,(LETTER_POOL[letter])): + word_pool_list.append(letter) + + + for num in range(0,10): + random_letter = random.choice(word_pool_list) + random_string.append(random_letter) - pass + + return random_string def uses_available_letters(word, letter_bank): pass From b1576bd8874553b8b5628e43c902db6b50e8ab7c Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Mon, 26 Sep 2022 17:27:25 -0600 Subject: [PATCH 05/20] modified function draw_letters now all tests in wave 01 pass --- adagrams/game.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index fed0f7af..172aefe0 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -30,20 +30,23 @@ def draw_letters(): - word_pool_list = [] - random_string = [] + letter_pool_list = [] + my_ten_letters = [] for letter in LETTER_POOL: for num in range(0,(LETTER_POOL[letter])): - word_pool_list.append(letter) - - - for num in range(0,10): - random_letter = random.choice(word_pool_list) - random_string.append(random_letter) - - - return random_string + letter_pool_list.append(letter) + + while len(my_ten_letters) < 10: + for num in range(0,10): + random_letter = random.choice(letter_pool_list) + my_ten_letters.append(random_letter) + my_string_count = my_ten_letters.count(random_letter) + word_pool_count = letter_pool_list.count(random_letter) + if my_string_count > word_pool_count: + my_ten_letters.remove(random_letter) + + return my_ten_letters def uses_available_letters(word, letter_bank): pass From 0a9c620fbd7e3a4e147f98743f96dfb0534b4ce3 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Mon, 26 Sep 2022 18:37:35 -0600 Subject: [PATCH 06/20] added comments to explain code, and also added a body to the function uses_available_letters, now tests 1,2, and 3 pass in wave 02 --- adagrams/game.py | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 172aefe0..a17b369b 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -29,27 +29,37 @@ } + def draw_letters(): letter_pool_list = [] my_ten_letters = [] for letter in LETTER_POOL: - for num in range(0,(LETTER_POOL[letter])): + for num in range(0,(LETTER_POOL[letter])): #letter_pool[letter] accesses the integer values of each letter letter_pool_list.append(letter) - while len(my_ten_letters) < 10: + while len(my_ten_letters) < 10: #loop will not stop until we have a ten letter string for num in range(0,10): - random_letter = random.choice(letter_pool_list) - my_ten_letters.append(random_letter) - my_string_count = my_ten_letters.count(random_letter) - word_pool_count = letter_pool_list.count(random_letter) - if my_string_count > word_pool_count: + random_letter = random.choice(letter_pool_list) #selects a random letter from letter pool + my_ten_letters.append(random_letter) # adds the random letter to a list + my_string_count = my_ten_letters.count(random_letter) #counts how many times our random letter appears in our ten letter string + word_pool_count = letter_pool_list.count(random_letter) # counts how many times our random letter appears in our letter pool + if my_string_count > word_pool_count: # if the count for a letter in our ten letter strings exceeds the count for the same letter in letter pool we remove it. my_ten_letters.remove(random_letter) return my_ten_letters def uses_available_letters(word, letter_bank): - pass + + letter_results = [] + for letter in word: + if letter not in letter_bank: + letter_results.append("f") # "f" in my head stands for false + + if "f" in letter_results: + return False + else: + return True def score_word(word): pass From 1d8376b471a3c328361345466f37dd64060e077e Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Tue, 27 Sep 2022 09:31:22 -0600 Subject: [PATCH 07/20] modified function uses_available_letters, test 4 in wave 02 now passes --- adagrams/game.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/adagrams/game.py b/adagrams/game.py index a17b369b..df771621 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -55,12 +55,26 @@ def uses_available_letters(word, letter_bank): for letter in word: if letter not in letter_bank: letter_results.append("f") # "f" in my head stands for false - + if "f" in letter_results: + return False + else: + return True + + for letter in word: + count_pool_letter = letter_bank.count(letter) + count_word_letter = word.count(letter) + if count_word_letter > count_pool_letter: + return False + else: + return True + + if "f" in letter_results: return False else: return True + def score_word(word): pass From cfa0b9fbecadef2a02a55732f6a86b68a76b57d9 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Tue, 27 Sep 2022 10:10:33 -0600 Subject: [PATCH 08/20] added an idea for uses_available_words function to solve for test 5 using upper method --- adagrams/game.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index df771621..9a05d5d2 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -50,7 +50,7 @@ def draw_letters(): return my_ten_letters def uses_available_letters(word, letter_bank): - + letter_results = [] for letter in word: if letter not in letter_bank: @@ -67,13 +67,9 @@ def uses_available_letters(word, letter_bank): return False else: return True - - - if "f" in letter_results: - return False - else: - return True - + + #word_all_caps = word.upper() + #return word_all_caps def score_word(word): pass From f8175e18e6f124e8c7a4c89c1f3a5a134c9e6a17 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Tue, 27 Sep 2022 15:19:48 -0600 Subject: [PATCH 09/20] modified function uses_available_letters all tests in wave 02 pass --- adagrams/game.py | 1 + 1 file changed, 1 insertion(+) diff --git a/adagrams/game.py b/adagrams/game.py index 9a05d5d2..c436dc0d 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -51,6 +51,7 @@ def draw_letters(): def uses_available_letters(word, letter_bank): + word = word.upper() letter_results = [] for letter in word: if letter not in letter_bank: From 3ad05d8b5d6aa976484801f781f8335884067320 Mon Sep 17 00:00:00 2001 From: Marie Keefer Date: Tue, 27 Sep 2022 19:50:59 -0400 Subject: [PATCH 10/20] passes all tests in wave 3 --- adagrams/game.py | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 9a05d5d2..cfaf6032 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -27,6 +27,15 @@ 'Y': 2, 'Z': 1 } +score_chart ={ + ('A', 'E', 'I', 'O', 'U', 'L', 'N', 'R', 'S', 'T'): 1, + ('D', 'G'): 2, + ('B', 'C', 'M', 'P'): 3, + ('F', 'H', 'V', 'W', 'Y'): 4, + ('K'): 5, + ('J', 'X'): 8, + ('Q', 'Z'): 10 +} @@ -38,6 +47,7 @@ def draw_letters(): for num in range(0,(LETTER_POOL[letter])): #letter_pool[letter] accesses the integer values of each letter letter_pool_list.append(letter) + while len(my_ten_letters) < 10: #loop will not stop until we have a ten letter string for num in range(0,10): random_letter = random.choice(letter_pool_list) #selects a random letter from letter pool @@ -51,6 +61,7 @@ def draw_letters(): def uses_available_letters(word, letter_bank): + word = word.upper() letter_results = [] for letter in word: if letter not in letter_bank: @@ -68,11 +79,24 @@ def uses_available_letters(word, letter_bank): else: return True - #word_all_caps = word.upper() - #return word_all_caps + # word_all_caps = word.upper() + # return word_all_caps def score_word(word): - pass + word_score = 0 + word = word.upper() + + if len(word) == 0: + return word_score + + if len(word) in range(7, 11): + word_score += 8 + + for letter in word: + for key in score_chart: + if letter in key: + word_score += score_chart.get(key) + return word_score def get_highest_word_score(word_list): pass \ No newline at end of file From 398a454dc91ac041b73b6fe59f0da5205493fb4b Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Wed, 28 Sep 2022 15:58:56 -0600 Subject: [PATCH 11/20] created function get_highest_word_score tests 1,2,4,5,and 7 pass in wave 04 --- adagrams/game.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/adagrams/game.py b/adagrams/game.py index cfaf6032..e116cdb5 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -99,4 +99,15 @@ def score_word(word): return word_score def get_highest_word_score(word_list): - pass \ No newline at end of file + + score_dict = {} + for word in word_list: + score = score_word(word) #this returns an int + score_dict[word] = score + + highest_score_value = max(score_dict.values()) + highest_score_key = max(score_dict, key=score_dict.get) + + word_tupl = (highest_score_key, highest_score_value) + + return word_tupl \ No newline at end of file From 3fea01067522928faf63d1c402baff40ac71c6a1 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Thu, 29 Sep 2022 16:06:14 -0600 Subject: [PATCH 12/20] modified function get_highest_word_score, all tests in wave 04 pass, except for test 5 and 6 --- adagrams/game.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index e116cdb5..dc8f9cd7 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -106,8 +106,23 @@ def get_highest_word_score(word_list): score_dict[word] = score highest_score_value = max(score_dict.values()) - highest_score_key = max(score_dict, key=score_dict.get) + #highest_score_key = max(score_dict, key=score_dict.get) - word_tupl = (highest_score_key, highest_score_value) + highest_scores = [] - return word_tupl \ No newline at end of file + for dict in score_dict.items(): + if dict[1] == highest_score_value: + highest_scores.append(dict) + + shortest_word_length = len(highest_scores[0][0]) + shortest_word = highest_scores[0][0] + + if len(highest_scores) > 1: + for word, score in highest_scores: + if len(word) < shortest_word_length: + shortest_word_length = len(word) + shortest_word = word + + #word_tupl = (highest_score_key, highest_score_value) + + return (shortest_word, highest_score_value) \ No newline at end of file From 08c9f4b4702ca9c5543e666f636a01f6fcd48fd0 Mon Sep 17 00:00:00 2001 From: Marie Keefer Date: Thu, 29 Sep 2022 18:21:35 -0400 Subject: [PATCH 13/20] additional work on wave four --- adagrams/game.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/adagrams/game.py b/adagrams/game.py index e116cdb5..032108b4 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -1,3 +1,4 @@ +from multiprocessing import current_process import random LETTER_POOL = { 'A': 9, @@ -99,14 +100,16 @@ def score_word(word): return word_score def get_highest_word_score(word_list): - + score_dict = {} + current_val = 0 for word in word_list: score = score_word(word) #this returns an int score_dict[word] = score highest_score_value = max(score_dict.values()) highest_score_key = max(score_dict, key=score_dict.get) + word_tupl = (highest_score_key, highest_score_value) From b26ed6f63916c4f44d98ba01b86d3fd028179043 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Thu, 29 Sep 2022 16:49:41 -0600 Subject: [PATCH 14/20] modified get highest_word_score function all tests in wave 04 pass --- adagrams/game.py | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index b2d2d855..ac2d7d30 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -45,17 +45,17 @@ def draw_letters(): my_ten_letters = [] for letter in LETTER_POOL: - for num in range(0,(LETTER_POOL[letter])): #letter_pool[letter] accesses the integer values of each letter + for num in range(0,(LETTER_POOL[letter])): letter_pool_list.append(letter) - while len(my_ten_letters) < 10: #loop will not stop until we have a ten letter string + while len(my_ten_letters) < 10: for num in range(0,10): - random_letter = random.choice(letter_pool_list) #selects a random letter from letter pool - my_ten_letters.append(random_letter) # adds the random letter to a list - my_string_count = my_ten_letters.count(random_letter) #counts how many times our random letter appears in our ten letter string - word_pool_count = letter_pool_list.count(random_letter) # counts how many times our random letter appears in our letter pool - if my_string_count > word_pool_count: # if the count for a letter in our ten letter strings exceeds the count for the same letter in letter pool we remove it. + random_letter = random.choice(letter_pool_list) + my_ten_letters.append(random_letter) + my_string_count = my_ten_letters.count(random_letter) + word_pool_count = letter_pool_list.count(random_letter) + if my_string_count > word_pool_count: my_ten_letters.remove(random_letter) return my_ten_letters @@ -66,7 +66,7 @@ def uses_available_letters(word, letter_bank): letter_results = [] for letter in word: if letter not in letter_bank: - letter_results.append("f") # "f" in my head stands for false + letter_results.append("f") if "f" in letter_results: return False else: @@ -79,9 +79,6 @@ def uses_available_letters(word, letter_bank): return False else: return True - - # word_all_caps = word.upper() - # return word_all_caps def score_word(word): word_score = 0 @@ -103,11 +100,11 @@ def get_highest_word_score(word_list): score_dict = {} for word in word_list: - score = score_word(word) #this returns an int + score = score_word(word) score_dict[word] = score highest_score_value = max(score_dict.values()) - #highest_score_key = max(score_dict, key=score_dict.get) + highest_scores = [] @@ -120,10 +117,12 @@ def get_highest_word_score(word_list): if len(highest_scores) > 1: for word, score in highest_scores: - if len(word) < shortest_word_length: + if len(word) >= 10: + shortest_word = word + return (shortest_word, highest_score_value) + elif len(word) < shortest_word_length: shortest_word_length = len(word) - shortest_word = word - - #word_tupl = (highest_score_key, highest_score_value) + shortest_word = word + return (shortest_word, highest_score_value) \ No newline at end of file From 902eb623fac4261f5eada275fc24324056cb21f6 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Sat, 3 Dec 2022 13:49:06 -0700 Subject: [PATCH 15/20] implemented suggestion for refactoring function draw letters --- adagrams/game.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index ac2d7d30..e8e8e0ee 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -48,18 +48,26 @@ def draw_letters(): for num in range(0,(LETTER_POOL[letter])): letter_pool_list.append(letter) + #Claire's suggestion for a while loop while len(my_ten_letters) < 10: - for num in range(0,10): - random_letter = random.choice(letter_pool_list) - my_ten_letters.append(random_letter) - my_string_count = my_ten_letters.count(random_letter) - word_pool_count = letter_pool_list.count(random_letter) - if my_string_count > word_pool_count: - my_ten_letters.remove(random_letter) + random_letter = random.choice(letter_pool_list) + my_ten_letters.append(random_letter) + letter_pool_list.remove(random_letter) return my_ten_letters + #original solution + + # while len(my_ten_letters) < 10: + # for num in range(0,10): + # random_letter = random.choice(letter_pool_list) + # my_ten_letters.append(random_letter) + # my_string_count = my_ten_letters.count(random_letter) + # word_pool_count = letter_pool_list.count(random_letter) + # if my_string_count > word_pool_count: + # my_ten_letters.remove(random_letter) + def uses_available_letters(word, letter_bank): word = word.upper() From 4b1c0fe42801e204cfcb45038d38cce3580ac997 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Sat, 3 Dec 2022 14:03:45 -0700 Subject: [PATCH 16/20] implemented suggestion to refactor function uses available word --- adagrams/game.py | 44 ++++++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index e8e8e0ee..b83be515 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -1,4 +1,3 @@ -from multiprocessing import current_process import random LETTER_POOL = { 'A': 9, @@ -58,7 +57,7 @@ def draw_letters(): return my_ten_letters #original solution - + # while len(my_ten_letters) < 10: # for num in range(0,10): # random_letter = random.choice(letter_pool_list) @@ -71,22 +70,39 @@ def draw_letters(): def uses_available_letters(word, letter_bank): word = word.upper() - letter_results = [] - for letter in word: - if letter not in letter_bank: - letter_results.append("f") - if "f" in letter_results: - return False - else: - return True - + # Claire's suggestion -combine the foor loops for letter in word: count_pool_letter = letter_bank.count(letter) count_word_letter = word.count(letter) - if count_word_letter > count_pool_letter: + if letter not in letter_bank: return False - else: - return True + if count_word_letter > count_pool_letter: + return False + else: + continue + return True + + + # original for solution + # word = word.upper() + # letter_results = [] + # for letter in word: + # if letter not in letter_bank: + # letter_results.append("f") + # if "f" in letter_results: + # return False + # else: + # return True + + # for letter in word: + # count_pool_letter = letter_bank.count(letter) + # count_word_letter = word.count(letter) + # if count_word_letter > count_pool_letter: + # return False + # else: + # return True + + def score_word(word): word_score = 0 From ebca07dffc4e5af2a9f31b015e1ec3e9d061881c Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Sat, 3 Dec 2022 14:23:36 -0700 Subject: [PATCH 17/20] implemented suggested syntax refactoring --- adagrams/game.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index b83be515..2d293dba 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -27,7 +27,7 @@ 'Y': 2, 'Z': 1 } -score_chart ={ +SCORE_CHART = { ('A', 'E', 'I', 'O', 'U', 'L', 'N', 'R', 'S', 'T'): 1, ('D', 'G'): 2, ('B', 'C', 'M', 'P'): 3, @@ -105,19 +105,20 @@ def uses_available_letters(word, letter_bank): def score_word(word): - word_score = 0 - word = word.upper() if len(word) == 0: - return word_score + return 0 + word_score = 0 + word = word.upper() + if len(word) in range(7, 11): word_score += 8 for letter in word: - for key in score_chart: + for key in SCORE_CHART: if letter in key: - word_score += score_chart.get(key) + word_score += SCORE_CHART.get(key) return word_score def get_highest_word_score(word_list): @@ -131,10 +132,17 @@ def get_highest_word_score(word_list): highest_scores = [] + for dict in score_dict.items(): if dict[1] == highest_score_value: highest_scores.append(dict) + + # Claire's suggestion + # for dict in score_dict.items(): + # for word, score in score_dict.items(): + # if score == highest_score_value: + # highest_scores.append(dict) shortest_word_length = len(highest_scores[0][0]) shortest_word = highest_scores[0][0] From da21ee2626c6f5bffd3f9130231ed98600ba31aa Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Sat, 3 Dec 2022 15:20:47 -0700 Subject: [PATCH 18/20] implemented suggestion to refactor function get highest word score that improves the descriptive quality of the function --- adagrams/game.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 2d293dba..ba01c8ea 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -84,6 +84,7 @@ def uses_available_letters(word, letter_bank): # original for solution + # word = word.upper() # letter_results = [] # for letter in word: @@ -133,16 +134,16 @@ def get_highest_word_score(word_list): highest_scores = [] - - for dict in score_dict.items(): - if dict[1] == highest_score_value: - highest_scores.append(dict) + #Claire's suggestion for more descriptive syntax + for word, score in score_dict.items(): + if score == highest_score_value: + highest_scores.append([word,score]) - # Claire's suggestion + # original solution + # for dict in score_dict.items(): - # for word, score in score_dict.items(): - # if score == highest_score_value: - # highest_scores.append(dict) + # if dict[1] == highest_score_value: + # highest_scores.append(dict) shortest_word_length = len(highest_scores[0][0]) shortest_word = highest_scores[0][0] @@ -155,6 +156,12 @@ def get_highest_word_score(word_list): elif len(word) < shortest_word_length: shortest_word_length = len(word) shortest_word = word + + # find the score of a word + # check if the score is the highest score + # if its equal check which has a shorter length or has length of 10 + # if none of this is true then loop moves to the next word - return (shortest_word, highest_score_value) \ No newline at end of file + return (shortest_word, highest_score_value) + From 6ebaf6aec10a9fcee4295baa3f45b650aca2c5d5 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Sat, 3 Dec 2022 15:33:05 -0700 Subject: [PATCH 19/20] finished implementing all suggestions for refactoring from pull request feedback --- adagrams/game.py | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index ba01c8ea..ea5cebfd 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -37,8 +37,6 @@ ('Q', 'Z'): 10 } - - def draw_letters(): letter_pool_list = [] my_ten_letters = [] @@ -53,7 +51,6 @@ def draw_letters(): random_letter = random.choice(letter_pool_list) my_ten_letters.append(random_letter) letter_pool_list.remove(random_letter) - return my_ten_letters #original solution @@ -70,7 +67,7 @@ def draw_letters(): def uses_available_letters(word, letter_bank): word = word.upper() - # Claire's suggestion -combine the foor loops + # Claire's suggestion to combine the foor loops for letter in word: count_pool_letter = letter_bank.count(letter) count_word_letter = word.count(letter) @@ -82,9 +79,7 @@ def uses_available_letters(word, letter_bank): continue return True - # original for solution - # word = word.upper() # letter_results = [] # for letter in word: @@ -131,7 +126,6 @@ def get_highest_word_score(word_list): highest_score_value = max(score_dict.values()) - highest_scores = [] #Claire's suggestion for more descriptive syntax @@ -140,7 +134,6 @@ def get_highest_word_score(word_list): highest_scores.append([word,score]) # original solution - # for dict in score_dict.items(): # if dict[1] == highest_score_value: # highest_scores.append(dict) @@ -156,12 +149,5 @@ def get_highest_word_score(word_list): elif len(word) < shortest_word_length: shortest_word_length = len(word) shortest_word = word - - # find the score of a word - # check if the score is the highest score - # if its equal check which has a shorter length or has length of 10 - # if none of this is true then loop moves to the next word - - return (shortest_word, highest_score_value) From 596a59290177134fbab30af5849618236f654582 Mon Sep 17 00:00:00 2001 From: Sunny <1sunnymuniz@gmail.com> Date: Sat, 3 Dec 2022 16:06:55 -0700 Subject: [PATCH 20/20] refactored draw ten letters to implement a for loop instead of a while loop --- adagrams/game.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/adagrams/game.py b/adagrams/game.py index ea5cebfd..64210a32 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -47,7 +47,8 @@ def draw_letters(): #Claire's suggestion for a while loop - while len(my_ten_letters) < 10: + + for i in range(10): random_letter = random.choice(letter_pool_list) my_ten_letters.append(random_letter) letter_pool_list.remove(random_letter)