import random # Define categories and words for the Word Wrangler game WORD_CATEGORIES = { "animals": [ "elephant", "penguin", "giraffe", "dolphin", "kangaroo", "octopus", "panda", "tiger", "koala", "flamingo", "hedgehog", "turtle", "zebra", "eagle", "sloth", "raccoon", "chameleon", "squirrel", "hamster", "cheetah", "platypus", "jellyfish", "parrot", "wolf", "hippo", "porcupine", "ostrich", "peacock", "alligator", "gorilla", "armadillo", "chipmunk", "walrus", "weasel", "skunk", "llama", "badger", "mongoose", "lemur", "otter", "bison", "falcon", "meerkat", "pelican", "cobra", "salamander", "lobster", "seal", "narwhal", "iguana", "piranha", "toucan", "moose", "lynx", "stingray", "starfish", "beaver", "vulture", "antelope", "jaguar", "seahorse", ], "food": [ "pizza", "sushi", "burrito", "pancake", "donut", "lasagna", "popcorn", "chocolate", "mango", "pretzel", "taco", "waffle", "cupcake", "avocado", "cookie", "croissant", "omelette", "cheesecake", "dumpling", "hummus", "gelato", "risotto", "ramen", "salsa", "kebab", "brownie", "guacamole", "bagel", "falafel", "biscuit", "churro", "meatball", "tiramisu", "enchilada", "couscous", "gumbo", "jambalaya", "baklava", "popsicle", "cannoli", "tofu", "macaron", "empanada", "pho", "casserole", "porridge", "granola", "fritter", "hazelnut", "kiwi", "pomegranate", "artichoke", "edamame", "zucchini", "cashew", "brisket", "custard", "nutmeg", "ginger", ], "household": [ "chair", "pillow", "mirror", "blanket", "lamp", "curtain", "sofa", "refrigerator", "blender", "bookshelf", "dishwasher", "carpet", "microwave", "table", "clock", "vase", "ottoman", "candle", "drawer", "cabinet", "doorknob", "silverware", "bathtub", "plunger", "toaster", "kettle", "spatula", "doormat", "hanger", "blinds", "ladle", "platter", "coaster", "napkin", "sponge", "thermostat", "showerhead", "coatrack", "nightstand", "cushion", "windowsill", "bedsheet", "countertop", "dustpan", "footstool", "flowerpot", "trashcan", "colander", "detergent", "chandelier", "laundry", "vacuum", "teapot", "duster", "lightbulb", "corkscrew", "paperweight", "doorstop", "radiator", ], "activities": [ "swimming", "painting", "dancing", "gardening", "skiing", "cooking", "hiking", "reading", "yoga", "fishing", "jogging", "biking", "baking", "singing", "camping", "knitting", "surfing", "photography", "bowling", "archery", "horseback", "meditation", "gymnastics", "volleyball", "tennis", "skating", "kayaking", "climbing", "juggling", "rowing", "snorkeling", "embroidery", "canoeing", "paddleboarding", "pottery", "birdwatching", "karaoke", "sailing", "pilates", "calligraphy", "skateboarding", "crossword", "origami", "beekeeping", "stargazing", "snowboarding", "woodworking", "fencing", "quilting", "foraging", "geocaching", "scrapbooking", "welding", "glassblowing", "whittling", "ziplining", ], "places": [ "beach", "library", "mountain", "airport", "stadium", "museum", "hospital", "castle", "garden", "hotel", "island", "desert", "university", "restaurant", "forest", "aquarium", "theater", "canyon", "lighthouse", "waterfall", "vineyard", "cathedral", "rainforest", "farmhouse", "greenhouse", "observatory", "marketplace", "boardwalk", "temple", "courtyard", "plantation", "lagoon", "volcano", "meadow", "oasis", "grotto", "peninsula", "aviary", "chapel", "coliseum", "bazaar", "marina", "orchard", "brewery", "sanctuary", "fortress", "prairie", "reservation", "tavern", "monument", "manor", "pavilion", "boulevard", "campground", ], "objects": [ "umbrella", "scissors", "camera", "wallet", "bicycle", "backpack", "telescope", "balloon", "compass", "notebook", "keyboard", "magnet", "headphones", "hammer", "envelope", "binoculars", "tambourine", "boomerang", "megaphone", "suitcase", "pinwheel", "kaleidoscope", "microscope", "hourglass", "harmonica", "trampoline", "bubblegum", "xylophone", "typewriter", "screwdriver", "whistle", "chessboard", "handcuffs", "stethoscope", "stopwatch", "parachute", "blowtorch", "calculator", "thermometer", "mousetrap", "crowbar", "paintbrush", "metronome", "surfboard", "flipchart", "dartboard", "wrench", "flippers", "thimble", "protractor", "snorkel", "doorbell", "flashlight", "pendulum", "abacus", ], "jobs": [ "teacher", "doctor", "chef", "firefighter", "pilot", "astronaut", "carpenter", "musician", "detective", "scientist", "farmer", "architect", "journalist", "electrician", "dentist", "veterinarian", "librarian", "photographer", "mechanic", "attorney", "barista", "plumber", "bartender", "surgeon", "therapist", "animator", "programmer", "pharmacist", "translator", "accountant", "florist", "butcher", "lifeguard", "beekeeper", "locksmith", "choreographer", "mortician", "paramedic", "blacksmith", "surveyor", "botanist", "chiropractor", "undertaker", "acrobat", "welder", "hypnotist", "zoologist", "mime", "sommelier", "meteorologist", "stuntman", "diplomat", "entomologist", "puppeteer", "archivist", "cartographer", "paleontologist", ], "transportation": [ "helicopter", "submarine", "scooter", "sailboat", "train", "motorcycle", "airplane", "canoe", "tractor", "limousine", "escalator", "skateboard", "ambulance", "ferry", "rocket", "hovercraft", "gondola", "segway", "zeppelin", "bulldozer", "speedboat", "unicycle", "monorail", "snowmobile", "paddleboat", "trolley", "rickshaw", "caboose", "glider", "bobsled", "jetpack", "forklift", "dirigible", "chariot", "sidecar", "tandem", "battleship", "catamaran", "toboggan", "dinghy", "hydrofoil", "sleigh", "hatchback", "kayak", "stagecoach", "tugboat", "airship", "skiff", "carriage", "rowboat", "chairlift", "steamroller", ], "clothing": [ "sweater", "sandals", "tuxedo", "poncho", "sneakers", "bikini", "cardigan", "overalls", "kimono", "mittens", "suspenders", "kilt", "leggings", "apron", "bowtie", "earmuffs", "fedora", "wetsuit", "pajamas", "sombrero", "raincoat", "beret", "turtleneck", "parka", "tiara", "toga", "bandana", "corset", "sarong", "tunic", "visor", "ascot", "fez", "moccasins", "blazer", "chaps", "romper", "waders", "clogs", "garter", "camisole", "galoshes", "bolero", "spats", "pantyhose", "onesie", "stiletto", "vest", "windbreaker", "scarf", "bonnet", ], "nature": [ "glacier", "sequoia", "geyser", "avalanche", "tornado", "quicksand", "stalactite", "hurricane", "asteroid", "tundra", "galaxy", "nebula", "earthquake", "stalagmite", "constellation", "crystal", "tributary", "abyss", "monsoon", "magma", "erosion", "iceberg", "mudslide", "delta", "aurora", "gravity", "humidity", "sinkhole", "wildfire", "tropics", "tsunami", "eclipse", "metabolism", "mirage", "hemisphere", "spectrum", "fossil", "plateau", "groundwater", "undergrowth", "oxygen", "molecule", "pollination", "algae", "carbon", "nitrogen", "organism", "nucleus", "equator", "solstice", "cocoon", "germination", "metamorphosis", "nocturnal", "symbiosis", "ecosystem", "biodiversity", ], "emotions": [ "happiness", "sadness", "anxiety", "surprise", "anger", "curiosity", "embarrassment", "nostalgia", "envy", "gratitude", "remorse", "boredom", "excitement", "loneliness", "pride", "jealousy", "contentment", "disgust", "empathy", "euphoria", "melancholy", "frustration", "anticipation", "amusement", "serenity", "disappointment", "confidence", "resentment", "apathy", "optimism", "pessimism", "bewilderment", "exhilaration", "indifference", "enthusiasm", "desperation", "satisfaction", "regret", "determination", "compassion", "hopelessness", "relief", "infatuation", "tranquility", "impatience", "exasperation", "agitation", "yearning", "sympathy", "admiration", "astonishment", "inspiration", "dread", "hope", ], } def generate_game_words(num_words=20): """Generate a random selection of words for the Word Wrangler game. 1. Create a flat list of all words 2. Remove any duplicates 3. Randomly select the requested number of words Args: num_words: Number of words to select for the game Returns: List of randomly selected words """ # Create a flat list of all words from all categories all_words = [] for category_words in WORD_CATEGORIES.values(): all_words.extend(category_words) # Remove duplicates by converting to a set and back to a list all_words = list(set(all_words)) # Randomly select words selected_words = random.sample(all_words, min(num_words, len(all_words))) return selected_words