From 776b5d084d53ec3bf84058cdd321838ec0c667e2 Mon Sep 17 00:00:00 2001 From: Ajar Duishembieva Date: Sun, 15 Sep 2024 21:29:39 -0700 Subject: [PATCH 1/4] adding a solution to the Wave 1 of Adagrams project --- adagrams/game.py | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/adagrams/game.py b/adagrams/game.py index 5fb37b11..4c419002 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -1,5 +1,49 @@ +import string +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 + } + my_dictionary = {} + my_list = [] + while len(my_dictionary) != 10: + letter = random.choice(string.ascii_uppercase) + if letter in my_dictionary: + value = my_dictionary[letter] + if value < LETTER_POOL[letter]: + my_dictionary[letter] = value + 1 + else: + my_dictionary[letter] = 1 + + for key in my_dictionary: + my_list.append(key) + return my_list def uses_available_letters(word, letter_bank): pass From 4212392fec6a21a84a7295c485be213dc056196f Mon Sep 17 00:00:00 2001 From: Ajar Duishembieva Date: Mon, 16 Sep 2024 22:16:03 -0700 Subject: [PATCH 2/4] adding a solution to the wave2 --- adagrams/game.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/adagrams/game.py b/adagrams/game.py index 4c419002..9bd1fc04 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -46,7 +46,19 @@ def draw_letters(): return my_list def uses_available_letters(word, letter_bank): - pass + word_dictionary = {} + for letter in word.upper(): + if letter in word_dictionary: + value = word_dictionary[letter] + word_dictionary[letter] = value + 1 + else: + word_dictionary[letter] = 1 + + for letter in letter_bank: + if letter in word_dictionary: + value = word_dictionary[letter] + word_dictionary[letter] = value - 1 + return sum(word_dictionary.values()) == 0 def score_word(word): pass From 36952272a1e52e06973854bd97c7a6ee10515ca4 Mon Sep 17 00:00:00 2001 From: Ajar Duishembieva Date: Mon, 16 Sep 2024 22:46:33 -0700 Subject: [PATCH 3/4] adding a solution to the wave3 --- adagrams/game.py | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/adagrams/game.py b/adagrams/game.py index 9bd1fc04..88ea819b 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -61,7 +61,42 @@ def uses_available_letters(word, letter_bank): return sum(word_dictionary.values()) == 0 def score_word(word): - pass + LETTER_SCORES = { + '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 + } + total_points = 0 + for letter in word.upper(): + if letter in LETTER_SCORES: + value = LETTER_SCORES[letter] + total_points += value + if len(word) == 7 or len(word) == 8 or len(word) == 9 or len(word) == 10: + total_points = total_points + 8 + return total_points def get_highest_word_score(word_list): pass \ No newline at end of file From 2cbd6b7a83bf209376389db4b60fd9ada3ff7af4 Mon Sep 17 00:00:00 2001 From: Ajar Duishembieva Date: Wed, 18 Sep 2024 20:17:02 -0700 Subject: [PATCH 4/4] adding a solution to the wave4 --- adagrams/game.py | 56 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/adagrams/game.py b/adagrams/game.py index 88ea819b..ad152e98 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -99,4 +99,58 @@ def score_word(word): return total_points def get_highest_word_score(word_list): - pass \ No newline at end of file + LETTER_SCORES = { + '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 + } + + word_result = ['0',0] + for current_word in word_list: + current_sum = 0 + for letter in current_word: + key = letter.upper() + current_sum = current_sum + LETTER_SCORES[key] + + if len(current_word) == 10: + current_sum = current_sum + 8 + + previous_sum = word_result[1] + previous_word = word_result[0] + + if previous_sum < current_sum: + word_result[0] = current_word + word_result[1] = current_sum + elif previous_sum == current_sum: + previous_size = len(previous_word) + current_size = len(current_word) + + if(current_size==10 and previous_size !=10): + word_result[0] = current_word + elif current_size!=10 and previous_size !=10 and current_size < previous_size: + word_result[0] = current_word + + return tuple(word_result)