import random
import matplotlib.pyplot as plt
import seaborn as sns
from util import *
from connections import *

NUM_BINS = 20
NUM_SAMPLES = 1_000
LINE_WIDTH = 2
TITLE_FONT_SIZE = 10
HEATMAP_WIDTH = 11
HEATMAP_HEIGHT = 10

# generate_random_quartet takes in a list of words from a puzzle and generates a random quartet out of those
# 16 words; if from_word_bank is set to be True, then this function will randomly sample 16 words from this _huge_
# list of words and generate a random quartet from those 16 words
def generate_random_quartet(words: list[str], from_word_bank:bool=False) -> list[list[str]]:
    if from_word_bank:
        shuffled = random.sample(words, NUM_WORDS)
    else:
        shuffled = words[:]  # make a copy
    random.shuffle(shuffled)
    return [shuffled[i:(i + GROUP_SIZE)] for i in range(0, GROUP_SIZE * NUM_GROUPS, GROUP_SIZE)]

def graph_pairwise_similarities(todays_words: list[str], todays_embeddings: dict[str, np.float64], title: str) -> None:
    # TODO: YOUR CODE HERE
    pass

def graph_scores(todays_words: list[str], todays_embeddings: dict[str, np.float64], title: str, 
                 answer_score:np.floating|None=None, from_word_bank:bool=False) -> None:
    # TODO: YOUR CODE HERE
    pass

if __name__ == "__main__":
    pass
