diff --git a/PLAN.md b/PLAN.md new file mode 100644 index 00000000..ba55148e --- /dev/null +++ b/PLAN.md @@ -0,0 +1,30 @@ +## Access needs +- Ying: I'm still working on time management skills so would require planning in advance for meeting up to work on the project outside of core hours. +- Liqing: I'm pretty flexible with the time arrangement with the partner. Fully understanding of the project problem is requried for me before we start coworking though. Set up 1 - 2 hours for each coworking session also helps that we don't over spend time on one task/wave. + + +## Learning style +- Ying: I learn best when doing it myself while having full independence over my own learning process. In general, I learn better when reading, researching and doing than watching videos or attending classes. +- Liqing: I like reading documentation, googling, taking note to enhance my understanding. We can share resources together too after each session. + + +## How you prefer to receive feedback +- Ying: I prefer to receive written feedback in a direct and concise manner (numbered lists or bullet points preferred) with a specific agreed upon deadline to fix any issues, and be given the time inbetween to work on it on my own. Agree with Liqing re feedback at the end of the project (maybe a retrospective together on Friday or this weekend?) +- Liqing: after each pair programming, I would like to receive any verbal feedback on the collaboration of that particular day and at the end of the project as an overall feedback to improve mine and both. + + +## One team communication skill you want to improve on with this experience +- Ying: I need to work on patience when communicating which can at times come off as dismissive to others. +- Liqing: I want to improve on my communication skills while pair programming in a professional way, make the whole pair programming benefitial for both. + + +## Plan +- 1st session: 03/28 Mon 3-4pm + - Goal: complete wave 1 (30 minutes/30 minutes) +- 2nd session: 03/29 Tue 2-3pm + - Goal: complete wave 2 +- 3rd session: 03/30 Wed 3-4pm + - Goal: complete wave 3 +- 4th session: 03/31 Thu 1-230pm + - Goal: complete wave 4 and manually test + - If we finish earlier this day, we can have a feedback session \ No newline at end of file diff --git a/adagrams/game.py b/adagrams/game.py index 5fb37b11..5604ae68 100644 --- a/adagrams/game.py +++ b/adagrams/game.py @@ -1,11 +1,117 @@ +from collections import Counter +import random +from collections import Counter + +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 +} + +POINT_SYSTEM = { + '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 +} + + + +# |Letter | Value| +# |:----------------------------:|:----:| +# |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 | + def draw_letters(): - pass + # copy a dictionary so that we don't change the data, it's constant + letter_pool_copy = LETTER_POOL.copy() + letters_drawn = [] + letter_options = list(letter_pool_copy) + while len(letters_drawn) < 10: + letter_drawn = random.choice(letter_options) + if letter_pool_copy[letter_drawn] >= 1: + letters_drawn.append(letter_drawn) + letter_pool_copy[letter_drawn] -= 1 + return letters_drawn + def uses_available_letters(word, letter_bank): - pass + upper_word = word.upper() + char_counts = Counter(letter_bank) + for char in upper_word: + if not char_counts[char]: + return False + char_counts[char] -= 1 + return True + def score_word(word): - pass + points = 0 + for char in word: + points += POINT_SYSTEM[char.upper()] + if len(word) >= 7 and len(word) <= 10: + points += 8 + return points + def get_highest_word_score(word_list): - pass \ No newline at end of file + max_score = 0 + max_word = None + for word in word_list: + if score_word(word) == max_score and len(max_word) != 10: + if len(word) == 10 or len(word) < len(max_word): + max_word = word + elif score_word(word) > max_score: + max_score = score_word(word) + max_word = word + return (max_word, max_score) \ No newline at end of file