From d07c8f45b38d4f8e9275ea5129e6eb87e49bdde2 Mon Sep 17 00:00:00 2001 From: Tanil Date: Mon, 26 Sep 2022 16:55:34 -0400 Subject: [PATCH 1/5] completed wave 01 and passed all test --- adagrams/game.py | 50 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/adagrams/game.py b/adagrams/game.py index 5fb37b11..ab47e34b 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -1,5 +1,53 @@ +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(): - pass + letters = [] + remaining_letters_pool = {} + + if len(letters) < 11: + for dict in LETTER_POOL: + for key, value in dict.items(): + if key not in remaining_letters_pool and value > 0: + remaining_letters_pool[key] = value + + while len(letters) < 10: + random_letter = random.choice(list(remaining_letters_pool)) + for letter in list(remaining_letters_pool): + if remaining_letters_pool[letter] == 0: + remaining_letters_pool.pop(letter) + elif random_letter == letter: + remaining_letters_pool[letter]-= 1 + letters.append(random_letter) + + return letters + def uses_available_letters(word, letter_bank): pass From 8cb0d30050a2f8385dd3ad61cbef14f8c20812f6 Mon Sep 17 00:00:00 2001 From: Samiya Date: Tue, 27 Sep 2022 15:15:50 -0400 Subject: [PATCH 2/5] WE did it wave 2. --- adagrams/game.py | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index ab47e34b..192e7c11 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -36,7 +36,6 @@ def draw_letters(): for key, value in dict.items(): if key not in remaining_letters_pool and value > 0: remaining_letters_pool[key] = value - while len(letters) < 10: random_letter = random.choice(list(remaining_letters_pool)) for letter in list(remaining_letters_pool): @@ -47,10 +46,40 @@ def draw_letters(): letters.append(random_letter) return letters - + def uses_available_letters(word, letter_bank): - pass + dict_word={} + word=word.upper() + word_list=[] + values_dict=[] + + for letter in word: + dict_word[letter]=False + for letter in word: + word_list.append(letter) + for letter in word_list: + if letter in letter_bank: + freq_letter=word_list.count(letter) + freq_letter_bank=letter_bank.count(letter) + if freq_letter == freq_letter_bank: + dict_word[letter]=True + elif freq_letter>freq_letter_bank: + dict_word[letter]=False + elif freq_letter Date: Wed, 28 Sep 2022 15:23:22 -0400 Subject: [PATCH 3/5] WE DID IT WAVE 3. --- adagrams/game.py | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 192e7c11..551d1d95 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -78,11 +78,41 @@ def uses_available_letters(word, letter_bank): return True - - - def score_word(word): - pass + letter_value={'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_sum=0 + wordy=word.upper() + if len(word) > 6: + total_sum=8 + for letter in wordy: + total_sum+=letter_value[letter] + return total_sum def get_highest_word_score(word_list): pass \ No newline at end of file From 3ae69e826dac0a596fd9cf6c5bf63751e861d721 Mon Sep 17 00:00:00 2001 From: Tanil Date: Wed, 28 Sep 2022 22:29:40 -0400 Subject: [PATCH 4/5] finished all waves --- adagrams/game.py | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/adagrams/game.py b/adagrams/game.py index 551d1d95..9043d4cf 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -115,4 +115,34 @@ def score_word(word): return total_sum def get_highest_word_score(word_list): - pass \ No newline at end of file + highest_score=0 + words=[] + word_scored={} + + for word in word_list: + word_scored[word]=score_word(word) + for value in word_scored.values(): + if value > highest_score: + highest_score=value + + #get words with highest_score + for word in word_list: + if word_scored[word]==highest_score: + words.append(word) + + #evaluate tie-breaks + if len(words) > 1: + shortest_word_len = 10 + shortest_word = '' + for word in words: + if len(word) == 10: + return (word, highest_score) + elif len(word) < shortest_word_len: + shortest_word_len = len(word) + shortest_word = word + return (shortest_word, highest_score) + + #only one winner + else: + + return (words[0], highest_score) \ No newline at end of file From 24593482bc490bc3aefc3fd49ffc5f5c4f10ab55 Mon Sep 17 00:00:00 2001 From: Samiya Date: Thu, 29 Sep 2022 21:09:45 -0400 Subject: [PATCH 5/5] WE FINISHED THE ADAGRAMS. --- adagrams/game.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/adagrams/game.py b/adagrams/game.py index 9043d4cf..59850497 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -32,19 +32,21 @@ def draw_letters(): remaining_letters_pool = {} if len(letters) < 11: + #getting the remaining amount of letters in the letter pool for dict in LETTER_POOL: for key, value in dict.items(): if key not in remaining_letters_pool and value > 0: - remaining_letters_pool[key] = value + remaining_letters_pool[key] = value + #adding random letter to the length of the letter list if it's less than ten while len(letters) < 10: random_letter = random.choice(list(remaining_letters_pool)) + ##Removing the used letter from the remaining letter pool for letter in list(remaining_letters_pool): if remaining_letters_pool[letter] == 0: remaining_letters_pool.pop(letter) elif random_letter == letter: remaining_letters_pool[letter]-= 1 - letters.append(random_letter) - + letters.append(random_letter) return letters @@ -53,11 +55,10 @@ def uses_available_letters(word, letter_bank): word=word.upper() word_list=[] values_dict=[] - - for letter in word: - dict_word[letter]=False + #Creating a list of each letter that is a string for letter in word: word_list.append(letter) + #Assigning a boolean to each letter if it appears in the list for letter in word_list: if letter in letter_bank: freq_letter=word_list.count(letter) @@ -70,15 +71,18 @@ def uses_available_letters(word, letter_bank): dict_word[letter]=True else: dict_word[letter]=False + #Adding all of the booleans values for the given word to a list for key,value in dict_word.items(): values_dict.append(value) if False in values_dict: + #if there are any False values in the dict then return False return False else: return True def score_word(word): + #creating a new dictionary assinging values to each letter letter_value={'A': 1, 'B': 3, 'C': 3, @@ -107,10 +111,11 @@ def score_word(word): 'Z': 10,} total_sum=0 - wordy=word.upper() + #Test case sensitivity + cap_word=word.upper() if len(word) > 6: total_sum=8 - for letter in wordy: + for letter in cap_word: total_sum+=letter_value[letter] return total_sum @@ -118,9 +123,10 @@ def get_highest_word_score(word_list): highest_score=0 words=[] word_scored={} - + #Creating a dictionary for each word with the key pair value word and score for word in word_list: word_scored[word]=score_word(word) + #Getting highest score for value in word_scored.values(): if value > highest_score: highest_score=value