diff --git a/scripts/build-all-data.mjs b/scripts/build-all-data.mjs index 08a6b98..683d5da 100644 --- a/scripts/build-all-data.mjs +++ b/scripts/build-all-data.mjs @@ -1,9 +1,10 @@ import fs from 'node:fs'; import path from 'node:path'; -import wordlistEnglish from 'wordlist-english'; import { solveBoard } from './solver.mjs'; +import { extraWords } from './extra-words.mjs'; +import { DICTIONARY_SET } from '../src/data/lexicon.js'; -const targetWordsPool = [ +export const targetWordsPool = [ // Wonder & Exploration { word: 'remarkable', tiles: ['re', 'mar', 'ka', 'ble'], theme: 'wonder', clue: 'Worthy of attention; striking' }, { word: 'unforgettable', tiles: ['un', 'for', 'get', 'table'], theme: 'wonder', clue: 'Impossible to forget; memorable' }, @@ -17,27 +18,18 @@ const targetWordsPool = [ { word: 'atmosphere', tiles: ['at', 'mo', 'sph', 'ere'], theme: 'space', clue: 'The envelope of gases surrounding a planet' }, { word: 'interstellar', tiles: ['in', 'ter', 'ste', 'llar'], theme: 'space', clue: 'Occurring between stars' }, { word: 'telescopic', tiles: ['tel', 'es', 'co', 'pic'], theme: 'space', clue: 'Having the power for viewing distant objects' }, - - // Science & Discovery - { word: 'required', tiles: ['re', 'qu', 'ir', 'ed'], theme: 'science', clue: 'Officially compulsory or needed' }, - { word: 'equivalent', tiles: ['equ', 'iv', 'al', 'ent'], theme: 'science', clue: 'Equal in value, amount, or meaning' }, - { word: 'objection', tiles: ['obj', 'ec', 'ti', 'on'], theme: 'science', clue: 'An expression or feeling of disapproval' }, - { word: 'justification', tiles: ['ju', 'stif', 'ica', 'tion'], theme: 'science', clue: 'The action of showing something to be right' }, - { word: 'mysterious', tiles: ['mys', 'ter', 'io', 'us'], theme: 'science', clue: 'Difficult or impossible to understand' }, - - // Nature & Earth - { word: 'biodiversity', tiles: ['bio', 'di', 'ver', 'sity'], theme: 'nature', clue: 'The variety of life in the world or habitat' }, - { word: 'environment', tiles: ['en', 'vi', 'ron', 'ment'], theme: 'nature', clue: 'The surroundings or conditions in which one lives' }, - { word: 'caterpillar', tiles: ['cat', 'er', 'pil', 'lar'], theme: 'nature', clue: 'The larval stage of a butterfly or moth' }, - { word: 'underwater', tiles: ['un', 'der', 'wa', 'ter'], theme: 'nature', clue: 'Situated or occurring below water surface' }, - { word: 'thunderstorm', tiles: ['thun', 'der', 'sto', 'rm'], theme: 'nature', clue: 'A transient storm of lightning and thunder' }, + { word: 'constellation', tiles: ['con', 'ste', 'lla', 'tion'], theme: 'space', clue: 'A group of stars forming a pattern' }, + { word: 'stratosphere', tiles: ['stra', 'tos', 'phe', 're'], theme: 'space', clue: 'Layer of the atmosphere above troposphere' }, + { word: 'superconductor', tiles: ['su', 'per', 'con', 'ductor'], theme: 'space', clue: 'Material with zero electrical resistance' }, // Mind & Philosophy { word: 'imagination', tiles: ['im', 'agi', 'na', 'tion'], theme: 'mind', clue: 'The faculty of forming new ideas or images' }, { word: 'understanding', tiles: ['un', 'der', 'stan', 'ding'], theme: 'mind', clue: 'The ability to comprehend something' }, { word: 'psychology', tiles: ['psy', 'cho', 'lo', 'gy'], theme: 'mind', clue: 'The scientific study of mind and behavior' }, { word: 'intelligence', tiles: ['in', 'tel', 'li', 'gence'], theme: 'mind', clue: 'The ability to acquire and apply knowledge' }, - { word: 'consciousness', tiles: ['con', 'sci', 'ous', 'ness'], theme: 'mind', clue: 'The state of being aware of one surroundings' }, + { word: 'consciousness', tiles: ['con', 'sci', 'ous', 'ness'], theme: 'mind', clue: 'The state of being aware of surroundings' }, + { word: 'philosophy', tiles: ['phi', 'los', 'op', 'hy'], theme: 'mind', clue: 'The study of fundamental nature of knowledge' }, + { word: 'thoughtfulness', tiles: ['thou', 'ght', 'ful', 'ness'], theme: 'mind', clue: 'The state of thinking deeply or being caring' }, // Architecture & City { word: 'architecture', tiles: ['ar', 'chi', 'tec', 'ture'], theme: 'city', clue: 'The art and practice of designing buildings' }, @@ -47,86 +39,224 @@ const targetWordsPool = [ { word: 'skyscraper', tiles: ['sky', 'sc', 'ra', 'per'], theme: 'city', clue: 'A very tall building with many stories' }, // Music & Arts - { word: 'symphony', tiles: ['sym', 'pho', 'ni', 'cally'], theme: 'arts', clue: 'Relating to an elaborate musical composition' }, + { word: 'symphonically', tiles: ['sym', 'pho', 'ni', 'cally'], theme: 'arts', clue: 'Relating to an elaborate musical composition' }, { word: 'masterpiece', tiles: ['mas', 'ter', 'pie', 'ce'], theme: 'arts', clue: 'A work of outstanding artistry or skill' }, - { word: 'performance', tiles: ['per', 'for', 'man', 'ce'], theme: 'arts', clue: 'An act of staging or presenting a play or concert' }, + { word: 'calligraphy', tiles: ['cal', 'lig', 'ra', 'phy'], theme: 'arts', clue: 'Decorative handwriting or handwritten lettering' }, { word: 'exhibition', tiles: ['ex', 'hi', 'bi', 'tion'], theme: 'arts', clue: 'A public display of works of art or items' }, { word: 'creativity', tiles: ['cre', 'at', 'iv', 'ity'], theme: 'arts', clue: 'The use of the imagination or original ideas' }, + { word: 'choreography', tiles: ['cho', 'reo', 'gra', 'phy'], theme: 'arts', clue: 'The sequence of steps and movements in dance' }, + { word: 'harmonium', tiles: ['har', 'mo', 'ni', 'um'], theme: 'arts', clue: 'A keyboard instrument like an organ' }, // Technology & Future { word: 'technology', tiles: ['tec', 'hno', 'lo', 'gy'], theme: 'tech', clue: 'Application of scientific knowledge for practical aims' }, { word: 'electronic', tiles: ['el', 'ect', 'ro', 'nic'], theme: 'tech', clue: 'Having components like microchips or transistors' }, { word: 'automation', tiles: ['au', 'to', 'ma', 'tion'], theme: 'tech', clue: 'The use of largely automatic equipment in a system' }, - { word: 'innovation', tiles: ['in', 'no', 'va', 'tion'], theme: 'tech', clue: 'A new method, idea, or product' }, - { word: 'computation', tiles: ['com', 'pu', 'ta', 'tion'], theme: 'tech', clue: 'The action of mathematical calculation' }, + { word: 'semiconductor', tiles: ['sem', 'ico', 'ndu', 'ctor'], theme: 'tech', clue: 'Solid substance conducting electricity between conductor and insulator' }, + { word: 'cybersecurity', tiles: ['cy', 'ber', 'sec', 'urity'], theme: 'tech', clue: 'Protection of computer systems from attack or theft' }, + { word: 'microprocessor', tiles: ['mi', 'cro', 'pro', 'cessor'], theme: 'tech', clue: 'An integrated circuit containing CPU' }, + { word: 'motherboard', tiles: ['mo', 'ther', 'bo', 'ard'], theme: 'tech', clue: 'A printed circuit board containing principal components' }, - // Society & Community - { word: 'celebration', tiles: ['cel', 'eb', 'ra', 'tion'], theme: 'society', clue: 'The action of marking one pleasure at an event' }, - { word: 'communication', tiles: ['com', 'mu', 'ni', 'cation'], theme: 'society', clue: 'The imparting or exchanging of information' }, - { word: 'relationship', tiles: ['re', 'la', 'tion', 'ship'], theme: 'society', clue: 'The way in which two or more concepts or people connect' }, - { word: 'opportunity', tiles: ['op', 'por', 'tu', 'nity'], theme: 'society', clue: 'A set of circumstances making it possible to do something' }, - { word: 'conversation', tiles: ['con', 'ver', 'sa', 'tion'], theme: 'society', clue: 'A talk between two or more people' }, + // Celebrations & Community + { word: 'celebration', tiles: ['cel', 'eb', 'ra', 'tion'], theme: 'society', clue: 'The action of marking pleasure at an event' }, + { word: 'fellowship', tiles: ['fel', 'low', 'sh', 'ip'], theme: 'society', clue: 'Friendly association, especially with shared interests' }, + { word: 'generosity', tiles: ['gen', 'ero', 'si', 'ty'], theme: 'society', clue: 'The quality of being kind and generous' }, + { word: 'opportunity', tiles: ['op', 'por', 'tu', 'nity'], theme: 'society', clue: 'A set of circumstances making something possible' }, + { word: 'marshmallow', tiles: ['mar', 'shm', 'all', 'ow'], theme: 'society', clue: 'A sweet chewy confection made of sugar and gelatin' }, + { word: 'hospitality', tiles: ['hos', 'pit', 'al', 'ity'], theme: 'society', clue: 'Friendly and generous reception of guests' }, + { word: 'friendship', tiles: ['fri', 'end', 'sh', 'ip'], theme: 'society', clue: 'A state of mutual trust and support between people' }, - // Literature & Words - { word: 'vocabulary', tiles: ['vo', 'cab', 'ul', 'ary'], theme: 'words', clue: 'The body of words used in a particular language' }, - { word: 'encyclopedia', tiles: ['en', 'cy', 'clo', 'pedia'], theme: 'words', clue: 'A book or set providing information on many subjects' }, - { word: 'dictionary', tiles: ['dic', 'tion', 'ar', 'y'], theme: 'words', clue: 'A reference book on words and definitions' }, + // Nature & Wild Kingdom + { word: 'biodiversity', tiles: ['bio', 'di', 'ver', 'sity'], theme: 'nature', clue: 'The variety of life in the world or habitat' }, + { word: 'environment', tiles: ['en', 'vi', 'ron', 'ment'], theme: 'nature', clue: 'The surroundings or conditions in which one lives' }, + { word: 'caterpillar', tiles: ['cat', 'er', 'pil', 'lar'], theme: 'nature', clue: 'The larval stage of a butterfly or moth' }, + { word: 'wilderness', tiles: ['wil', 'der', 'ne', 'ss'], theme: 'nature', clue: 'An uncultivated, uninhabited, and hospitable region' }, + { word: 'chameleon', tiles: ['cha', 'me', 'le', 'on'], theme: 'nature', clue: 'A lizard capable of changing skin color' }, + { word: 'hummingbird', tiles: ['hum', 'ming', 'bi', 'rd'], theme: 'nature', clue: 'Small nectar-feeding bird with hovering flight' }, + { word: 'woodpecker', tiles: ['wood', 'pe', 'ck', 'er'], theme: 'nature', clue: 'A bird with a strong beak for drilling into wood' }, + { word: 'butterflies', tiles: ['but', 'ter', 'fli', 'es'], theme: 'nature', clue: 'Insects with large, often brightly colored wings' }, + { word: 'grasshoppers', tiles: ['grass', 'hop', 'pe', 'rs'], theme: 'nature', clue: 'Plant-eating insect with powerful hind legs for jumping' }, + + // Mysteries & Legends + { word: 'mysterious', tiles: ['mys', 'ter', 'io', 'us'], theme: 'mystery', clue: 'Difficult or impossible to understand or explain' }, + { word: 'supernatural', tiles: ['su', 'per', 'nat', 'ural'], theme: 'mystery', clue: 'Attributed to some force beyond scientific understanding' }, + { word: 'apparition', tiles: ['ap', 'par', 'it', 'ion'], theme: 'mystery', clue: 'A ghost or ghostlike image of a person' }, + { word: 'enchanted', tiles: ['en', 'cha', 'nt', 'ed'], theme: 'mystery', clue: 'Placed under a spell; bewitched' }, + { word: 'miraculous', tiles: ['mi', 'rac', 'ul', 'ous'], theme: 'mystery', clue: 'Occurring through divine or extraordinary intervention' }, + + // Science & Discovery + { word: 'equivalent', tiles: ['equ', 'iv', 'al', 'ent'], theme: 'science', clue: 'Equal in value, amount, function, or meaning' }, + { word: 'hypothesis', tiles: ['hy', 'pot', 'he', 'sis'], theme: 'science', clue: 'A proposed explanation made on limited evidence' }, + { word: 'laboratory', tiles: ['lab', 'ora', 'to', 'ry'], theme: 'science', clue: 'A room or building equipped for scientific experiments' }, + { word: 'microscope', tiles: ['mi', 'cro', 'sco', 'pe'], theme: 'science', clue: 'Optical instrument for magnifying tiny objects' }, + { word: 'phenomenon', tiles: ['phe', 'nom', 'en', 'on'], theme: 'science', clue: 'A remarkable fact or situation that is observed to happen' }, + + // Literature & Wordsmith + { word: 'dictionary', tiles: ['dic', 'tio', 'na', 'ry'], theme: 'words', clue: 'A reference book on words and definitions' }, { word: 'manuscript', tiles: ['man', 'us', 'cr', 'ipt'], theme: 'words', clue: 'An author text that has not yet been printed' }, - { word: 'translation', tiles: ['trans', 'la', 'ti', 'on'], theme: 'words', clue: 'The process of translating words into another language' }, + { word: 'encyclopedia', tiles: ['en', 'cy', 'clo', 'pedia'], theme: 'words', clue: 'A book or set providing information on many subjects' }, + { word: 'literature', tiles: ['li', 'ter', 'at', 'ure'], theme: 'words', clue: 'Written works, especially those considered of superior merit' }, + { word: 'proverbial', tiles: ['pro', 'ver', 'bi', 'al'], theme: 'words', clue: 'Referred to in a proverb or well known' }, // Travel & Geography - { word: 'destination', tiles: ['des', 'ti', 'na', 'tion'], theme: 'travel', clue: 'The place to which someone is going or being sent' }, - { word: 'navigation', tiles: ['na', 'vi', 'ga', 'tion'], theme: 'travel', clue: 'The process of accurately ascertaining one position' }, - { word: 'continental', tiles: ['con', 'ti', 'nen', 'tal'], theme: 'travel', clue: 'Forming or belonging to a continent' }, - { word: 'expedition', tiles: ['ex', 'pe', 'di', 'tion'], theme: 'travel', clue: 'A journey undertaken by a group with a definite purpose' }, - { word: 'exploration', tiles: ['ex', 'plo', 'ra', 'tion'], theme: 'travel', clue: 'The action of traveling in or through an unfamiliar area' }, + { word: 'backpacker', tiles: ['back', 'pa', 'ck', 'er'], theme: 'travel', clue: 'A traveler who journeys carrying their belongings' }, + { word: 'locomotive', tiles: ['lo', 'co', 'mo', 'tive'], theme: 'travel', clue: 'A powered rail vehicle used for pulling trains' }, + { word: 'continental', tiles: ['con', 'tin', 'en', 'tal'], theme: 'travel', clue: 'Forming or belonging to a continent' }, + { word: 'navigation', tiles: ['na', 'vi', 'ga', 'tion'], theme: 'travel', clue: 'The process of accurately ascertaining one position and course' }, + { word: 'voyagers', tiles: ['vo', 'ya', 'ge', 'rs'], theme: 'travel', clue: 'People who go on a long journey, typically by sea or space' }, - // Seasons & Weather - { word: 'temperatures', tiles: ['tem', 'per', 'at', 'ures'], theme: 'weather', clue: 'The degrees or intensities of heat present in an area' }, - { word: 'precipitation', tiles: ['pre', 'cip', 'ita', 'tion'], theme: 'weather', clue: 'Rain, snow, sleet, or hail that falls to the ground' }, - { word: 'meteorology', tiles: ['me', 'teo', 'rol', 'ogy'], theme: 'weather', clue: 'The science concerned with processes of the atmosphere' }, - { word: 'hibernation', tiles: ['hi', 'ber', 'na', 'tion'], theme: 'weather', clue: 'The condition or period of an animal spending winter asleep' }, - { word: 'illumination', tiles: ['il', 'lum', 'ina', 'tion'], theme: 'weather', clue: 'Lighting or light provided' }, + // Weather & Atmosphere + { word: 'meteorology', tiles: ['me', 'teo', 'rol', 'ogy'], theme: 'weather', clue: 'The science of atmospheric processes and forecasting' }, + { word: 'temperatures', tiles: ['tem', 'per', 'at', 'ures'], theme: 'weather', clue: 'The degrees of heat present in substance or area' }, + { word: 'precipitation', tiles: ['pre', 'cip', 'ita', 'tion'], theme: 'weather', clue: 'Rain, snow, sleet, or hail falling to the ground' }, + { word: 'cloudburst', tiles: ['clo', 'ud', 'bur', 'st'], theme: 'weather', clue: 'A sudden, violent rainstorm' }, + { word: 'thunderstorm', tiles: ['thun', 'der', 'sto', 'rm'], theme: 'weather', clue: 'A storm with thunder and lightning and heavy rain' }, - // Botany & Garden - { word: 'photosynthesis', tiles: ['pho', 'to', 'syn', 'thesis'], theme: 'plants', clue: 'Process by which green plants synthesize nutrients' }, - { word: 'chlorophyll', tiles: ['chl', 'oro', 'ph', 'yll'], theme: 'plants', clue: 'A green pigment responsible for light absorption in plants' }, - { word: 'horticulture', tiles: ['hor', 'ti', 'cul', 'ture'], theme: 'plants', clue: 'The art or practice of garden cultivation' }, + // Botany & Plants + { word: 'photosynthesis', tiles: ['pho', 'tos', 'yn', 'thesis'], theme: 'plants', clue: 'Process by which green plants synthesize nutrients' }, + { word: 'horticulture', tiles: ['hor', 'tic', 'ul', 'ture'], theme: 'plants', clue: 'The art or practice of garden cultivation' }, + { word: 'evergreen', tiles: ['ev', 'er', 'gre', 'en'], theme: 'plants', clue: 'A plant that retains green leaves throughout the year' }, { word: 'germination', tiles: ['ger', 'mi', 'na', 'tion'], theme: 'plants', clue: 'The development of a plant from a seed or spore' }, - { word: 'cultivation', tiles: ['cul', 'ti', 'va', 'tion'], theme: 'plants', clue: 'The act of caring for and encouraging plant growth' }, + { word: 'sunflowers', tiles: ['sun', 'flo', 'we', 'rs'], theme: 'plants', clue: 'Tall plants with very large, daisy-like yellow flowers' }, - // Wisdom & Knowledge - { word: 'extraordinary', tiles: ['ex', 'tra', 'ordi', 'nary'], theme: 'wisdom', clue: 'Very unusual or remarkable' }, - { word: 'satisfaction', tiles: ['sa', 'tis', 'fac', 'tion'], theme: 'wisdom', clue: 'Fulfillment of one wishes or expectations' }, - { word: 'anticipation', tiles: ['an', 'ti', 'cip', 'ation'], theme: 'wisdom', clue: 'The act of expecting something in advance' }, - { word: 'consideration', tiles: ['con', 'sid', 'era', 'tion'], theme: 'wisdom', clue: 'Careful thought over a period of time' }, - { word: 'investigation', tiles: ['in', 'ves', 'ti', 'gation'], theme: 'wisdom', clue: 'A formal inquiry or systematic examination' }, + // Grit & Endeavor + { word: 'determination', tiles: ['de', 'ter', 'mi', 'nation'], theme: 'endeavor', clue: 'Firmness of purpose; resoluteness' }, + { word: 'courageous', tiles: ['cou', 'rag', 'eo', 'us'], theme: 'endeavor', clue: 'Not deterred by danger or pain; brave' }, + { word: 'championship', tiles: ['cham', 'pion', 'sh', 'ip'], theme: 'endeavor', clue: 'A competition to decide the victor or champion' }, + { word: 'achievement', tiles: ['ach', 'iev', 'em', 'ent'], theme: 'endeavor', clue: 'A thing done successfully with effort, skill, or courage' }, + { word: 'perseverance', tiles: ['per', 'sev', 'era', 'nce'], theme: 'endeavor', clue: 'Persistence in doing something despite difficulty' }, - // Ocean & Marine + // Oceanic Depths { word: 'oceanography', tiles: ['oce', 'ano', 'gra', 'phy'], theme: 'ocean', clue: 'The branch of science that deals with physical oceans' }, { word: 'submersible', tiles: ['sub', 'mer', 'si', 'ble'], theme: 'ocean', clue: 'Designed to operate completely underwater' }, - { word: 'navigation', tiles: ['na', 'vi', 'ga', 'tion'], theme: 'ocean', clue: 'Planning and directing route of ship or craft' }, - { word: 'constellation', tiles: ['con', 'ste', 'lla', 'tion'], theme: 'ocean', clue: 'A group of stars forming a recognizable pattern' }, - { word: 'mediterranean', tiles: ['med', 'ite', 'rra', 'nean'], theme: 'ocean', clue: 'Of or characteristic of the Mediterranean Sea' }, + { word: 'underwater', tiles: ['un', 'der', 'wa', 'ter'], theme: 'ocean', clue: 'Situated or occurring below water surface' }, + { word: 'crustaceans', tiles: ['cru', 'sta', 'ce', 'ans'], theme: 'ocean', clue: 'Aquatic arthropods like crabs, lobsters, and shrimp' }, + { word: 'exploration', tiles: ['ex', 'plo', 'ra', 'tion'], theme: 'ocean', clue: 'The action of traveling through an unfamiliar area' }, - // Human Endeavor - { word: 'determination', tiles: ['de', 'ter', 'mi', 'nation'], theme: 'endeavor', clue: 'Firmness of purpose; resoluteness' }, - { word: 'perseverance', tiles: ['per', 'sev', 'er', 'ance'], theme: 'endeavor', clue: 'Persistence in doing something despite difficulty' }, - { word: 'accomplished', tiles: ['ac', 'com', 'pli', 'shed'], theme: 'endeavor', clue: 'Highly trained or skilled in a field' }, - { word: 'achievement', tiles: ['ach', 'ie', 've', 'ment'], theme: 'endeavor', clue: 'A thing done successfully with effort' }, - { word: 'distinguished', tiles: ['dis', 'tin', 'gui', 'shed'], theme: 'endeavor', clue: 'Successful, well known, and respected' }, - - // Energy & Physics + // Physics & Energy { word: 'electricity', tiles: ['el', 'ect', 'ri', 'city'], theme: 'physics', clue: 'Form of energy from charged elementary particles' }, - { word: 'acceleration', tiles: ['ac', 'cel', 'era', 'tion'], theme: 'physics', clue: 'The rate of change of velocity per unit time' }, { word: 'thermodynamic', tiles: ['the', 'rmo', 'dyn', 'amic'], theme: 'physics', clue: 'Relating to heat and its relation to work and energy' }, { word: 'equilibrium', tiles: ['equ', 'ili', 'bri', 'um'], theme: 'physics', clue: 'A state in which opposing forces are balanced' }, - { word: 'radioactivity', tiles: ['rad', 'ioa', 'cti', 'vity'], theme: 'physics', clue: 'The emission of ionizing radiation from nuclei' } + { word: 'radioactive', tiles: ['rad', 'ioa', 'cti', 've'], theme: 'physics', clue: 'Emitting ionizing radiation from nuclei' }, + { word: 'magnetism', tiles: ['mag', 'ne', 'ti', 'sm'], theme: 'physics', clue: 'A physical phenomenon produced by the motion of electric charge' }, + + // Additional 100+ unique words for Random Unlimited Generator + { word: 'kaleidoscope', tiles: ['kal', 'eid', 'osc', 'ope'], theme: 'arts', clue: 'Optical instrument with reflective surfaces showing patterns' }, + { word: 'rollercoaster', tiles: ['rol', 'ler', 'coas', 'ter'], theme: 'fun', clue: 'Amusement park ride with steep slopes and curves' }, + { word: 'firecracker', tiles: ['fi', 'rec', 'rac', 'ker'], theme: 'fun', clue: 'A loud explosive firework' }, + { word: 'helicopter', tiles: ['he', 'li', 'cop', 'ter'], theme: 'travel', clue: 'Aircraft with horizontally rotating blades' }, + { word: 'motorcycle', tiles: ['mo', 'tor', 'cy', 'cle'], theme: 'travel', clue: 'Two-wheeled vehicle powered by an engine' }, + { word: 'candlestick', tiles: ['can', 'dle', 'sti', 'ck'], theme: 'craft', clue: 'A holder with a socket or spike for a candle' }, + { word: 'peppermint', tiles: ['pep', 'per', 'mi', 'nt'], theme: 'food', clue: 'A pungent herb or sweet flavoring' }, + { word: 'cheesecake', tiles: ['chee', 'se', 'ca', 'ke'], theme: 'food', clue: 'A rich sweet dessert made with soft cheese' }, + { word: 'gingerbread', tiles: ['gin', 'ger', 'bre', 'ad'], theme: 'food', clue: 'A cake or cookie flavored with ginger and molasses' }, + { word: 'blueberries', tiles: ['blue', 'ber', 'ri', 'es'], theme: 'food', clue: 'Small sweet blue-colored edible berries' }, + { word: 'strawberries', tiles: ['straw', 'ber', 'ri', 'es'], theme: 'food', clue: 'Sweet juicy red fruit with seeds on surface' }, + { word: 'waterproofing', tiles: ['wa', 'ter', 'pro', 'ofing'], theme: 'craft', clue: 'Making an object impervious to water' }, + { word: 'troubleshooter', tiles: ['trou', 'ble', 'shoo', 'ter'], theme: 'tech', clue: 'Someone who identifies and solves problems' }, + { word: 'heartwarming', tiles: ['hea', 'rtw', 'arm', 'ing'], theme: 'emotion', clue: 'Evoking feelings of happiness and contentment' }, + { word: 'groundbreaking', tiles: ['gro', 'und', 'bre', 'aking'], theme: 'endeavor', clue: 'Innovative; applying new ideas' }, + { word: 'brainstorming', tiles: ['bra', 'inst', 'orm', 'ing'], theme: 'mind', clue: 'Spontaneous group discussion to produce ideas' }, + { word: 'hydroelectric', tiles: ['hyd', 'roe', 'lec', 'tric'], theme: 'physics', clue: 'Relating to generation of electricity using water flow' }, + { word: 'aerodynamics', tiles: ['aer', 'ody', 'nam', 'ics'], theme: 'physics', clue: 'Study of forces and motion of air around objects' }, + { word: 'superpower', tiles: ['su', 'per', 'po', 'wer'], theme: 'society', clue: 'An exceptionally powerful nation or ability' }, + { word: 'leadership', tiles: ['lead', 'er', 'sh', 'ip'], theme: 'society', clue: 'The action of leading a group or organization' }, + { word: 'brotherhood', tiles: ['bro', 'ther', 'ho', 'od'], theme: 'society', clue: 'An association or community of people' }, + { word: 'windsurfers', tiles: ['wind', 'sur', 'fe', 'rs'], theme: 'sports', clue: 'Person who engages in board sailing' }, + { word: 'paraglider', tiles: ['pa', 'rag', 'lid', 'er'], theme: 'sports', clue: 'Non-motorized, foot-launched glider aircraft' }, + { word: 'thermometer', tiles: ['ther', 'mo', 'me', 'ter'], theme: 'science', clue: 'Instrument for measuring temperature' }, + { word: 'barometer', tiles: ['ba', 'rom', 'et', 'er'], theme: 'science', clue: 'Instrument measuring atmospheric pressure' }, + { word: 'speedometer', tiles: ['spee', 'dom', 'et', 'er'], theme: 'science', clue: 'Instrument on a vehicle indicating speed' }, + { word: 'cartography', tiles: ['car', 'tog', 'ra', 'phy'], theme: 'science', clue: 'The science or practice of drawing maps' }, + { word: 'oceanfront', tiles: ['oce', 'anf', 'ro', 'nt'], theme: 'nature', clue: 'Land facing directly toward the ocean' }, + { word: 'rainforest', tiles: ['rain', 'fo', 're', 'st'], theme: 'nature', clue: 'A dense forest rich in biodiversity' }, + { word: 'waterfalls', tiles: ['wa', 'ter', 'fa', 'lls'], theme: 'nature', clue: 'Cascade of water falling from a height' }, + { word: 'dragonflies', tiles: ['dra', 'gon', 'fli', 'es'], theme: 'nature', clue: 'Fast-flying insects with long bodies and two pairs of wings' }, + { word: 'sandwiches', tiles: ['sand', 'wi', 'ch', 'es'], theme: 'food', clue: 'Slices of bread with filling between them' }, + { word: 'shortbread', tiles: ['sho', 'rtb', 're', 'ad'], theme: 'food', clue: 'A crisp rich crumbly biscuit' }, + { word: 'blacksmith', tiles: ['bla', 'cks', 'mi', 'th'], theme: 'craft', clue: 'A person who makes and repairs things in iron' }, + { word: 'silversmith', tiles: ['sil', 'ver', 'smi', 'th'], theme: 'craft', clue: 'A person who crafts objects out of silver' }, + { word: 'coppersmith', tiles: ['cop', 'per', 'smi', 'th'], theme: 'craft', clue: 'A person who makes artifacts from copper' }, + { word: 'locksmiths', tiles: ['loc', 'ksm', 'it', 'hs'], theme: 'craft', clue: 'People who make and repair locks' }, + { word: 'woodworking', tiles: ['wood', 'wor', 'ki', 'ng'], theme: 'craft', clue: 'The activity or skill of making items from wood' }, + { word: 'shipbuilder', tiles: ['ship', 'bui', 'ld', 'er'], theme: 'craft', clue: 'A person or business that designs and constructs ships' }, + { word: 'stonecutter', tiles: ['sto', 'ne', 'cut', 'ter'], theme: 'craft', clue: 'A person who cuts, carves, or dresses stone' }, + { word: 'glassblower', tiles: ['gla', 'ssb', 'low', 'er'], theme: 'craft', clue: 'A person who shapes molten glass by blowing air into it' }, + { word: 'watchmakers', tiles: ['wat', 'chm', 'ake', 'rs'], theme: 'craft', clue: 'Artisans who make and repair watches' }, + { word: 'matchmakers', tiles: ['mat', 'chm', 'ake', 'rs'], theme: 'society', clue: 'People who arrange marriages or partnerships' }, + { word: 'homemakers', tiles: ['hom', 'em', 'ake', 'rs'], theme: 'society', clue: 'People who manage a household' }, + { word: 'playmakers', tiles: ['pla', 'yma', 'ke', 'rs'], theme: 'sports', clue: 'Players who control the flow of the team offensive play' }, + { word: 'gatekeepers', tiles: ['gat', 'eke', 'ep', 'ers'], theme: 'society', clue: 'Attendants controlling access through an entrance' }, + { word: 'peacekeeper', tiles: ['pea', 'cek', 'eep', 'er'], theme: 'society', clue: 'A person maintaining peace, especially in conflict zones' }, + { word: 'bookkeeper', tiles: ['boo', 'kke', 'ep', 'er'], theme: 'business', clue: 'A person whose job is to keep financial records' }, + { word: 'shopkeeper', tiles: ['sho', 'pke', 'ep', 'er'], theme: 'business', clue: 'An owner or manager of a small shop' }, + { word: 'innkeepers', tiles: ['inn', 'kee', 'pe', 'rs'], theme: 'business', clue: 'People who run an inn' }, + { word: 'goalscorers', tiles: ['goa', 'lsc', 'ore', 'rs'], theme: 'sports', clue: 'Athletes who score goals in games' }, + { word: 'cheerleader', tiles: ['che', 'erl', 'ead', 'er'], theme: 'sports', clue: 'A member of a team that leads cheering' }, + { word: 'trendsetter', tiles: ['tre', 'nds', 'ett', 'er'], theme: 'society', clue: 'A person who leads the way in fashion or ideas' }, + { word: 'bellwethers', tiles: ['bel', 'lwe', 'the', 'rs'], theme: 'society', clue: 'Something that leads or indicates future trends' }, + { word: 'underwriter', tiles: ['und', 'erw', 'rit', 'er'], theme: 'business', clue: 'A company or person guaranteeing an undertaking' }, + { word: 'copywriters', tiles: ['cop', 'ywr', 'ite', 'rs'], theme: 'business', clue: 'A person who writes text for advertising' }, + { word: 'ghostwriter', tiles: ['gho', 'stw', 'rit', 'er'], theme: 'words', clue: 'A person hired to write literary or journalistic work' }, + { word: 'screenwriter', tiles: ['scr', 'een', 'wri', 'ter'], theme: 'arts', clue: 'A person who writes screenplays for films' }, + { word: 'playwrights', tiles: ['pla', 'ywr', 'igh', 'ts'], theme: 'arts', clue: 'People who write plays' }, + { word: 'songwriters', tiles: ['son', 'gwr', 'ite', 'rs'], theme: 'arts', clue: 'Musicians who write musical compositions and lyrics' }, + { word: 'headmasters', tiles: ['hea', 'dma', 'ste', 'rs'], theme: 'education', clue: 'Teachers in charge of a school' }, + { word: 'ringmasters', tiles: ['rin', 'gma', 'ste', 'rs'], theme: 'circus', clue: 'The master of ceremonies in a circus' }, + { word: 'grandmaster', tiles: ['gra', 'ndm', 'ast', 'er'], theme: 'games', clue: 'The highest title awarded to a chess player' }, + { word: 'quarterback', tiles: ['qua', 'rte', 'rba', 'ck'], theme: 'sports', clue: 'A player in American football directing play' }, + { word: 'sweatshirts', tiles: ['swe', 'atsh', 'ir', 'ts'], theme: 'clothes', clue: 'Loose warm casual cotton pullover shirts' }, + { word: 'turtlenecks', tiles: ['tur', 'tle', 'nec', 'ks'], theme: 'clothes', clue: 'High, close-fitting turned-over collars' }, + { word: 'windbreaker', tiles: ['win', 'dbr', 'eak', 'er'], theme: 'clothes', clue: 'A wind-resistant lightweight jacket' }, + { word: 'rainjackets', tiles: ['rai', 'nja', 'cke', 'ts'], theme: 'clothes', clue: 'Water-resistant outer coats' }, + { word: 'leatherback', tiles: ['lea', 'the', 'rba', 'ck'], theme: 'nature', clue: 'The largest living sea turtle with leathery carapace' }, + { word: 'silverback', tiles: ['sil', 'ver', 'ba', 'ck'], theme: 'nature', clue: 'An older mature male mountain gorilla' }, + { word: 'paddleboard', tiles: ['pad', 'dle', 'bo', 'ard'], theme: 'sports', clue: 'A long board propelled with a paddle' }, + { word: 'springboard', tiles: ['spr', 'ing', 'bo', 'ard'], theme: 'sports', clue: 'A flexible board used in diving or gymnastics' }, + { word: 'checkerboard', tiles: ['che', 'cke', 'rbo', 'ard'], theme: 'games', clue: 'A game board divided into sixty-four squares' }, + { word: 'blackboards', tiles: ['bla', 'ckb', 'oar', 'ds'], theme: 'education', clue: 'Dark reusable writing surfaces for chalk' }, + { word: 'whiteboards', tiles: ['whi', 'teb', 'oar', 'ds'], theme: 'education', clue: 'Glossy white boards for nonpermanent markers' }, + { word: 'noticeboards', tiles: ['not', 'ice', 'boa', 'rds'], theme: 'society', clue: 'Boards for displaying notices or advertisements' }, + { word: 'smorgasbord', tiles: ['smo', 'rga', 'sbo', 'rd'], theme: 'food', clue: 'A buffet offering a variety of hot and cold dishes' } ]; -console.log('Target words pool size:', targetWordsPool.length); +// Merge expanded word list (skip invalid entries with a warning instead of failing) +{ + const existing = new Set(targetWordsPool.map(w => w.word)); + let added = 0; + for (const item of extraWords) { + const problems = []; + if (existing.has(item.word)) problems.push('duplicate word'); + if (item.tiles.length !== 4) problems.push('not 4 tiles'); + if (item.tiles.join('') !== item.word) problems.push(`tiles spell "${item.tiles.join('')}"`); + if (!item.tiles.every(t => t.length >= 2)) problems.push('tile < 2 letters'); + if (new Set(item.tiles).size !== item.tiles.length) problems.push('repeated tile within word'); + if (!DICTIONARY_SET.has(item.word)) problems.push('not in runtime dictionary'); + if (problems.length) { + console.warn(` Skipping extra word "${item.word}": ${problems.join(', ')}`); + continue; + } + existing.add(item.word); + targetWordsPool.push(item); + added++; + } + console.log(`Merged ${added} extra target words.`); +} + +// Validate pool integrity +for (const item of targetWordsPool) { + if (item.tiles.join('') !== item.word) { + throw new Error(`Word spelling mismatch: ${item.word} !== ${item.tiles.join('')}`); + } + if (!item.tiles.every(t => t.length >= 2)) { + throw new Error(`Word contains tile < 2 chars: ${item.word} -> ${JSON.stringify(item.tiles)}`); + } + if (item.tiles.length !== 4) { + throw new Error(`Word does not have 4 tiles: ${item.word}`); + } +} + +console.log('Target words pool verified! Total words:', targetWordsPool.length); -// Generate 30 curated daily and themed puzzles const dailyPuzzlesDefs = [ { id: '2026-10-23', @@ -166,7 +296,7 @@ const dailyPuzzlesDefs = [ title: 'Daily Puzzle — Oct 27, 2026', theme: 'Harmony & Arts', difficulty: 'Normal', - words: ['symphony', 'masterpiece', 'performance', 'exhibition', 'creativity'] + words: ['symphonically', 'masterpiece', 'calligraphy', 'exhibition', 'creativity'] }, { id: '2026-10-28', @@ -174,7 +304,7 @@ const dailyPuzzlesDefs = [ title: 'Daily Puzzle — Oct 28, 2026', theme: 'Digital Future', difficulty: 'Normal', - words: ['technology', 'electronic', 'automation', 'innovation', 'computation'] + words: ['technology', 'electronic', 'automation', 'semiconductor', 'cybersecurity'] }, { id: '2026-10-29', @@ -182,7 +312,7 @@ const dailyPuzzlesDefs = [ title: 'Daily Puzzle — Oct 29, 2026', theme: 'Celebrations', difficulty: 'Easy', - words: ['celebration', 'communication', 'relationship', 'opportunity', 'conversation'] + words: ['celebration', 'fellowship', 'generosity', 'opportunity', 'marshmallow'] }, { id: '2026-10-30', @@ -190,7 +320,7 @@ const dailyPuzzlesDefs = [ title: 'Daily Puzzle — Oct 30, 2026', theme: 'Wild Kingdom', difficulty: 'Normal', - words: ['biodiversity', 'environment', 'caterpillar', 'underwater', 'thunderstorm'] + words: ['biodiversity', 'environment', 'caterpillar', 'wilderness', 'chameleon'] }, { id: '2026-10-31', @@ -198,7 +328,7 @@ const dailyPuzzlesDefs = [ title: 'Daily Puzzle — Oct 31, 2026', theme: 'Mysteries & Legends', difficulty: 'Challenging', - words: ['mysterious', 'determination', 'perseverance', 'investigation', 'anticipation'] + words: ['mysterious', 'supernatural', 'apparition', 'enchanted', 'miraculous'] }, { id: '2026-10-22', @@ -206,7 +336,7 @@ const dailyPuzzlesDefs = [ title: 'Daily Puzzle — Oct 22, 2026', theme: 'Scientific Insight', difficulty: 'Normal', - words: ['required', 'equivalent', 'objection', 'justification', 'mysterious'] + words: ['equivalent', 'hypothesis', 'laboratory', 'microscope', 'phenomenon'] }, { id: '2026-10-21', @@ -214,7 +344,7 @@ const dailyPuzzlesDefs = [ title: 'Daily Puzzle — Oct 21, 2026', theme: 'Wordsmith Almanac', difficulty: 'Normal', - words: ['vocabulary', 'encyclopedia', 'dictionary', 'manuscript', 'translation'] + words: ['dictionary', 'manuscript', 'encyclopedia', 'literature', 'proverbial'] }, { id: '2026-10-20', @@ -222,7 +352,7 @@ const dailyPuzzlesDefs = [ title: 'Daily Puzzle — Oct 20, 2026', theme: 'Globe Trekker', difficulty: 'Normal', - words: ['destination', 'navigation', 'continental', 'expedition', 'exploration'] + words: ['backpacker', 'locomotive', 'continental', 'navigation', 'voyagers'] }, { id: '2026-10-19', @@ -230,7 +360,7 @@ const dailyPuzzlesDefs = [ title: 'Daily Puzzle — Oct 19, 2026', theme: 'Atmospheric Skies', difficulty: 'Challenging', - words: ['temperatures', 'precipitation', 'meteorology', 'hibernation', 'illumination'] + words: ['meteorology', 'temperatures', 'precipitation', 'stratosphere', 'cloudburst'] }, { id: '2026-10-18', @@ -238,7 +368,7 @@ const dailyPuzzlesDefs = [ title: 'Daily Puzzle — Oct 18, 2026', theme: 'Green Oasis', difficulty: 'Normal', - words: ['photosynthesis', 'chlorophyll', 'horticulture', 'germination', 'cultivation'] + words: ['photosynthesis', 'horticulture', 'evergreen', 'germination', 'sunflowers'] }, { id: '2026-10-17', @@ -246,7 +376,7 @@ const dailyPuzzlesDefs = [ title: 'Daily Puzzle — Oct 17, 2026', theme: 'Grit & Glory', difficulty: 'Normal', - words: ['determination', 'perseverance', 'accomplished', 'achievement', 'distinguished'] + words: ['determination', 'courageous', 'championship', 'achievement', 'perseverance'] }, { id: '2026-10-16', @@ -254,7 +384,7 @@ const dailyPuzzlesDefs = [ title: 'Daily Puzzle — Oct 16, 2026', theme: 'Oceanic Depths', difficulty: 'Challenging', - words: ['oceanography', 'submersible', 'constellation', 'mediterranean', 'exploration'] + words: ['oceanography', 'submersible', 'underwater', 'crustaceans', 'exploration'] }, { id: '2026-10-15', @@ -262,7 +392,7 @@ const dailyPuzzlesDefs = [ title: 'Daily Puzzle — Oct 15, 2026', theme: 'Energy & Waves', difficulty: 'Expert', - words: ['electricity', 'acceleration', 'thermodynamic', 'equilibrium', 'radioactivity'] + words: ['electricity', 'thermodynamic', 'equilibrium', 'radioactive', 'magnetism'] } ]; @@ -281,7 +411,23 @@ for (const def of dailyPuzzlesDefs) { return found.tiles; }); - const solved = solveBoard(quartets); + const allTiles = quartets.flat(); + // STRICT ASSERTIONS + if (new Set(allTiles).size !== 20) { + const counts = {}; + allTiles.forEach(t => counts[t] = (counts[t] || 0) + 1); + const dupes = Object.entries(counts).filter(([_, c]) => c > 1); + throw new Error(`Puzzle ${def.id} has duplicate tiles: ${JSON.stringify(dupes)}`); + } + if (allTiles.some(t => t.length < 2)) { + throw new Error(`Puzzle ${def.id} has a tile < 2 chars: ${JSON.stringify(allTiles)}`); + } + + const solved = solveBoard(quartets, 30); + + if (solved.wordCount > 30) { + throw new Error(`Puzzle ${def.id} exceeds 30 words: ${solved.wordCount}`); + } // Add clues to target quartiles const quartileDetails = def.words.map(w => { diff --git a/scripts/extra-words.mjs b/scripts/extra-words.mjs new file mode 100644 index 0000000..fe14150 --- /dev/null +++ b/scripts/extra-words.mjs @@ -0,0 +1,325 @@ +// Expanded target-word pool for Quartiles. +// Format per line: word|t1-t2-t3-t4|theme|clue +// Rules (validated in build-all-data.mjs): +// - tiles join exactly to the word +// - exactly 4 tiles, each >= 2 letters +// - no repeated tile within a single word +const RAW = ` +alligator|al-li-ga-tor|animals|Large reptile of southern swamps +armadillo|ar-ma-dil-lo|animals|Burrowing mammal with a bony armored shell +crocodile|cro-co-di-le|animals|Large aquatic reptile with powerful jaws +porcupine|por-cu-pi-ne|animals|Rodent covered in sharp protective quills +salamander|sa-la-man-der|animals|Lizard-like amphibian with moist skin +orangutan|or-an-gu-tan|animals|Red-haired great ape of Borneo and Sumatra +kangaroos|kan-ga-ro-os|animals|Hopping marsupials of Australia +centipede|cen-ti-pe-de|animals|Arthropod with a great many legs +tarantula|ta-ran-tu-la|animals|Large hairy spider +jellyfish|jel-ly-fi-sh|animals|Free-swimming sea creature with stinging tentacles +seahorses|sea-ho-rs-es|animals|Small upright fish with horse-like heads +nightingale|nigh-tin-ga-le|animals|Songbird famous for singing at night +rhinoceros|rhi-no-ce-ros|animals|Large horned herbivore of Africa and Asia +hippopotamus|hip-po-pota-mus|animals|Massive semi-aquatic African mammal +chimpanzee|chim-pa-nz-ee|animals|Intelligent African great ape +wolverine|wol-ve-ri-ne|animals|Fierce carnivore of northern forests +mockingbird|mock-ing-bi-rd|animals|Bird that imitates the songs of others +roadrunner|ro-ad-run-ner|animals|Fast-running desert bird +platypus|pl-at-yp-us|animals|Egg-laying mammal with a duck-like bill +scorpions|sc-or-pi-ons|animals|Arachnids with a venomous curved tail +octopuses|oc-to-pu-ses|animals|Eight-armed sea creatures +barracuda|bar-ra-cu-da|animals|Predatory fish with fang-like teeth +cockroaches|cock-ro-ach-es|animals|Hardy scuttling household insects +cappuccino|cap-pu-cci-no|food|Espresso topped with frothy milk +spaghetti|sp-ag-het-ti|food|Long thin strands of pasta +macaroni|ma-ca-ro-ni|food|Small tube-shaped pasta +broccoli|br-oc-co-li|food|Green vegetable with tree-like florets +pineapple|pi-ne-ap-ple|food|Tropical fruit with spiky skin +watermelon|wa-ter-mel-on|food|Large juicy summer fruit with a green rind +pomegranate|pom-egr-an-ate|food|Fruit packed with juicy red seeds +chocolate|cho-co-la-te|food|Sweet treat made from roasted cacao +cinnamon|ci-nn-am-on|food|Warm spice made from tree bark +blackberry|bla-ckb-er-ry|food|Dark bramble fruit +raspberry|ras-pb-er-ry|food|Soft red berry with a hollow core +tangerine|tan-ge-ri-ne|food|Small, easy-to-peel citrus fruit +mozzarella|moz-za-rel-la|food|Soft white Italian cheese +guacamole|gua-ca-mo-le|food|Avocado-based Mexican dip +margarine|mar-ga-ri-ne|food|Butter substitute made from vegetable oils +casserole|cas-se-ro-le|food|Dish slow-cooked in the oven +croissant|cr-ois-sa-nt|food|Flaky crescent-shaped French pastry +hamburger|ham-bu-rg-er|food|Ground beef patty served in a bun +pancakes|pa-nc-ak-es|food|Flat breakfast cakes cooked on a griddle +marmalade|mar-ma-la-de|food|Citrus fruit preserve +butterscotch|but-ters-cot-ch|food|Candy made from brown sugar and butter +lemonade|le-mo-na-de|food|Sweetened drink made with lemon juice +peppercorn|pep-per-co-rn|food|Dried berry ground into black pepper +artichoke|ar-ti-cho-ke|food|Edible thistle flower bud +asparagus|as-pa-ra-gus|food|Spring vegetable with tender green spears +cauliflower|cau-li-flo-wer|food|White-headed cabbage-family vegetable +vegetables|ve-ge-ta-bles|food|Edible plants or plant parts +dumplings|dum-pl-in-gs|food|Small balls of dough, often filled +meatballs|me-at-ba-lls|food|Rolled balls of seasoned ground meat +honeycomb|ho-ney-co-mb|food|Wax structure where bees store honey +cheeseburger|chee-se-bur-ger|food|Hamburger topped with melted cheese +sauerkraut|sau-er-kra-ut|food|Finely cut fermented cabbage +breakfast|bre-ak-fa-st|food|The first meal of the day +basketball|bas-ket-ba-ll|sports|Game of shooting a ball through a hoop +volleyball|vol-ley-ba-ll|sports|Game of hitting a ball over a high net +badminton|bad-mi-nt-on|sports|Racket sport played with a shuttlecock +gymnastics|gym-nas-ti-cs|sports|Sport of balance, strength, and flips +skateboard|ska-te-bo-ard|sports|Wheeled board ridden for tricks +snowboarding|snow-boar-di-ng|sports|Sliding down snowy slopes on one board +marathon|ma-ra-th-on|sports|Long-distance running race +wrestling|wre-st-li-ng|sports|Grappling sport of pins and holds +lacrosse|la-cr-os-se|sports|Field sport played with netted sticks +tournament|tour-na-me-nt|sports|A series of contests to find a champion +crossword|cro-ss-wo-rd|games|Grid puzzle solved from clues +backgammon|ba-ckg-am-mon|games|Ancient board game of dice and checkers +dominoes|do-mi-no-es|games|Game of matching spotted tiles +trampoline|tram-po-li-ne|sports|Springy mat for bouncing +goalkeeper|goal-ke-ep-er|sports|Player who guards the net +swimming|sw-im-mi-ng|sports|Moving through water using limbs +surfboard|su-rf-bo-ard|sports|Board used for riding waves +racquetball|rac-quet-ba-ll|sports|Fast indoor racket sport +scoreboard|sco-re-bo-ard|sports|Large display showing a game's points +touchdown|to-uch-do-wn|sports|Six-point score in American football +cartwheel|ca-rt-whe-el|sports|Sideways handspring with arms and legs extended +hopscotch|hop-sc-ot-ch|games|Playground hopping game drawn in chalk +checkmate|che-ck-ma-te|games|Winning position in chess +astronaut|as-tro-na-ut|jobs|Person trained to travel into space +carpenter|ca-rp-en-ter|jobs|Person who builds things from wood +electrician|elec-tri-ci-an|jobs|Person who installs and repairs wiring +firefighter|fire-fig-ht-er|jobs|Person who puts out fires +journalist|jour-na-li-st|jobs|Person who writes news stories +librarian|li-bra-ri-an|jobs|Person who manages a collection of books +magician|ma-gi-ci-an|jobs|Performer of illusions and tricks +mechanic|me-ch-an-ic|jobs|Person who repairs engines +musician|mu-si-ci-an|jobs|Person who plays music +pharmacist|phar-ma-ci-st|jobs|Person who prepares medicines +photographer|pho-to-gra-pher|jobs|Person who takes pictures +professor|pr-of-ess-or|jobs|University teacher of the highest rank +scientist|sci-en-ti-st|jobs|Person who studies the natural world +detective|de-tec-ti-ve|jobs|Person who investigates crimes +architect|ar-chi-te-ct|jobs|Person who designs buildings +veterinarian|vet-eri-nar-ian|jobs|Doctor for animals +lifeguard|li-fe-gu-ard|jobs|Person who watches over swimmers +gardener|ga-rd-en-er|jobs|Person who tends plants +lumberjack|lum-ber-ja-ck|jobs|Person who fells trees +accountant|ac-cou-nt-ant|jobs|Person who keeps financial accounts +translator|tra-ns-la-tor|jobs|Person who converts text between languages +programmer|pro-gr-am-mer|jobs|Person who writes computer code +babysitter|ba-by-sit-ter|jobs|Person who looks after children +umbrella|um-br-el-la|home|Folding canopy that keeps off rain +telephone|te-le-pho-ne|home|Device for talking over a distance +television|te-le-vi-sion|home|Screen for watching broadcast shows +refrigerator|re-fri-ger-ator|home|Appliance that keeps food cold +dishwasher|dish-wa-sh-er|home|Appliance that cleans plates +microwave|mi-cro-wa-ve|home|Oven that heats food quickly +calculator|cal-cu-la-tor|home|Device for doing arithmetic +binoculars|bi-no-cu-lars|home|Two-lensed device for seeing far away +thermostat|ther-mo-st-at|home|Device that regulates temperature +wheelbarrow|whe-el-bar-row|home|One-wheeled cart for hauling loads +lawnmower|la-wn-mow-er|home|Machine for cutting grass +flashlight|fla-sh-lig-ht|home|Portable battery-powered light +toothbrush|too-th-br-ush|home|Small brush for cleaning teeth +pillowcase|pil-low-ca-se|home|Removable cover for a pillow +wardrobe|wa-rd-ro-be|home|Tall cabinet for hanging clothes +bookshelf|bo-ok-sh-elf|home|Shelf for holding books +chandelier|chan-de-li-er|home|Decorative hanging light fixture +typewriter|ty-pe-wri-ter|home|Mechanical machine for typing +paperclip|pa-per-cl-ip|home|Bent wire for holding sheets together +scissors|sc-is-so-rs|home|Two-bladed cutting tool +envelope|en-ve-lo-pe|home|Paper sleeve for mailing letters +suitcase|su-it-ca-se|home|Case for carrying clothes when traveling +candlelight|can-dle-li-ght|home|Soft glow from a burning wick +fireplace|fi-re-pla-ce|home|Hearth for an indoor fire +staircase|sta-ir-ca-se|home|Set of steps between floors +doorbell|do-or-be-ll|home|Button that chimes when visitors arrive +windowsill|win-dow-si-ll|home|Ledge at the bottom of a window +furniture|fur-ni-tu-re|home|Chairs, tables, beds, and the like +cupboard|cu-pb-oa-rd|home|Cabinet with shelves and doors +headphones|hea-dp-ho-nes|tech|Speakers worn over the ears +keyboard|ke-yb-oa-rd|tech|Panel of keys for typing +computer|co-mp-ut-er|tech|Electronic machine that processes data +smartphone|sma-rt-pho-ne|tech|Pocket-sized phone with apps +spreadsheet|spr-ead-she-et|tech|Grid of cells for calculations +password|pa-ss-wo-rd|tech|Secret word for logging in +algorithm|al-go-ri-thm|tech|Step-by-step procedure for solving a problem +satellite|sa-tel-li-te|tech|Object orbiting a planet +batteries|bat-te-ri-es|tech|Cells that store electrical energy +robotics|ro-bo-ti-cs|tech|Engineering of automated machines +database|da-ta-ba-se|tech|Organized store of information +software|so-ft-wa-re|tech|Programs that run on a computer +hardware|ha-rd-wa-re|tech|Physical parts of a computer +internet|in-te-rn-et|tech|Global network of computers +download|do-wn-lo-ad|tech|Copy a file from the web +wireless|wi-re-le-ss|tech|Without cables +microphone|mi-cro-pho-ne|tech|Device that picks up sound +avalanche|av-al-an-che|nature|Mass of snow rushing down a mountain +hurricane|hur-ri-ca-ne|nature|Powerful tropical storm +earthquake|ear-th-qua-ke|nature|Sudden shaking of the ground +tornadoes|tor-na-do-es|nature|Violently rotating columns of air +landscape|la-nd-sc-ape|nature|All the visible features of an area of land +mountains|mou-nt-ai-ns|nature|Very high natural elevations of land +peninsula|pe-nin-su-la|nature|Land almost surrounded by water +archipelago|ar-chi-pel-ago|nature|Group of islands +riverbank|ri-ver-ba-nk|nature|Land along the edge of a river +sandstone|sa-nd-sto-ne|nature|Rock formed from compressed sand +limestone|li-me-sto-ne|nature|Rock formed from ancient shells +grassland|gra-ss-la-nd|nature|Large open area covered in grass +moonlight|mo-on-li-ght|nature|Light reflected from the moon +sunshine|su-ns-hi-ne|nature|Direct light from the sun +starlight|st-ar-li-ght|nature|Light from distant stars +rainbows|ra-in-bo-ws|nature|Arcs of color after rain +snowflake|sn-ow-fla-ke|nature|Single ice crystal falling from the sky +lightning|li-ght-ni-ng|nature|Flash of electricity in a storm +blizzard|bl-iz-za-rd|nature|Severe snowstorm with strong winds +continent|con-ti-ne-nt|nature|One of Earth's large landmasses +countryside|coun-try-si-de|nature|Rural land outside towns +coastline|coa-st-li-ne|nature|Where land meets the sea +wildflower|wi-ld-flow-er|nature|Flower growing without cultivation +butterfly|bu-tt-er-fly|nature|Insect with large colorful wings +mushrooms|mu-sh-ro-oms|nature|Fungi with caps and stems +seashells|sea-sh-el-ls|nature|Shells found on the beach +driftwood|dri-ft-wo-od|nature|Wood washed ashore by water +happiness|hap-pi-ne-ss|emotion|State of being glad +excitement|ex-ci-te-ment|emotion|Feeling of great eagerness +confidence|con-fi-den-ce|emotion|Belief in one's own abilities +gratitude|gra-ti-tu-de|emotion|Feeling of thankfulness +kindness|ki-nd-ne-ss|emotion|Quality of being friendly and caring +curiosity|cu-ri-osi-ty|emotion|Strong desire to know or learn +enthusiasm|en-thu-si-asm|emotion|Intense enjoyment and interest +patience|pa-ti-en-ce|emotion|Ability to wait calmly +loneliness|lo-ne-li-ness|emotion|Sadness from being alone +nostalgia|no-st-al-gia|emotion|Wistful longing for the past +optimistic|op-ti-mis-tic|emotion|Hopeful about the future +wonderful|won-de-rf-ul|emotion|Inspiring delight +beautiful|be-au-ti-ful|emotion|Pleasing to the senses +delightful|de-li-ght-ful|emotion|Causing great pleasure +fantastic|fan-ta-st-ic|emotion|Extraordinarily good +generous|ge-ne-ro-us|emotion|Freely giving +cheerful|ch-ee-rf-ul|emotion|Noticeably happy +peaceful|pe-ac-ef-ul|emotion|Free from disturbance +mischievous|mis-chie-vo-us|emotion|Playfully causing trouble +hilarious|hi-la-ri-ous|emotion|Extremely funny +ambitious|am-bi-ti-ous|emotion|Strongly driven to succeed +fearless|fe-ar-le-ss|emotion|Lacking fear; bold +friendliness|fri-end-li-ness|emotion|Quality of being warm toward others +forgiveness|for-gi-ve-ness|emotion|Act of pardoning a wrong +compassion|com-pas-si-on|emotion|Sympathy for the suffering of others +serendipity|ser-en-dip-ity|emotion|Happy accident or lucky discovery +celebrate|ce-le-bra-te|emotion|Mark a happy occasion +passport|pa-ss-po-rt|travel|Document for crossing borders +lighthouse|li-ght-hou-se|travel|Tower with a guiding light for ships +submarine|sub-ma-ri-ne|travel|Vessel that travels underwater +sailboat|sa-il-bo-at|travel|Boat propelled by wind +destination|des-ti-na-tion|travel|Place one is traveling to +vacation|va-ca-ti-on|travel|Time off for rest or travel +itinerary|iti-ne-ra-ry|travel|Planned route of a journey +souvenir|so-uv-en-ir|travel|Keepsake from a trip +adventure|ad-ven-tu-re|travel|Exciting or daring experience +expedition|ex-pe-di-tion|travel|Journey with a purpose +railroad|ra-il-ro-ad|travel|Track for trains +motorway|mo-to-rw-ay|travel|Major high-speed road +crossroads|cro-ss-ro-ads|travel|Where two roads meet +campground|camp-gr-ou-nd|travel|Area for pitching tents +hitchhiker|hit-ch-hi-ker|travel|Person traveling by free rides +cathedral|ca-the-dr-al|places|Principal church of a diocese +monastery|mo-nas-te-ry|places|Home of a community of monks +observatory|ob-ser-va-tory|places|Building with telescopes for stargazing +playground|play-gr-ou-nd|places|Outdoor area for children to play +marketplace|mar-ket-pla-ce|places|Open area where goods are sold +restaurant|res-tau-ra-nt|places|Place where meals are served +supermarket|su-per-mar-ket|places|Large self-service grocery store +university|uni-ver-si-ty|places|Institution of higher learning +classroom|cl-ass-ro-om|places|Room where lessons are taught +apartment|apa-rt-me-nt|places|Set of rooms for living in +courthouse|co-ur-tho-use|places|Building where trials are held +greenhouse|gre-en-hou-se|places|Glass building for growing plants +warehouse|wa-re-hou-se|places|Large building for storing goods +farmhouse|fa-rm-hou-se|places|Main house on a farm +hospital|ho-sp-it-al|places|Place where the sick are treated +aquarium|aq-ua-ri-um|places|Tank or building housing aquatic life +orchestra|or-che-st-ra|arts|Large group of instrumental musicians +saxophone|sax-op-ho-ne|arts|Brass-bodied reed instrument used in jazz +xylophone|xy-lo-pho-ne|arts|Instrument of wooden bars struck with mallets +harmonica|har-mo-ni-ca|arts|Small mouth organ +accordion|ac-cor-di-on|arts|Squeezebox instrument with bellows +clarinet|cl-ar-in-et|arts|Woodwind with a single reed +trombone|tr-om-bo-ne|arts|Brass instrument with a slide +tambourine|tam-bou-ri-ne|arts|Hand drum with jingling discs +violinist|vi-ol-in-ist|arts|Person who plays the violin +melodious|me-lo-di-ous|arts|Pleasant-sounding; tuneful +painting|pa-in-ti-ng|arts|Picture made with paint +sculpture|scu-lp-tu-re|arts|Art made by carving or modeling +portrait|po-rt-ra-it|arts|Painting or photo of a person +animation|ani-ma-ti-on|arts|Technique of making drawings appear to move +cartoonist|car-to-on-ist|arts|Person who draws comics +storyteller|sto-ry-tel-ler|arts|Person who tells tales +novelist|no-ve-li-st|arts|Writer of novels +illustrator|il-lus-tra-tor|arts|Person who draws pictures for books +soundtrack|so-und-tra-ck|arts|Music accompanying a film +spotlight|spo-tl-ig-ht|arts|Strong beam of light on a performer +ballerina|bal-le-ri-na|arts|Female ballet dancer +symphony|sy-mp-ho-ny|arts|Elaborate composition for orchestra +masquerade|mas-que-ra-de|arts|Party where guests wear masks +dinosaur|di-no-sa-ur|history|Extinct prehistoric reptile +pyramids|py-ra-mi-ds|history|Ancient Egyptian monumental tombs +gladiator|gla-di-at-or|history|Roman arena fighter +knighthood|kni-ght-ho-od|history|Rank or status of a knight +wizardry|wi-za-rd-ry|fantasy|The art of magic +treasure|tr-ea-su-re|fantasy|Hoard of valuable riches +shipwreck|sh-ip-wre-ck|history|Destruction of a ship at sea +labyrinth|la-by-rin-th|fantasy|Complicated maze +mythology|my-tho-lo-gy|fantasy|Collection of traditional myths +legendary|le-gen-da-ry|fantasy|Famous; described in legends +invisible|in-vi-si-ble|fantasy|Unable to be seen +werewolf|we-re-wo-lf|fantasy|Person who turns into a wolf +vampires|va-mp-ir-es|fantasy|Blood-drinking creatures of legend +revolution|re-vo-lu-tion|history|Forcible overthrow of a government +independence|in-de-pen-dence|history|Freedom from outside control +democracy|de-mo-cra-cy|history|Government by the people +parliament|par-lia-me-nt|history|Legislative assembly +ambassador|am-bas-sa-dor|history|Diplomat representing a country abroad +president|pre-si-de-nt|history|Elected head of a republic +government|go-ver-nm-ent|history|Body that governs a nation +constitution|con-sti-tu-tion|history|Founding legal document of a nation +afternoon|af-ter-no-on|everyday|Time between noon and evening +yesterday|yes-te-rd-ay|everyday|The day before today +tomorrow|to-mo-rr-ow|everyday|The day after today +calendar|ca-le-nd-ar|everyday|Chart of days and months +everything|ev-ery-thi-ng|everyday|All things +somewhere|so-me-whe-re|everyday|In or to some place +basement|ba-se-me-nt|everyday|Floor below ground level +newspaper|ne-ws-pa-per|everyday|Daily printed news publication +magazine|ma-ga-zi-ne|everyday|Periodical with articles and photos +alphabet|al-ph-ab-et|education|Set of letters of a language +vocabulary|vo-ca-bu-lary|education|Body of words a person knows +homework|ho-me-wo-rk|education|Schoolwork done at home +notebook|no-te-bo-ok|education|Book of blank pages for notes +paintbrush|pa-int-bru-sh|education|Brush for applying paint +handwriting|hand-wri-ti-ng|education|Writing done by hand +spelling|sp-el-li-ng|education|Forming words from letters correctly +mathematics|ma-the-mat-ics|education|Science of numbers and shapes +geography|ge-og-ra-phy|education|Study of Earth's features +chemistry|che-mi-st-ry|education|Science of substances and reactions +experiment|ex-pe-ri-ment|science|Scientific test of a hypothesis +discovery|di-sco-ve-ry|science|Act of finding something new +invention|in-ven-ti-on|science|Something newly created +skeleton|sk-el-et-on|science|Framework of bones +vitamins|vi-ta-mi-ns|health|Nutrients needed in small amounts +medicine|me-di-ci-ne|health|Substance used to treat illness +bandages|ba-nd-ag-es|health|Strips of material for wounds +ambulance|am-bu-la-nce|health|Vehicle for emergency patients +heartbeat|hea-rt-be-at|health|Pulse of the heart +exercise|ex-er-ci-se|health|Physical activity for fitness +meditation|me-di-ta-tion|health|Practice of focused calm reflection +relaxation|re-la-xa-tion|health|State of being free from tension +`; + +export const extraWords = RAW.trim() + .split('\n') + .map(line => line.trim()) + .filter(Boolean) + .map(line => { + const [word, tiles, theme, clue] = line.split('|'); + return { word, tiles: tiles.split('-'), theme, clue }; + }); diff --git a/scripts/solver.mjs b/scripts/solver.mjs index af06e4d..a55d997 100644 --- a/scripts/solver.mjs +++ b/scripts/solver.mjs @@ -72,6 +72,13 @@ export function solveBoard(quartets, maxWords = 30) { const quartilesList = quartets.map(q => q.join('').toLowerCase()); const quartileSet = new Set(quartilesList); + // Target quartiles are always valid, even if missing from the dictionary + quartilesList.forEach((word, qIdx) => { + if (!foundMap.has(word)) { + foundMap.set(word, [qIdx * 4, qIdx * 4 + 1, qIdx * 4 + 2, qIdx * 4 + 3]); + } + }); + let words = []; for (const [word, path] of foundMap.entries()) { diff --git a/src/components/TileGrid.js b/src/components/TileGrid.js index 57af057..702f400 100644 --- a/src/components/TileGrid.js +++ b/src/components/TileGrid.js @@ -1,6 +1,6 @@ import { sound } from '../engine/audio.js'; -export function createTileGrid({ onTileSelected }) { +export function createTileGrid({ onTileSelected, onTogglePin }) { const container = document.createElement('div'); container.className = 'board-container'; @@ -13,15 +13,27 @@ export function createTileGrid({ onTileSelected }) { .map(tile => { const isSelected = activeSet.has(tile.id); const isLocked = tile.isLocked; + const isPinned = !!tile.isPinned; return ` - + ${tile.text} + + `; }) .join('')} @@ -29,12 +41,48 @@ export function createTileGrid({ onTileSelected }) { `; const tiles = container.querySelectorAll('.board-tile'); - tiles.forEach(tileBtn => { - const id = parseInt(tileBtn.getAttribute('data-id'), 10); - tileBtn.addEventListener('click', () => { + tiles.forEach(tileEl => { + const id = parseInt(tileEl.getAttribute('data-id'), 10); + + // Main tile click to add/remove from tray + tileEl.addEventListener('click', e => { + // If clicking pin button, don't trigger tile selection + if (e.target.closest('.tile-pin-btn')) return; sound.playTileClick(); onTileSelected(id); }); + + // Keyboard accessibility + tileEl.addEventListener('keydown', e => { + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + sound.playTileClick(); + onTileSelected(id); + } + }); + + // Right-click to toggle pin + tileEl.addEventListener('contextmenu', e => { + e.preventDefault(); + if (onTogglePin) { + sound.playTileClick(); + onTogglePin(id); + } + }); + }); + + // Pin button click listener + const pinBtns = container.querySelectorAll('.tile-pin-btn'); + pinBtns.forEach(btn => { + const pinId = parseInt(btn.getAttribute('data-pin-id'), 10); + btn.addEventListener('click', e => { + e.stopPropagation(); + e.preventDefault(); + if (onTogglePin) { + sound.playTileClick(); + onTogglePin(pinId); + } + }); }); } diff --git a/src/data/puzzles.js b/src/data/puzzles.js index a44e7a5..f7e0ea7 100644 --- a/src/data/puzzles.js +++ b/src/data/puzzles.js @@ -1352,7 +1352,7 @@ export const CURATED_PUZZLES = [ "ous", "ness" ], - "clue": "The state of being aware of one surroundings" + "clue": "The state of being aware of surroundings" } ], "words": [ @@ -1919,6 +1919,25 @@ export const CURATED_PUZZLES = [ "isTargetQuartile": true, "isQuartile": true }, + { + "word": "neighborhood", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 12, + 13, + 14, + 15 + ], + "tileSegments": [ + "neigh", + "bor", + "ho", + "od" + ], + "isTargetQuartile": true, + "isQuartile": true + }, { "word": "skyscraper", "points": 8, @@ -2276,8 +2295,8 @@ export const CURATED_PUZZLES = [ "isQuartile": false } ], - "wordCount": 27, - "maxPossibleScore": 118 + "wordCount": 28, + "maxPossibleScore": 126 }, { "id": "2026-10-27", @@ -2299,10 +2318,10 @@ export const CURATED_PUZZLES = [ "ce" ], [ - "per", - "for", - "man", - "ce" + "cal", + "lig", + "ra", + "phy" ], [ "ex", @@ -2326,10 +2345,10 @@ export const CURATED_PUZZLES = [ "ter", "pie", "ce", - "per", - "for", - "man", - "ce", + "cal", + "lig", + "ra", + "phy", "ex", "hi", "bi", @@ -2342,13 +2361,13 @@ export const CURATED_PUZZLES = [ "targetQuartiles": [ "symphonically", "masterpiece", - "performance", + "calligraphy", "exhibition", "creativity" ], "quartileDetails": [ { - "word": "symphony", + "word": "symphonically", "tiles": [ "sym", "pho", @@ -2368,14 +2387,14 @@ export const CURATED_PUZZLES = [ "clue": "A work of outstanding artistry or skill" }, { - "word": "performance", + "word": "calligraphy", "tiles": [ - "per", - "for", - "man", - "ce" + "cal", + "lig", + "ra", + "phy" ], - "clue": "An act of staging or presenting a play or concert" + "clue": "Decorative handwriting or handwritten lettering" }, { "word": "exhibition", @@ -2399,6 +2418,25 @@ export const CURATED_PUZZLES = [ } ], "words": [ + { + "word": "calligraphy", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 8, + 9, + 10, + 11 + ], + "tileSegments": [ + "cal", + "lig", + "ra", + "phy" + ], + "isTargetQuartile": true, + "isQuartile": true + }, { "word": "creativity", "points": 8, @@ -2456,25 +2494,6 @@ export const CURATED_PUZZLES = [ "isTargetQuartile": true, "isQuartile": true }, - { - "word": "performance", - "points": 8, - "tileCount": 4, - "tileIndices": [ - 8, - 9, - 10, - 7 - ], - "tileSegments": [ - "per", - "for", - "man", - "ce" - ], - "isTargetQuartile": true, - "isQuartile": true - }, { "word": "symphonically", "points": 8, @@ -2511,23 +2530,6 @@ export const CURATED_PUZZLES = [ "isTargetQuartile": false, "isQuartile": false }, - { - "word": "perforce", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 8, - 9, - 7 - ], - "tileSegments": [ - "per", - "for", - "ce" - ], - "isTargetQuartile": false, - "isQuartile": false - }, { "word": "phonically", "points": 4, @@ -2546,16 +2548,18 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "atman", - "points": 2, - "tileCount": 2, + "word": "terrace", + "points": 4, + "tileCount": 3, "tileIndices": [ - 17, - 10 + 5, + 10, + 7 ], "tileSegments": [ - "at", - "man" + "ter", + "ra", + "ce" ], "isTargetQuartile": false, "isQuartile": false @@ -2591,31 +2595,16 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "force", + "word": "cecal", "points": 2, "tileCount": 2, "tileIndices": [ - 9, - 7 + 7, + 8 ], "tileSegments": [ - "for", - "ce" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "manat", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 10, - 17 - ], - "tileSegments": [ - "man", - "at" + "ce", + "cal" ], "isTargetQuartile": false, "isQuartile": false @@ -2650,21 +2639,6 @@ export const CURATED_PUZZLES = [ "isTargetQuartile": false, "isQuartile": false }, - { - "word": "perter", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 8, - 5 - ], - "tileSegments": [ - "per", - "ter" - ], - "isTargetQuartile": false, - "isQuartile": false - }, { "word": "piece", "points": 2, @@ -2680,6 +2654,51 @@ export const CURATED_PUZZLES = [ "isTargetQuartile": false, "isQuartile": false }, + { + "word": "race", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 10, + 7 + ], + "tileSegments": [ + "ra", + "ce" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "rater", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 10, + 5 + ], + "tileSegments": [ + "ra", + "ter" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "ration", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 10, + 15 + ], + "tileSegments": [ + "ra", + "tion" + ], + "isTargetQuartile": false, + "isQuartile": false + }, { "word": "terce", "points": 2, @@ -2695,6 +2714,21 @@ export const CURATED_PUZZLES = [ "isTargetQuartile": false, "isQuartile": false }, + { + "word": "terra", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 5, + 10 + ], + "tileSegments": [ + "ter", + "ra" + ], + "isTargetQuartile": false, + "isQuartile": false + }, { "word": "at", "points": 1, @@ -2708,19 +2742,6 @@ export const CURATED_PUZZLES = [ "isTargetQuartile": false, "isQuartile": false }, - { - "word": "for", - "points": 1, - "tileCount": 1, - "tileIndices": [ - 9 - ], - "tileSegments": [ - "for" - ], - "isTargetQuartile": false, - "isQuartile": false - }, { "word": "hi", "points": 1, @@ -2734,19 +2755,6 @@ export const CURATED_PUZZLES = [ "isTargetQuartile": false, "isQuartile": false }, - { - "word": "man", - "points": 1, - "tileCount": 1, - "tileIndices": [ - 10 - ], - "tileSegments": [ - "man" - ], - "isTargetQuartile": false, - "isQuartile": false - }, { "word": "mas", "points": 1, @@ -2760,19 +2768,6 @@ export const CURATED_PUZZLES = [ "isTargetQuartile": false, "isQuartile": false }, - { - "word": "per", - "points": 1, - "tileCount": 1, - "tileIndices": [ - 8 - ], - "tileSegments": [ - "per" - ], - "isTargetQuartile": false, - "isQuartile": false - }, { "word": "pho", "points": 1, @@ -2800,8 +2795,8 @@ export const CURATED_PUZZLES = [ "isQuartile": false } ], - "wordCount": 26, - "maxPossibleScore": 120 + "wordCount": 24, + "maxPossibleScore": 119 }, { "id": "2026-10-28", @@ -2829,16 +2824,16 @@ export const CURATED_PUZZLES = [ "tion" ], [ - "in", - "no", - "va", - "tion" + "sem", + "ico", + "ndu", + "ctor" ], [ - "com", - "pu", - "ta", - "tion" + "cy", + "ber", + "sec", + "urity" ] ], "tiles": [ @@ -2854,21 +2849,21 @@ export const CURATED_PUZZLES = [ "to", "ma", "tion", - "in", - "no", - "va", - "tion", - "com", - "pu", - "ta", - "tion" + "sem", + "ico", + "ndu", + "ctor", + "cy", + "ber", + "sec", + "urity" ], "targetQuartiles": [ "technology", "electronic", "automation", - "innovation", - "computation" + "semiconductor", + "cybersecurity" ], "quartileDetails": [ { @@ -2902,24 +2897,24 @@ export const CURATED_PUZZLES = [ "clue": "The use of largely automatic equipment in a system" }, { - "word": "innovation", + "word": "semiconductor", "tiles": [ - "in", - "no", - "va", - "tion" + "sem", + "ico", + "ndu", + "ctor" ], - "clue": "A new method, idea, or product" + "clue": "Solid substance conducting electricity between conductor and insulator" }, { - "word": "computation", + "word": "cybersecurity", "tiles": [ - "com", - "pu", - "ta", - "tion" + "cy", + "ber", + "sec", + "urity" ], - "clue": "The action of mathematical calculation" + "clue": "Protection of computer systems from attack or theft" } ], "words": [ @@ -2943,20 +2938,20 @@ export const CURATED_PUZZLES = [ "isQuartile": true }, { - "word": "computation", + "word": "cybersecurity", "points": 8, "tileCount": 4, "tileIndices": [ 16, 17, 18, - 11 + 19 ], "tileSegments": [ - "com", - "pu", - "ta", - "tion" + "cy", + "ber", + "sec", + "urity" ], "isTargetQuartile": true, "isQuartile": true @@ -2981,20 +2976,20 @@ export const CURATED_PUZZLES = [ "isQuartile": true }, { - "word": "innovation", + "word": "semiconductor", "points": 8, "tileCount": 4, "tileIndices": [ 12, 13, 14, - 11 + 15 ], "tileSegments": [ - "in", - "no", - "va", - "tion" + "sem", + "ico", + "ndu", + "ctor" ], "isTargetQuartile": true, "isQuartile": true @@ -3018,6 +3013,25 @@ export const CURATED_PUZZLES = [ "isTargetQuartile": true, "isQuartile": true }, + { + "word": "cytology", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 16, + 9, + 2, + 3 + ], + "tileSegments": [ + "cy", + "to", + "lo", + "gy" + ], + "isTargetQuartile": false, + "isQuartile": true + }, { "word": "electro", "points": 4, @@ -3035,57 +3049,6 @@ export const CURATED_PUZZLES = [ "isTargetQuartile": false, "isQuartile": false }, - { - "word": "notation", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 13, - 18, - 11 - ], - "tileSegments": [ - "no", - "ta", - "tion" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "novation", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 13, - 14, - 11 - ], - "tileSegments": [ - "no", - "va", - "tion" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "rotation", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 6, - 18, - 11 - ], - "tileSegments": [ - "ro", - "ta", - "tion" - ], - "isTargetQuartile": false, - "isQuartile": false - }, { "word": "tectonic", "points": 4, @@ -3119,7 +3082,7 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "comma", + "word": "cyma", "points": 2, "tileCount": 2, "tileIndices": [ @@ -3127,12 +3090,27 @@ export const CURATED_PUZZLES = [ 10 ], "tileSegments": [ - "com", + "cy", "ma" ], "isTargetQuartile": false, "isQuartile": false }, + { + "word": "cynic", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 16, + 7 + ], + "tileSegments": [ + "cy", + "nic" + ], + "isTargetQuartile": false, + "isQuartile": false + }, { "word": "elect", "points": 2, @@ -3164,16 +3142,16 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "into", + "word": "iconic", "points": 2, "tileCount": 2, "tileIndices": [ - 12, - 9 + 13, + 7 ], "tileSegments": [ - "in", - "to" + "ico", + "nic" ], "isTargetQuartile": false, "isQuartile": false @@ -3193,36 +3171,6 @@ export const CURATED_PUZZLES = [ "isTargetQuartile": false, "isQuartile": false }, - { - "word": "loin", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 2, - 12 - ], - "tileSegments": [ - "lo", - "in" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "lota", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 2, - 18 - ], - "tileSegments": [ - "lo", - "ta" - ], - "isTargetQuartile": false, - "isQuartile": false - }, { "word": "lotion", "points": 2, @@ -3238,21 +3186,6 @@ export const CURATED_PUZZLES = [ "isTargetQuartile": false, "isQuartile": false }, - { - "word": "main", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 10, - 12 - ], - "tileSegments": [ - "ma", - "in" - ], - "isTargetQuartile": false, - "isQuartile": false - }, { "word": "manic", "points": 2, @@ -3269,91 +3202,31 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "noel", + "word": "section", "points": 2, "tileCount": 2, "tileIndices": [ - 13, - 4 - ], - "tileSegments": [ - "no", - "el" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "nolo", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 13, - 2 - ], - "tileSegments": [ - "no", - "lo" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "notion", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 13, + 18, 11 ], "tileSegments": [ - "no", + "sec", "tion" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "nova", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 13, - 14 - ], - "tileSegments": [ - "no", - "va" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "puma", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 17, - 10 - ], - "tileSegments": [ - "pu", - "ma" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "taro", + "word": "security", "points": 2, "tileCount": 2, "tileIndices": [ 18, - 6 + 19 ], "tileSegments": [ - "ta", - "ro" + "sec", + "urity" ], "isTargetQuartile": false, "isQuartile": false @@ -3389,23 +3262,21 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "vain", - "points": 2, - "tileCount": 2, + "word": "to", + "points": 1, + "tileCount": 1, "tileIndices": [ - 14, - 12 + 9 ], "tileSegments": [ - "va", - "in" + "to" ], "isTargetQuartile": false, "isQuartile": false } ], - "wordCount": 30, - "maxPossibleScore": 140 + "wordCount": 22, + "maxPossibleScore": 123 }, { "id": "2026-10-29", @@ -3421,16 +3292,16 @@ export const CURATED_PUZZLES = [ "tion" ], [ - "com", - "mu", - "ni", - "cation" + "fel", + "low", + "sh", + "ip" ], [ - "re", - "la", - "tion", - "ship" + "gen", + "ero", + "si", + "ty" ], [ "op", @@ -3439,10 +3310,10 @@ export const CURATED_PUZZLES = [ "nity" ], [ - "con", - "ver", - "sa", - "tion" + "mar", + "shm", + "all", + "ow" ] ], "tiles": [ @@ -3450,29 +3321,29 @@ export const CURATED_PUZZLES = [ "eb", "ra", "tion", - "com", - "mu", - "ni", - "cation", - "re", - "la", - "tion", - "ship", + "fel", + "low", + "sh", + "ip", + "gen", + "ero", + "si", + "ty", "op", "por", "tu", "nity", - "con", - "ver", - "sa", - "tion" + "mar", + "shm", + "all", + "ow" ], "targetQuartiles": [ "celebration", - "communication", - "relationship", + "fellowship", + "generosity", "opportunity", - "conversation" + "marshmallow" ], "quartileDetails": [ { @@ -3483,27 +3354,27 @@ export const CURATED_PUZZLES = [ "ra", "tion" ], - "clue": "The action of marking one pleasure at an event" + "clue": "The action of marking pleasure at an event" }, { - "word": "communication", + "word": "fellowship", "tiles": [ - "com", - "mu", - "ni", - "cation" + "fel", + "low", + "sh", + "ip" ], - "clue": "The imparting or exchanging of information" + "clue": "Friendly association, especially with shared interests" }, { - "word": "relationship", + "word": "generosity", "tiles": [ - "re", - "la", - "tion", - "ship" + "gen", + "ero", + "si", + "ty" ], - "clue": "The way in which two or more concepts or people connect" + "clue": "The quality of being kind and generous" }, { "word": "opportunity", @@ -3513,17 +3384,17 @@ export const CURATED_PUZZLES = [ "tu", "nity" ], - "clue": "A set of circumstances making it possible to do something" + "clue": "A set of circumstances making something possible" }, { - "word": "conversation", + "word": "marshmallow", "tiles": [ - "con", - "ver", - "sa", - "tion" + "mar", + "shm", + "all", + "ow" ], - "clue": "A talk between two or more people" + "clue": "A sweet chewy confection made of sugar and gelatin" } ], "words": [ @@ -3547,7 +3418,7 @@ export const CURATED_PUZZLES = [ "isQuartile": true }, { - "word": "communication", + "word": "fellowship", "points": 8, "tileCount": 4, "tileIndices": [ @@ -3557,29 +3428,48 @@ export const CURATED_PUZZLES = [ 7 ], "tileSegments": [ - "com", - "mu", - "ni", - "cation" + "fel", + "low", + "sh", + "ip" ], "isTargetQuartile": true, "isQuartile": true }, { - "word": "conversation", + "word": "generosity", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 8, + 9, + 10, + 11 + ], + "tileSegments": [ + "gen", + "ero", + "si", + "ty" + ], + "isTargetQuartile": true, + "isQuartile": true + }, + { + "word": "marshmallow", "points": 8, "tileCount": 4, "tileIndices": [ 16, 17, 18, - 3 + 19 ], "tileSegments": [ - "con", - "ver", - "sa", - "tion" + "mar", + "shm", + "all", + "ow" ], "isTargetQuartile": true, "isQuartile": true @@ -3604,107 +3494,50 @@ export const CURATED_PUZZLES = [ "isQuartile": true }, { - "word": "relationship", - "points": 8, - "tileCount": 4, + "word": "shallop", + "points": 4, + "tileCount": 3, "tileIndices": [ - 8, - 9, - 3, - 11 + 6, + 18, + 12 ], "tileSegments": [ - "re", - "la", - "tion", - "ship" + "sh", + "all", + "op" ], - "isTargetQuartile": true, - "isQuartile": true + "isTargetQuartile": false, + "isQuartile": false }, { - "word": "saturation", - "points": 8, - "tileCount": 4, + "word": "shallow", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 6, + 18, + 19 + ], + "tileSegments": [ + "sh", + "all", + "ow" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "allow", + "points": 2, + "tileCount": 2, "tileIndices": [ 18, - 14, - 2, - 3 + 19 ], "tileSegments": [ - "sa", - "tu", - "ra", - "tion" - ], - "isTargetQuartile": false, - "isQuartile": true - }, - { - "word": "community", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 4, - 5, - 15 - ], - "tileSegments": [ - "com", - "mu", - "nity" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "conniver", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 16, - 6, - 17 - ], - "tileSegments": [ - "con", - "ni", - "ver" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "munition", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 5, - 6, - 3 - ], - "tileSegments": [ - "mu", - "ni", - "tion" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "relation", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 8, - 9, - 3 - ], - "tileSegments": [ - "re", - "la", - "tion" + "all", + "ow" ], "isTargetQuartile": false, "isQuartile": false @@ -3725,46 +3558,61 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "cella", + "word": "fellow", "points": 2, "tileCount": 2, "tileIndices": [ - 0, - 9 + 4, + 5 ], "tileSegments": [ - "cel", - "la" + "fel", + "low" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "laver", + "word": "genip", "points": 2, "tileCount": 2, "tileIndices": [ - 9, - 17 + 8, + 7 ], "tileSegments": [ - "la", - "ver" + "gen", + "ip" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "mure", + "word": "marcel", "points": 2, "tileCount": 2, "tileIndices": [ - 5, - 8 + 16, + 0 ], "tileSegments": [ - "mu", - "re" + "mar", + "cel" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "marsh", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 16, + 6 + ], + "tileSegments": [ + "mar", + "sh" ], "isTargetQuartile": false, "isQuartile": false @@ -3800,31 +3648,16 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "racon", + "word": "rash", "points": 2, "tileCount": 2, "tileIndices": [ 2, - 16 + 6 ], "tileSegments": [ "ra", - "con" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "rare", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 2, - 8 - ], - "tileSegments": [ - "ra", - "re" + "sh" ], "isTargetQuartile": false, "isQuartile": false @@ -3845,152 +3678,137 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "raver", + "word": "shall", "points": 2, "tileCount": 2, "tileIndices": [ - 2, - 17 - ], - "tileSegments": [ - "ra", - "ver" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "recon", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 8, - 16 - ], - "tileSegments": [ - "re", - "con" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "reship", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 8, - 11 - ], - "tileSegments": [ - "re", - "ship" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "sanity", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 18, - 15 - ], - "tileSegments": [ - "sa", - "nity" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "saver", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 18, - 17 - ], - "tileSegments": [ - "sa", - "ver" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "versa", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 17, + 6, 18 ], "tileSegments": [ - "ver", - "sa" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "vertu", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 17, - 14 - ], - "tileSegments": [ - "ver", - "tu" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "cation", - "points": 1, - "tileCount": 1, - "tileIndices": [ - 7 - ], - "tileSegments": [ - "cation" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "con", - "points": 1, - "tileCount": 1, - "tileIndices": [ - 16 - ], - "tileSegments": [ - "con" + "sh", + "all" ], "isTargetQuartile": false, "isQuartile": false }, { "word": "ship", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 6, + 7 + ], + "tileSegments": [ + "sh", + "ip" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "shop", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 6, + 12 + ], + "tileSegments": [ + "sh", + "op" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "show", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 6, + 19 + ], + "tileSegments": [ + "sh", + "ow" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "simar", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 10, + 16 + ], + "tileSegments": [ + "si", + "mar" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "tush", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 14, + 6 + ], + "tileSegments": [ + "tu", + "sh" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "all", "points": 1, "tileCount": 1, "tileIndices": [ - 11 + 18 ], "tileSegments": [ - "ship" + "all" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "low", + "points": 1, + "tileCount": 1, + "tileIndices": [ + 5 + ], + "tileSegments": [ + "low" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "mar", + "points": 1, + "tileCount": 1, + "tileIndices": [ + 16 + ], + "tileSegments": [ + "mar" ], "isTargetQuartile": false, "isQuartile": false } ], - "wordCount": 29, - "maxPossibleScore": 139 + "wordCount": 26, + "maxPossibleScore": 123 }, { "id": "2026-10-30", @@ -4018,16 +3836,16 @@ export const CURATED_PUZZLES = [ "lar" ], [ - "un", + "wil", "der", - "wa", - "ter" + "ne", + "ss" ], [ - "thun", - "der", - "sto", - "rm" + "cha", + "me", + "le", + "on" ] ], "tiles": [ @@ -4043,21 +3861,21 @@ export const CURATED_PUZZLES = [ "er", "pil", "lar", - "un", + "wil", "der", - "wa", - "ter", - "thun", - "der", - "sto", - "rm" + "ne", + "ss", + "cha", + "me", + "le", + "on" ], "targetQuartiles": [ "biodiversity", "environment", "caterpillar", - "underwater", - "thunderstorm" + "wilderness", + "chameleon" ], "quartileDetails": [ { @@ -4091,24 +3909,24 @@ export const CURATED_PUZZLES = [ "clue": "The larval stage of a butterfly or moth" }, { - "word": "underwater", + "word": "wilderness", "tiles": [ - "un", + "wil", "der", - "wa", - "ter" + "ne", + "ss" ], - "clue": "Situated or occurring below water surface" + "clue": "An uncultivated, uninhabited, and hospitable region" }, { - "word": "thunderstorm", + "word": "chameleon", "tiles": [ - "thun", - "der", - "sto", - "rm" + "cha", + "me", + "le", + "on" ], - "clue": "A transient storm of lightning and thunder" + "clue": "A lizard capable of changing skin color" } ], "words": [ @@ -4150,6 +3968,25 @@ export const CURATED_PUZZLES = [ "isTargetQuartile": true, "isQuartile": true }, + { + "word": "chameleon", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 16, + 17, + 18, + 19 + ], + "tileSegments": [ + "cha", + "me", + "le", + "on" + ], + "isTargetQuartile": true, + "isQuartile": true + }, { "word": "environment", "points": 8, @@ -4170,26 +4007,7 @@ export const CURATED_PUZZLES = [ "isQuartile": true }, { - "word": "thunderstorm", - "points": 8, - "tileCount": 4, - "tileIndices": [ - 16, - 13, - 18, - 19 - ], - "tileSegments": [ - "thun", - "der", - "sto", - "rm" - ], - "isTargetQuartile": true, - "isQuartile": true - }, - { - "word": "underwater", + "word": "wilderness", "points": 8, "tileCount": 4, "tileIndices": [ @@ -4199,14 +4017,52 @@ export const CURATED_PUZZLES = [ 15 ], "tileSegments": [ - "un", + "wil", "der", - "wa", - "ter" + "ne", + "ss" ], "isTargetQuartile": true, "isQuartile": true }, + { + "word": "mesitylene", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 17, + 3, + 18, + 14 + ], + "tileSegments": [ + "me", + "sity", + "le", + "ne" + ], + "isTargetQuartile": false, + "isQuartile": true + }, + { + "word": "vileness", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 5, + 18, + 14, + 15 + ], + "tileSegments": [ + "vi", + "le", + "ne", + "ss" + ], + "isTargetQuartile": false, + "isQuartile": true + }, { "word": "diversity", "points": 4, @@ -4224,23 +4080,6 @@ export const CURATED_PUZZLES = [ "isTargetQuartile": false, "isQuartile": false }, - { - "word": "diverter", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 1, - 2, - 15 - ], - "tileSegments": [ - "di", - "ver", - "ter" - ], - "isTargetQuartile": false, - "isQuartile": false - }, { "word": "divider", "points": 4, @@ -4258,6 +4097,23 @@ export const CURATED_PUZZLES = [ "isTargetQuartile": false, "isQuartile": false }, + { + "word": "divine", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 1, + 5, + 14 + ], + "tileSegments": [ + "di", + "vi", + "ne" + ], + "isTargetQuartile": false, + "isQuartile": false + }, { "word": "envier", "points": 4, @@ -4310,17 +4166,68 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "thunderer", + "word": "lessen", "points": 4, "tileCount": 3, "tileIndices": [ - 16, - 13, + 18, + 15, + 4 + ], + "tileSegments": [ + "le", + "ss", + "en" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "lesser", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 18, + 15, 9 ], "tileSegments": [ - "thun", - "der", + "le", + "ss", + "er" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "lesson", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 18, + 15, + 19 + ], + "tileSegments": [ + "le", + "ss", + "on" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "levier", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 18, + 5, + 9 + ], + "tileSegments": [ + "le", + "vi", "er" ], "isTargetQuartile": false, @@ -4343,74 +4250,6 @@ export const CURATED_PUZZLES = [ "isTargetQuartile": false, "isQuartile": false }, - { - "word": "verditer", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 2, - 1, - 15 - ], - "tileSegments": [ - "ver", - "di", - "ter" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "warmer", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 14, - 19, - 9 - ], - "tileSegments": [ - "wa", - "rm", - "er" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "waverer", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 14, - 2, - 9 - ], - "tileSegments": [ - "wa", - "ver", - "er" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "wavier", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 14, - 5, - 9 - ], - "tileSegments": [ - "wa", - "vi", - "er" - ], - "isTargetQuartile": false, - "isQuartile": false - }, { "word": "cater", "points": 2, @@ -4426,6 +4265,36 @@ export const CURATED_PUZZLES = [ "isTargetQuartile": false, "isQuartile": false }, + { + "word": "dime", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 1, + 17 + ], + "tileSegments": [ + "di", + "me" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "dine", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 1, + 14 + ], + "tileSegments": [ + "di", + "ne" + ], + "isTargetQuartile": false, + "isQuartile": false + }, { "word": "diver", "points": 2, @@ -4442,31 +4311,76 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "enter", + "word": "leer", "points": 2, "tileCount": 2, "tileIndices": [ - 4, - 15 + 18, + 9 ], "tileSegments": [ - "en", - "ter" + "le", + "er" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "larder", + "word": "less", "points": 2, "tileCount": 2, "tileIndices": [ - 11, - 13 + 18, + 15 ], "tileSegments": [ - "lar", - "der" + "le", + "ss" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "lever", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 18, + 2 + ], + "tileSegments": [ + "le", + "ver" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "mess", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 17, + 15 + ], + "tileSegments": [ + "me", + "ss" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "never", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 14, + 2 + ], + "tileSegments": [ + "ne", + "ver" ], "isTargetQuartile": false, "isQuartile": false @@ -4487,37 +4401,22 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "storm", + "word": "vile", "points": 2, "tileCount": 2, "tileIndices": [ - 18, - 19 + 5, + 18 ], "tileSegments": [ - "sto", - "rm" + "vi", + "le" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "thunder", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 16, - 13 - ], - "tileSegments": [ - "thun", - "der" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "under", + "word": "wilder", "points": 2, "tileCount": 2, "tileIndices": [ @@ -4525,90 +4424,15 @@ export const CURATED_PUZZLES = [ 13 ], "tileSegments": [ - "un", + "wil", "der" ], "isTargetQuartile": false, "isQuartile": false - }, - { - "word": "wader", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 14, - 13 - ], - "tileSegments": [ - "wa", - "der" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "wadi", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 14, - 1 - ], - "tileSegments": [ - "wa", - "di" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "warm", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 14, - 19 - ], - "tileSegments": [ - "wa", - "rm" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "water", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 14, - 15 - ], - "tileSegments": [ - "wa", - "ter" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "waver", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 14, - 2 - ], - "tileSegments": [ - "wa", - "ver" - ], - "isTargetQuartile": false, - "isQuartile": false } ], "wordCount": 30, - "maxPossibleScore": 154 + "maxPossibleScore": 164 }, { "id": "2026-10-31", @@ -4624,28 +4448,28 @@ export const CURATED_PUZZLES = [ "us" ], [ - "de", - "ter", - "mi", - "nation" - ], - [ + "su", "per", - "sev", - "er", - "ance" + "nat", + "ural" ], [ - "in", - "ves", - "ti", - "gation" + "ap", + "par", + "it", + "ion" ], [ - "an", - "ti", - "cip", - "ation" + "en", + "cha", + "nt", + "ed" + ], + [ + "mi", + "rac", + "ul", + "ous" ] ], "tiles": [ @@ -4653,29 +4477,29 @@ export const CURATED_PUZZLES = [ "ter", "io", "us", - "de", - "ter", - "mi", - "nation", + "su", "per", - "sev", - "er", - "ance", - "in", - "ves", - "ti", - "gation", - "an", - "ti", - "cip", - "ation" + "nat", + "ural", + "ap", + "par", + "it", + "ion", + "en", + "cha", + "nt", + "ed", + "mi", + "rac", + "ul", + "ous" ], "targetQuartiles": [ "mysterious", - "determination", - "perseverance", - "investigation", - "anticipation" + "supernatural", + "apparition", + "enchanted", + "miraculous" ], "quartileDetails": [ { @@ -4686,90 +4510,71 @@ export const CURATED_PUZZLES = [ "io", "us" ], - "clue": "Difficult or impossible to understand" + "clue": "Difficult or impossible to understand or explain" }, { - "word": "determination", - "tiles": [ - "de", - "ter", - "mi", - "nation" - ], - "clue": "Firmness of purpose; resoluteness" - }, - { - "word": "perseverance", + "word": "supernatural", "tiles": [ + "su", "per", - "sev", - "er", - "ance" + "nat", + "ural" ], - "clue": "Persistence in doing something despite difficulty" + "clue": "Attributed to some force beyond scientific understanding" }, { - "word": "investigation", + "word": "apparition", "tiles": [ - "in", - "ves", - "ti", - "gation" + "ap", + "par", + "it", + "ion" ], - "clue": "A formal inquiry or systematic examination" + "clue": "A ghost or ghostlike image of a person" }, { - "word": "anticipation", + "word": "enchanted", "tiles": [ - "an", - "ti", - "cip", - "ation" + "en", + "cha", + "nt", + "ed" ], - "clue": "The act of expecting something in advance" + "clue": "Placed under a spell; bewitched" + }, + { + "word": "miraculous", + "tiles": [ + "mi", + "rac", + "ul", + "ous" + ], + "clue": "Occurring through divine or extraordinary intervention" } ], "words": [ { - "word": "anticipation", + "word": "apparition", "points": 8, "tileCount": 4, "tileIndices": [ - 16, - 14, - 18, - 19 + 8, + 9, + 10, + 11 ], "tileSegments": [ - "an", - "ti", - "cip", - "ation" + "ap", + "par", + "it", + "ion" ], "isTargetQuartile": true, "isQuartile": true }, { - "word": "determination", - "points": 8, - "tileCount": 4, - "tileIndices": [ - 4, - 1, - 6, - 7 - ], - "tileSegments": [ - "de", - "ter", - "mi", - "nation" - ], - "isTargetQuartile": true, - "isQuartile": true - }, - { - "word": "investigation", + "word": "enchanted", "points": 8, "tileCount": 4, "tileIndices": [ @@ -4779,10 +4584,29 @@ export const CURATED_PUZZLES = [ 15 ], "tileSegments": [ - "in", - "ves", - "ti", - "gation" + "en", + "cha", + "nt", + "ed" + ], + "isTargetQuartile": true, + "isQuartile": true + }, + { + "word": "miraculous", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 16, + 17, + 18, + 19 + ], + "tileSegments": [ + "mi", + "rac", + "ul", + "ous" ], "isTargetQuartile": true, "isQuartile": true @@ -4807,539 +4631,7 @@ export const CURATED_PUZZLES = [ "isQuartile": true }, { - "word": "perseverance", - "points": 8, - "tileCount": 4, - "tileIndices": [ - 8, - 9, - 10, - 11 - ], - "tileSegments": [ - "per", - "sev", - "er", - "ance" - ], - "isTargetQuartile": true, - "isQuartile": true - }, - { - "word": "perseveration", - "points": 8, - "tileCount": 4, - "tileIndices": [ - 8, - 9, - 10, - 19 - ], - "tileSegments": [ - "per", - "sev", - "er", - "ation" - ], - "isTargetQuartile": false, - "isQuartile": true - }, - { - "word": "inaner", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 12, - 16, - 10 - ], - "tileSegments": [ - "in", - "an", - "er" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "mitigation", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 6, - 14, - 15 - ], - "tileSegments": [ - "mi", - "ti", - "gation" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "peruser", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 8, - 3, - 10 - ], - "tileSegments": [ - "per", - "us", - "er" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "severance", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 9, - 10, - 11 - ], - "tileSegments": [ - "sev", - "er", - "ance" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "termination", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 1, - 6, - 7 - ], - "tileSegments": [ - "ter", - "mi", - "nation" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "tertian", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 1, - 14, - 16 - ], - "tileSegments": [ - "ter", - "ti", - "an" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "titian", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 14, - 17, - 16 - ], - "tileSegments": [ - "ti", - "ti", - "an" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "anti", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 16, - 14 - ], - "tileSegments": [ - "an", - "ti" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "anus", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 16, - 3 - ], - "tileSegments": [ - "an", - "us" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "dean", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 4, - 16 - ], - "tileSegments": [ - "de", - "an" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "deer", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 4, - 10 - ], - "tileSegments": [ - "de", - "er" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "deter", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 4, - 1 - ], - "tileSegments": [ - "de", - "ter" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "inter", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 12, - 1 - ], - "tileSegments": [ - "in", - "ter" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "inti", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 12, - 14 - ], - "tileSegments": [ - "in", - "ti" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "perter", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 8, - 1 - ], - "tileSegments": [ - "per", - "ter" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "sever", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 9, - 10 - ], - "tileSegments": [ - "sev", - "er" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "tide", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 14, - 4 - ], - "tileSegments": [ - "ti", - "de" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "tier", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 14, - 10 - ], - "tileSegments": [ - "ti", - "er" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "titi", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 14, - 17 - ], - "tileSegments": [ - "ti", - "ti" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "usance", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 3, - 11 - ], - "tileSegments": [ - "us", - "ance" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "user", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 3, - 10 - ], - "tileSegments": [ - "us", - "er" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "vesper", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 13, - 8 - ], - "tileSegments": [ - "ves", - "per" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "nation", - "points": 1, - "tileCount": 1, - "tileIndices": [ - 7 - ], - "tileSegments": [ - "nation" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "per", - "points": 1, - "tileCount": 1, - "tileIndices": [ - 8 - ], - "tileSegments": [ - "per" - ], - "isTargetQuartile": false, - "isQuartile": false - } - ], - "wordCount": 30, - "maxPossibleScore": 148 - }, - { - "id": "2026-10-22", - "date": "2026-10-22", - "title": "Daily Puzzle — Oct 22, 2026", - "theme": "Scientific Insight", - "difficulty": "Normal", - "quartets": [ - [ - "re", - "qu", - "ir", - "ed" - ], - [ - "equ", - "iv", - "al", - "ent" - ], - [ - "obj", - "ec", - "ti", - "on" - ], - [ - "ju", - "stif", - "ica", - "tion" - ], - [ - "mys", - "ter", - "io", - "us" - ] - ], - "tiles": [ - "re", - "qu", - "ir", - "ed", - "equ", - "iv", - "al", - "ent", - "obj", - "ec", - "ti", - "on", - "ju", - "stif", - "ica", - "tion", - "mys", - "ter", - "io", - "us" - ], - "targetQuartiles": [ - "required", - "equivalent", - "objection", - "justification", - "mysterious" - ], - "quartileDetails": [ - { - "word": "required", - "tiles": [ - "re", - "qu", - "ir", - "ed" - ], - "clue": "Officially compulsory or needed" - }, - { - "word": "equivalent", - "tiles": [ - "equ", - "iv", - "al", - "ent" - ], - "clue": "Equal in value, amount, or meaning" - }, - { - "word": "objection", - "tiles": [ - "obj", - "ec", - "ti", - "on" - ], - "clue": "An expression or feeling of disapproval" - }, - { - "word": "justification", - "tiles": [ - "ju", - "stif", - "ica", - "tion" - ], - "clue": "The action of showing something to be right" - }, - { - "word": "mysterious", - "tiles": [ - "mys", - "ter", - "io", - "us" - ], - "clue": "Difficult or impossible to understand" - } - ], - "words": [ - { - "word": "equivalent", + "word": "supernatural", "points": 8, "tileCount": 4, "tileIndices": [ @@ -5349,101 +4641,184 @@ export const CURATED_PUZZLES = [ 7 ], "tileSegments": [ - "equ", - "iv", - "al", - "ent" + "su", + "per", + "nat", + "ural" ], "isTargetQuartile": true, "isQuartile": true }, { - "word": "justification", + "word": "perennated", "points": 8, "tileCount": 4, "tileIndices": [ + 5, 12, + 6, + 15 + ], + "tileSegments": [ + "per", + "en", + "nat", + "ed" + ], + "isTargetQuartile": false, + "isQuartile": true + }, + { + "word": "terminated", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 1, + 16, + 6, + 15 + ], + "tileSegments": [ + "ter", + "mi", + "nat", + "ed" + ], + "isTargetQuartile": false, + "isQuartile": true + }, + { + "word": "termination", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 1, + 16, + 6, + 11 + ], + "tileSegments": [ + "ter", + "mi", + "nat", + "ion" + ], + "isTargetQuartile": false, + "isQuartile": true + }, + { + "word": "apterous", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 8, + 1, + 19 + ], + "tileSegments": [ + "ap", + "ter", + "ous" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "chanted", + "points": 4, + "tileCount": 3, + "tileIndices": [ 13, 14, 15 ], "tileSegments": [ - "ju", - "stif", - "ica", - "tion" + "cha", + "nt", + "ed" ], - "isTargetQuartile": true, - "isQuartile": true + "isTargetQuartile": false, + "isQuartile": false }, { - "word": "mysterious", - "points": 8, - "tileCount": 4, + "word": "character", + "points": 4, + "tileCount": 3, "tileIndices": [ - 16, + 13, 17, - 18, - 19 + 1 ], "tileSegments": [ - "mys", - "ter", - "io", - "us" + "cha", + "rac", + "ter" ], - "isTargetQuartile": true, - "isQuartile": true + "isTargetQuartile": false, + "isQuartile": false }, { - "word": "objection", - "points": 8, - "tileCount": 4, + "word": "edition", + "points": 4, + "tileCount": 3, "tileIndices": [ - 8, - 9, + 15, 10, 11 ], "tileSegments": [ - "obj", - "ec", - "ti", - "on" + "ed", + "it", + "ion" ], - "isTargetQuartile": true, - "isQuartile": true + "isTargetQuartile": false, + "isQuartile": false }, { - "word": "required", - "points": 8, - "tileCount": 4, - "tileIndices": [ - 0, - 1, - 2, - 3 - ], - "tileSegments": [ - "re", - "qu", - "ir", - "ed" - ], - "isTargetQuartile": true, - "isQuartile": true - }, - { - "word": "altered", + "word": "enchant", "points": 4, "tileCount": 3, "tileIndices": [ - 6, - 17, - 3 + 12, + 13, + 14 ], "tileSegments": [ - "al", + "en", + "cha", + "nt" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "ensued", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 12, + 4, + 15 + ], + "tileSegments": [ + "en", + "su", + "ed" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "entered", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 12, + 1, + 15 + ], + "tileSegments": [ + "en", "ter", "ed" ], @@ -5451,50 +4826,50 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "ironed", + "word": "minted", "points": 4, "tileCount": 3, "tileIndices": [ - 2, - 11, - 3 + 16, + 14, + 15 ], "tileSegments": [ - "ir", - "on", + "mi", + "nt", "ed" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "retied", + "word": "nattered", "points": 4, "tileCount": 3, "tileIndices": [ - 0, - 10, - 3 + 6, + 1, + 15 ], "tileSegments": [ - "re", - "ti", + "nat", + "ter", "ed" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "reused", + "word": "perused", "points": 4, "tileCount": 3, "tileIndices": [ - 0, - 19, - 3 + 5, + 3, + 15 ], "tileSegments": [ - "re", + "per", "us", "ed" ], @@ -5502,138 +4877,170 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "tertial", + "word": "suited", "points": 4, "tileCount": 3, "tileIndices": [ - 17, + 4, 10, - 6 + 15 ], "tileSegments": [ - "ter", - "ti", - "al" + "su", + "it", + "ed" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "alter", + "word": "terraced", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 1, + 17, + 15 + ], + "tileSegments": [ + "ter", + "rac", + "ed" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "edit", "points": 2, "tileCount": 2, "tileIndices": [ - 6, - 17 + 15, + 10 ], "tileSegments": [ - "al", + "ed", + "it" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "enter", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 12, + 1 + ], + "tileSegments": [ + "en", "ter" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "equal", + "word": "mint", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 16, + 14 + ], + "tileSegments": [ + "mi", + "nt" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "nation", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 6, + 11 + ], + "tileSegments": [ + "nat", + "ion" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "natural", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 6, + 7 + ], + "tileSegments": [ + "nat", + "ural" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "raced", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 17, + 15 + ], + "tileSegments": [ + "rac", + "ed" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "sued", "points": 2, "tileCount": 2, "tileIndices": [ 4, - 6 + 15 ], "tileSegments": [ - "equ", - "al" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "iron", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 2, - 11 - ], - "tileSegments": [ - "ir", - "on" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "onus", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 11, - 19 - ], - "tileSegments": [ - "on", - "us" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "real", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 0, - 6 - ], - "tileSegments": [ - "re", - "al" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "reed", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 0, - 3 - ], - "tileSegments": [ - "re", + "su", "ed" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "tied", + "word": "suit", "points": 2, "tileCount": 2, "tileIndices": [ - 10, - 3 + 4, + 10 ], "tileSegments": [ - "ti", - "ed" + "su", + "it" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "tire", + "word": "super", "points": 2, "tileCount": 2, "tileIndices": [ - 10, - 0 + 4, + 5 ], "tileSegments": [ - "ti", - "re" + "su", + "per" ], "isTargetQuartile": false, "isQuartile": false @@ -5643,8 +5050,8 @@ export const CURATED_PUZZLES = [ "points": 2, "tileCount": 2, "tileIndices": [ - 19, - 3 + 3, + 15 ], "tileSegments": [ "us", @@ -5652,49 +5059,614 @@ export const CURATED_PUZZLES = [ ], "isTargetQuartile": false, "isQuartile": false + } + ], + "wordCount": 30, + "maxPossibleScore": 172 + }, + { + "id": "2026-10-22", + "date": "2026-10-22", + "title": "Daily Puzzle — Oct 22, 2026", + "theme": "Scientific Insight", + "difficulty": "Normal", + "quartets": [ + [ + "equ", + "iv", + "al", + "ent" + ], + [ + "hy", + "pot", + "he", + "sis" + ], + [ + "lab", + "ora", + "to", + "ry" + ], + [ + "mi", + "cro", + "sco", + "pe" + ], + [ + "phe", + "nom", + "en", + "on" + ] + ], + "tiles": [ + "equ", + "iv", + "al", + "ent", + "hy", + "pot", + "he", + "sis", + "lab", + "ora", + "to", + "ry", + "mi", + "cro", + "sco", + "pe", + "phe", + "nom", + "en", + "on" + ], + "targetQuartiles": [ + "equivalent", + "hypothesis", + "laboratory", + "microscope", + "phenomenon" + ], + "quartileDetails": [ + { + "word": "equivalent", + "tiles": [ + "equ", + "iv", + "al", + "ent" + ], + "clue": "Equal in value, amount, function, or meaning" }, { - "word": "mys", - "points": 1, - "tileCount": 1, + "word": "hypothesis", + "tiles": [ + "hy", + "pot", + "he", + "sis" + ], + "clue": "A proposed explanation made on limited evidence" + }, + { + "word": "laboratory", + "tiles": [ + "lab", + "ora", + "to", + "ry" + ], + "clue": "A room or building equipped for scientific experiments" + }, + { + "word": "microscope", + "tiles": [ + "mi", + "cro", + "sco", + "pe" + ], + "clue": "Optical instrument for magnifying tiny objects" + }, + { + "word": "phenomenon", + "tiles": [ + "phe", + "nom", + "en", + "on" + ], + "clue": "A remarkable fact or situation that is observed to happen" + } + ], + "words": [ + { + "word": "equivalent", + "points": 8, + "tileCount": 4, "tileIndices": [ - 16 + 0, + 1, + 2, + 3 ], "tileSegments": [ - "mys" + "equ", + "iv", + "al", + "ent" + ], + "isTargetQuartile": true, + "isQuartile": true + }, + { + "word": "hypothesis", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 4, + 5, + 6, + 7 + ], + "tileSegments": [ + "hy", + "pot", + "he", + "sis" + ], + "isTargetQuartile": true, + "isQuartile": true + }, + { + "word": "laboratory", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 8, + 9, + 10, + 11 + ], + "tileSegments": [ + "lab", + "ora", + "to", + "ry" + ], + "isTargetQuartile": true, + "isQuartile": true + }, + { + "word": "microscope", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 12, + 13, + 14, + 15 + ], + "tileSegments": [ + "mi", + "cro", + "sco", + "pe" + ], + "isTargetQuartile": true, + "isQuartile": true + }, + { + "word": "phenomenon", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 16, + 17, + 18, + 19 + ], + "tileSegments": [ + "phe", + "nom", + "en", + "on" + ], + "isTargetQuartile": true, + "isQuartile": true + }, + { + "word": "phenomenal", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 16, + 17, + 18, + 2 + ], + "tileSegments": [ + "phe", + "nom", + "en", + "al" + ], + "isTargetQuartile": false, + "isQuartile": true + }, + { + "word": "mitosis", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 12, + 10, + 7 + ], + "tileSegments": [ + "mi", + "to", + "sis" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "on", - "points": 1, - "tileCount": 1, + "word": "oratory", + "points": 4, + "tileCount": 3, "tileIndices": [ + 9, + 10, 11 ], "tileSegments": [ + "ora", + "to", + "ry" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "potheen", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 5, + 6, + 18 + ], + "tileSegments": [ + "pot", + "he", + "en" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "alto", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 2, + 10 + ], + "tileSegments": [ + "al", + "to" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "croon", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 13, + 19 + ], + "tileSegments": [ + "cro", "on" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "us", - "points": 1, - "tileCount": 1, + "word": "entry", + "points": 2, + "tileCount": 2, "tileIndices": [ + 3, + 11 + ], + "tileSegments": [ + "ent", + "ry" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "equal", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 0, + 2 + ], + "tileSegments": [ + "equ", + "al" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "heal", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 6, + 2 + ], + "tileSegments": [ + "he", + "al" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "hype", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 4, + 15 + ], + "tileSegments": [ + "hy", + "pe" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "micro", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 12, + 13 + ], + "tileSegments": [ + "mi", + "cro" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "mien", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 12, + 18 + ], + "tileSegments": [ + "mi", + "en" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "miry", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 12, + 11 + ], + "tileSegments": [ + "mi", + "ry" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "nomen", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 17, + 18 + ], + "tileSegments": [ + "nom", + "en" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "onto", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 19, + 10 + ], + "tileSegments": [ + "on", + "to" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "peal", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 15, + 2 + ], + "tileSegments": [ + "pe", + "al" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "peen", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 15, + 18 + ], + "tileSegments": [ + "pe", + "en" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "peon", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 15, 19 ], "tileSegments": [ - "us" + "pe", + "on" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "phenom", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 16, + 17 + ], + "tileSegments": [ + "phe", + "nom" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "pheon", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 16, + 19 + ], + "tileSegments": [ + "phe", + "on" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "potent", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 5, + 3 + ], + "tileSegments": [ + "pot", + "ent" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "potto", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 5, + 10 + ], + "tileSegments": [ + "pot", + "to" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "scope", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 14, + 15 + ], + "tileSegments": [ + "sco", + "pe" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "sisal", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 7, + 2 + ], + "tileSegments": [ + "sis", + "al" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "tope", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 10, + 15 + ], + "tileSegments": [ + "to", + "pe" ], "isTargetQuartile": false, "isQuartile": false } ], - "wordCount": 22, - "maxPossibleScore": 121 + "wordCount": 30, + "maxPossibleScore": 142 }, { "id": "2026-10-21", @@ -5703,23 +5675,11 @@ export const CURATED_PUZZLES = [ "theme": "Wordsmith Almanac", "difficulty": "Normal", "quartets": [ - [ - "vo", - "cab", - "ul", - "ary" - ], - [ - "en", - "cy", - "clo", - "pedia" - ], [ "dic", - "tion", - "ar", - "y" + "tio", + "na", + "ry" ], [ "man", @@ -5728,69 +5688,61 @@ export const CURATED_PUZZLES = [ "ipt" ], [ - "trans", - "la", - "ti", - "on" + "en", + "cy", + "clo", + "pedia" + ], + [ + "li", + "ter", + "at", + "ure" + ], + [ + "pro", + "ver", + "bi", + "al" ] ], "tiles": [ - "vo", - "cab", - "ul", - "ary", - "en", - "cy", - "clo", - "pedia", "dic", - "tion", - "ar", - "y", + "tio", + "na", + "ry", "man", "us", "cr", "ipt", - "trans", - "la", - "ti", - "on" + "en", + "cy", + "clo", + "pedia", + "li", + "ter", + "at", + "ure", + "pro", + "ver", + "bi", + "al" ], "targetQuartiles": [ - "vocabulary", - "encyclopedia", "dictionary", "manuscript", - "translation" + "encyclopedia", + "literature", + "proverbial" ], "quartileDetails": [ - { - "word": "vocabulary", - "tiles": [ - "vo", - "cab", - "ul", - "ary" - ], - "clue": "The body of words used in a particular language" - }, - { - "word": "encyclopedia", - "tiles": [ - "en", - "cy", - "clo", - "pedia" - ], - "clue": "A book or set providing information on many subjects" - }, { "word": "dictionary", "tiles": [ "dic", - "tion", - "ar", - "y" + "tio", + "na", + "ry" ], "clue": "A reference book on words and definitions" }, @@ -5805,26 +5757,65 @@ export const CURATED_PUZZLES = [ "clue": "An author text that has not yet been printed" }, { - "word": "translation", + "word": "encyclopedia", "tiles": [ - "trans", - "la", - "ti", - "on" + "en", + "cy", + "clo", + "pedia" ], - "clue": "The process of translating words into another language" + "clue": "A book or set providing information on many subjects" + }, + { + "word": "literature", + "tiles": [ + "li", + "ter", + "at", + "ure" + ], + "clue": "Written works, especially those considered of superior merit" + }, + { + "word": "proverbial", + "tiles": [ + "pro", + "ver", + "bi", + "al" + ], + "clue": "Referred to in a proverb or well known" } ], "words": [ + { + "word": "dictionary", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 0, + 1, + 2, + 3 + ], + "tileSegments": [ + "dic", + "tio", + "na", + "ry" + ], + "isTargetQuartile": true, + "isQuartile": true + }, { "word": "encyclopedia", "points": 8, "tileCount": 4, "tileIndices": [ - 4, - 5, - 6, - 7 + 8, + 9, + 10, + 11 ], "tileSegments": [ "en", @@ -5836,7 +5827,7 @@ export const CURATED_PUZZLES = [ "isQuartile": true }, { - "word": "manuscript", + "word": "literature", "points": 8, "tileCount": 4, "tileIndices": [ @@ -5845,6 +5836,25 @@ export const CURATED_PUZZLES = [ 14, 15 ], + "tileSegments": [ + "li", + "ter", + "at", + "ure" + ], + "isTargetQuartile": true, + "isQuartile": true + }, + { + "word": "manuscript", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 4, + 5, + 6, + 7 + ], "tileSegments": [ "man", "us", @@ -5855,71 +5865,37 @@ export const CURATED_PUZZLES = [ "isQuartile": true }, { - "word": "vocabulary", + "word": "proverbial", "points": 8, "tileCount": 4, "tileIndices": [ - 0, - 1, - 2, - 3 + 16, + 17, + 18, + 19 ], "tileSegments": [ - "vo", - "cab", - "ul", - "ary" + "pro", + "ver", + "bi", + "al" ], "isTargetQuartile": true, "isQuartile": true }, { - "word": "dictionary", + "word": "binary", "points": 4, "tileCount": 3, "tileIndices": [ - 8, - 9, + 18, + 2, 3 ], "tileSegments": [ - "dic", - "tion", - "ary" - ], - "isTargetQuartile": true, - "isQuartile": false - }, - { - "word": "translation", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 16, - 17, - 9 - ], - "tileSegments": [ - "trans", - "la", - "tion" - ], - "isTargetQuartile": true, - "isQuartile": false - }, - { - "word": "crony", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 14, - 19, - 11 - ], - "tileSegments": [ - "cr", - "on", - "y" + "bi", + "na", + "ry" ], "isTargetQuartile": false, "isQuartile": false @@ -5929,9 +5905,9 @@ export const CURATED_PUZZLES = [ "points": 4, "tileCount": 3, "tileIndices": [ - 5, - 6, - 7 + 9, + 10, + 11 ], "tileSegments": [ "cy", @@ -5942,97 +5918,112 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "envoy", + "word": "enteral", "points": 4, "tileCount": 3, "tileIndices": [ - 4, - 0, - 11 + 8, + 13, + 19 ], "tileSegments": [ "en", - "vo", - "y" + "ter", + "al" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "layman", + "word": "literal", "points": 4, "tileCount": 3, "tileIndices": [ - 17, - 11, - 12 + 12, + 13, + 19 ], "tileSegments": [ - "la", - "y", + "li", + "ter", + "al" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "ternary", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 13, + 2, + 3 + ], + "tileSegments": [ + "ter", + "na", + "ry" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "alter", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 19, + 13 + ], + "tileSegments": [ + "al", + "ter" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "atman", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 14, + 4 + ], + "tileSegments": [ + "at", "man" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "transcript", - "points": 4, - "tileCount": 3, + "word": "biter", + "points": 2, + "tileCount": 2, "tileIndices": [ - 16, - 14, - 15 + 18, + 13 ], "tileSegments": [ - "trans", - "cr", - "ipt" + "bi", + "ter" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "arvo", + "word": "clover", "points": 2, "tileCount": 2, "tileIndices": [ 10, - 0 - ], - "tileSegments": [ - "ar", - "vo" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "cabman", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 1, - 12 - ], - "tileSegments": [ - "cab", - "man" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "cloy", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 6, - 11 + 17 ], "tileSegments": [ "clo", - "y" + "ver" ], "isTargetQuartile": false, "isQuartile": false @@ -6042,8 +6033,8 @@ export const CURATED_PUZZLES = [ "points": 2, "tileCount": 2, "tileIndices": [ - 14, - 13 + 6, + 5 ], "tileSegments": [ "cr", @@ -6053,149 +6044,164 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "cry", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 14, - 11 - ], - "tileSegments": [ - "cr", - "y" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "diction", + "word": "enter", "points": 2, "tileCount": 2, "tileIndices": [ 8, - 9 + 13 ], "tileSegments": [ - "dic", - "tion" + "en", + "ter" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "lacy", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 17, - 5 - ], - "tileSegments": [ - "la", - "cy" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "lati", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 17, - 18 - ], - "tileSegments": [ - "la", - "ti" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "lay", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 17, - 11 - ], - "tileSegments": [ - "la", - "y" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "many", + "word": "lien", "points": 2, "tileCount": 2, "tileIndices": [ 12, - 11 + 8 ], "tileSegments": [ - "man", - "y" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "onus", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 19, - 13 - ], - "tileSegments": [ - "on", - "us" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "yen", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 11, - 4 - ], - "tileSegments": [ - "y", + "li", "en" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "yon", + "word": "liver", "points": 2, "tileCount": 2, "tileIndices": [ - 11, - 19 + 12, + 17 ], "tileSegments": [ - "y", - "on" + "li", + "ver" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "cab", + "word": "manat", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 4, + 14 + ], + "tileSegments": [ + "man", + "at" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "manna", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 4, + 2 + ], + "tileSegments": [ + "man", + "na" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "manure", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 4, + 15 + ], + "tileSegments": [ + "man", + "ure" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "nary", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 2, + 3 + ], + "tileSegments": [ + "na", + "ry" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "prover", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 16, + 17 + ], + "tileSegments": [ + "pro", + "ver" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "terry", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 13, + 3 + ], + "tileSegments": [ + "ter", + "ry" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "ureter", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 15, + 13 + ], + "tileSegments": [ + "ure", + "ter" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "at", "points": 1, "tileCount": 1, "tileIndices": [ - 1 + 14 ], "tileSegments": [ - "cab" + "at" ], "isTargetQuartile": false, "isQuartile": false @@ -6205,7 +6211,7 @@ export const CURATED_PUZZLES = [ "points": 1, "tileCount": 1, "tileIndices": [ - 12 + 4 ], "tileSegments": [ "man" @@ -6214,14 +6220,14 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "on", + "word": "pro", "points": 1, "tileCount": 1, "tileIndices": [ - 19 + 16 ], "tileSegments": [ - "on" + "pro" ], "isTargetQuartile": false, "isQuartile": false @@ -6231,7 +6237,7 @@ export const CURATED_PUZZLES = [ "points": 1, "tileCount": 1, "tileIndices": [ - 13 + 5 ], "tileSegments": [ "us" @@ -6240,8 +6246,8 @@ export const CURATED_PUZZLES = [ "isQuartile": false } ], - "wordCount": 27, - "maxPossibleScore": 122 + "wordCount": 29, + "maxPossibleScore": 134 }, { "id": "2026-10-20", @@ -6251,10 +6257,22 @@ export const CURATED_PUZZLES = [ "difficulty": "Normal", "quartets": [ [ - "des", - "ti", - "na", - "tion" + "back", + "pa", + "ck", + "er" + ], + [ + "lo", + "co", + "mo", + "tive" + ], + [ + "con", + "tin", + "en", + "tal" ], [ "na", @@ -6263,127 +6281,96 @@ export const CURATED_PUZZLES = [ "tion" ], [ - "con", - "ti", - "nen", - "tal" - ], - [ - "ex", - "pe", - "di", - "tion" - ], - [ - "ex", - "plo", - "ra", - "tion" + "vo", + "ya", + "ge", + "rs" ] ], "tiles": [ - "des", - "ti", - "na", - "tion", + "back", + "pa", + "ck", + "er", + "lo", + "co", + "mo", + "tive", + "con", + "tin", + "en", + "tal", "na", "vi", "ga", "tion", - "con", - "ti", - "nen", - "tal", - "ex", - "pe", - "di", - "tion", - "ex", - "plo", - "ra", - "tion" + "vo", + "ya", + "ge", + "rs" ], "targetQuartiles": [ - "destination", - "navigation", + "backpacker", + "locomotive", "continental", - "expedition", - "exploration" + "navigation", + "voyagers" ], "quartileDetails": [ { - "word": "destination", + "word": "backpacker", "tiles": [ - "des", - "ti", - "na", - "tion" + "back", + "pa", + "ck", + "er" ], - "clue": "The place to which someone is going or being sent" + "clue": "A traveler who journeys carrying their belongings" }, { - "word": "navigation", + "word": "locomotive", "tiles": [ - "na", - "vi", - "ga", - "tion" + "lo", + "co", + "mo", + "tive" ], - "clue": "Planning and directing route of ship or craft" + "clue": "A powered rail vehicle used for pulling trains" }, { "word": "continental", "tiles": [ "con", - "ti", - "nen", + "tin", + "en", "tal" ], "clue": "Forming or belonging to a continent" }, { - "word": "expedition", + "word": "navigation", "tiles": [ - "ex", - "pe", - "di", + "na", + "vi", + "ga", "tion" ], - "clue": "A journey undertaken by a group with a definite purpose" + "clue": "The process of accurately ascertaining one position and course" }, { - "word": "exploration", + "word": "voyagers", "tiles": [ - "ex", - "plo", - "ra", - "tion" + "vo", + "ya", + "ge", + "rs" ], - "clue": "The action of traveling in or through an unfamiliar area" + "clue": "People who go on a long journey, typically by sea or space" } ], "words": [ { - "word": "continental", - "points": 8, - "tileCount": 4, - "tileIndices": [ - 8, - 1, - 10, - 11 - ], - "tileSegments": [ - "con", - "ti", - "nen", - "tal" - ], - "isTargetQuartile": true, - "isQuartile": true - }, - { - "word": "destination", + "word": "backpacker", "points": 8, "tileCount": 4, "tileIndices": [ @@ -6393,48 +6380,48 @@ export const CURATED_PUZZLES = [ 3 ], "tileSegments": [ - "des", - "ti", - "na", - "tion" + "back", + "pa", + "ck", + "er" ], "isTargetQuartile": true, "isQuartile": true }, { - "word": "expedition", + "word": "continental", "points": 8, "tileCount": 4, "tileIndices": [ - 12, - 13, - 14, - 3 + 8, + 9, + 10, + 11 ], "tileSegments": [ - "ex", - "pe", - "di", - "tion" + "con", + "tin", + "en", + "tal" ], "isTargetQuartile": true, "isQuartile": true }, { - "word": "exploration", + "word": "locomotive", "points": 8, "tileCount": 4, "tileIndices": [ - 12, - 17, - 18, - 3 + 4, + 5, + 6, + 7 ], "tileSegments": [ - "ex", - "plo", - "ra", - "tion" + "lo", + "co", + "mo", + "tive" ], "isTargetQuartile": true, "isQuartile": true @@ -6444,10 +6431,10 @@ export const CURATED_PUZZLES = [ "points": 8, "tileCount": 4, "tileIndices": [ - 2, - 5, - 6, - 3 + 12, + 13, + 14, + 15 ], "tileSegments": [ "na", @@ -6459,250 +6446,354 @@ export const CURATED_PUZZLES = [ "isQuartile": true }, { - "word": "desperation", + "word": "voyagers", "points": 8, "tileCount": 4, "tileIndices": [ - 0, - 13, - 18, - 3 - ], - "tileSegments": [ - "des", - "pe", - "ra", - "tion" - ], - "isTargetQuartile": false, - "isQuartile": true - }, - { - "word": "divination", - "points": 8, - "tileCount": 4, - "tileIndices": [ - 14, - 5, - 2, - 3 - ], - "tileSegments": [ - "di", - "vi", - "na", - "tion" - ], - "isTargetQuartile": false, - "isQuartile": true - }, - { - "word": "condition", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 8, - 14, - 3 - ], - "tileSegments": [ - "con", - "di", - "tion" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "divides", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 14, - 5, - 0 - ], - "tileSegments": [ - "di", - "vi", - "des" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "explodes", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 12, + 16, 17, - 0 + 18, + 19 ], "tileSegments": [ - "ex", - "plo", - "des" + "vo", + "ya", + "ge", + "rs" ], - "isTargetQuartile": false, - "isQuartile": false + "isTargetQuartile": true, + "isQuartile": true }, { - "word": "nagana", - "points": 4, - "tileCount": 3, + "word": "locomotion", + "points": 8, + "tileCount": 4, "tileIndices": [ - 2, + 4, + 5, 6, - 4 + 15 ], "tileSegments": [ - "na", - "ga", - "na" + "lo", + "co", + "mo", + "tion" ], "isTargetQuartile": false, - "isQuartile": false + "isQuartile": true }, { - "word": "pedestal", + "word": "backpack", "points": 4, "tileCount": 3, "tileIndices": [ - 13, 0, - 11 + 1, + 2 ], "tileSegments": [ - "pe", - "des", - "tal" + "back", + "pa", + "ck" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "petition", + "word": "cocker", "points": 4, "tileCount": 3, "tileIndices": [ - 13, - 1, + 5, + 2, 3 ], "tileSegments": [ - "pe", - "ti", + "co", + "ck", + "er" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "conation", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 5, + 12, + 15 + ], + "tileSegments": [ + "co", + "na", "tion" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "tirades", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 1, - 18, - 0 - ], - "tileSegments": [ - "ti", - "ra", - "des" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "vidicon", + "word": "conative", "points": 4, "tileCount": 3, "tileIndices": [ 5, - 14, - 8 + 12, + 7 ], "tileSegments": [ - "vi", - "di", - "con" + "co", + "na", + "tive" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "conga", - "points": 2, - "tileCount": 2, + "word": "congers", + "points": 4, + "tileCount": 3, "tileIndices": [ 8, - 6 + 18, + 19 ], "tileSegments": [ "con", + "ge", + "rs" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "cotinga", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 5, + 9, + 14 + ], + "tileSegments": [ + "co", + "tin", "ga" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "desex", - "points": 2, - "tileCount": 2, + "word": "engage", + "points": 4, + "tileCount": 3, "tileIndices": [ - 0, - 12 + 10, + 14, + 18 ], "tileSegments": [ - "des", - "ex" + "en", + "ga", + "ge" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "gape", + "word": "envier", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 10, + 13, + 3 + ], + "tileSegments": [ + "en", + "vi", + "er" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "ergative", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 3, + 14, + 7 + ], + "tileSegments": [ + "er", + "ga", + "tive" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "locker", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 4, + 2, + 3 + ], + "tileSegments": [ + "lo", + "ck", + "er" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "mocker", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 6, + 2, + 3 + ], + "tileSegments": [ + "mo", + "ck", + "er" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "packer", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 1, + 2, + 3 + ], + "tileSegments": [ + "pa", + "ck", + "er" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "pagers", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 1, + 18, + 19 + ], + "tileSegments": [ + "pa", + "ge", + "rs" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "parser", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 1, + 19, + 3 + ], + "tileSegments": [ + "pa", + "rs", + "er" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "voyage", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 16, + 17, + 18 + ], + "tileSegments": [ + "vo", + "ya", + "ge" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "lock", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 4, + 2 + ], + "tileSegments": [ + "lo", + "ck" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "mock", "points": 2, "tileCount": 2, "tileIndices": [ 6, - 13 + 2 ], "tileSegments": [ - "ga", - "pe" + "mo", + "ck" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "nape", + "word": "motion", "points": 2, "tileCount": 2, "tileIndices": [ - 2, - 13 + 6, + 15 ], "tileSegments": [ - "na", - "pe" + "mo", + "tion" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "natal", + "word": "motive", "points": 2, "tileCount": 2, "tileIndices": [ - 2, - 11 + 6, + 7 ], "tileSegments": [ - "na", - "tal" + "mo", + "tive" ], "isTargetQuartile": false, "isQuartile": false @@ -6712,8 +6803,8 @@ export const CURATED_PUZZLES = [ "points": 2, "tileCount": 2, "tileIndices": [ - 2, - 3 + 12, + 15 ], "tileSegments": [ "na", @@ -6723,121 +6814,46 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "petal", + "word": "native", "points": 2, "tileCount": 2, "tileIndices": [ - 13, - 11 + 12, + 7 ], "tileSegments": [ - "pe", - "tal" + "na", + "tive" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "racon", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 18, - 8 - ], - "tileSegments": [ - "ra", - "con" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "raga", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 18, - 6 - ], - "tileSegments": [ - "ra", - "ga" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "rape", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 18, - 13 - ], - "tileSegments": [ - "ra", - "pe" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "ratal", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 18, - 11 - ], - "tileSegments": [ - "ra", - "tal" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "ration", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 18, - 3 - ], - "tileSegments": [ - "ra", - "tion" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "tides", + "word": "pack", "points": 2, "tileCount": 2, "tileIndices": [ 1, - 0 + 2 ], "tileSegments": [ - "ti", - "des" + "pa", + "ck" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "titi", + "word": "page", "points": 2, "tileCount": 2, "tileIndices": [ 1, - 9 + 18 ], "tileSegments": [ - "ti", - "ti" + "pa", + "ge" ], "isTargetQuartile": false, "isQuartile": false @@ -6847,7 +6863,7 @@ export const CURATED_PUZZLES = [ "points": 2, "tileCount": 2, "tileIndices": [ - 5, + 13, 11 ], "tileSegments": [ @@ -6859,7 +6875,7 @@ export const CURATED_PUZZLES = [ } ], "wordCount": 30, - "maxPossibleScore": 158 + "maxPossibleScore": 166 }, { "id": "2026-10-19", @@ -6868,6 +6884,12 @@ export const CURATED_PUZZLES = [ "theme": "Atmospheric Skies", "difficulty": "Challenging", "quartets": [ + [ + "me", + "teo", + "rol", + "ogy" + ], [ "tem", "per", @@ -6881,25 +6903,23 @@ export const CURATED_PUZZLES = [ "tion" ], [ - "me", - "teo", - "rol", - "ogy" + "stra", + "tos", + "phe", + "re" ], [ - "hi", - "ber", - "na", - "tion" - ], - [ - "il", - "lum", - "ina", - "tion" + "clo", + "ud", + "bur", + "st" ] ], "tiles": [ + "me", + "teo", + "rol", + "ogy", "tem", "per", "at", @@ -6908,27 +6928,33 @@ export const CURATED_PUZZLES = [ "cip", "ita", "tion", - "me", - "teo", - "rol", - "ogy", - "hi", - "ber", - "na", - "tion", - "il", - "lum", - "ina", - "tion" + "stra", + "tos", + "phe", + "re", + "clo", + "ud", + "bur", + "st" ], "targetQuartiles": [ + "meteorology", "temperatures", "precipitation", - "meteorology", - "hibernation", - "illumination" + "stratosphere", + "cloudburst" ], "quartileDetails": [ + { + "word": "meteorology", + "tiles": [ + "me", + "teo", + "rol", + "ogy" + ], + "clue": "The science of atmospheric processes and forecasting" + }, { "word": "temperatures", "tiles": [ @@ -6937,7 +6963,7 @@ export const CURATED_PUZZLES = [ "at", "ures" ], - "clue": "The degrees or intensities of heat present in an area" + "clue": "The degrees of heat present in substance or area" }, { "word": "precipitation", @@ -6947,74 +6973,45 @@ export const CURATED_PUZZLES = [ "ita", "tion" ], - "clue": "Rain, snow, sleet, or hail that falls to the ground" + "clue": "Rain, snow, sleet, or hail falling to the ground" }, { - "word": "meteorology", + "word": "stratosphere", "tiles": [ - "me", - "teo", - "rol", - "ogy" + "stra", + "tos", + "phe", + "re" ], - "clue": "The science concerned with processes of the atmosphere" + "clue": "Layer of the atmosphere above troposphere" }, { - "word": "hibernation", + "word": "cloudburst", "tiles": [ - "hi", - "ber", - "na", - "tion" + "clo", + "ud", + "bur", + "st" ], - "clue": "The condition or period of an animal spending winter asleep" - }, - { - "word": "illumination", - "tiles": [ - "il", - "lum", - "ina", - "tion" - ], - "clue": "Lighting or light provided" + "clue": "A sudden, violent rainstorm" } ], "words": [ { - "word": "hibernation", - "points": 8, - "tileCount": 4, - "tileIndices": [ - 12, - 13, - 14, - 7 - ], - "tileSegments": [ - "hi", - "ber", - "na", - "tion" - ], - "isTargetQuartile": true, - "isQuartile": true - }, - { - "word": "illumination", + "word": "cloudburst", "points": 8, "tileCount": 4, "tileIndices": [ 16, 17, 18, - 7 + 19 ], "tileSegments": [ - "il", - "lum", - "ina", - "tion" + "clo", + "ud", + "bur", + "st" ], "isTargetQuartile": true, "isQuartile": true @@ -7023,50 +7020,69 @@ export const CURATED_PUZZLES = [ "word": "meteorology", "points": 8, "tileCount": 4, - "tileIndices": [ - 8, - 9, - 10, - 11 - ], - "tileSegments": [ - "me", - "teo", - "rol", - "ogy" - ], - "isTargetQuartile": true, - "isQuartile": true - }, - { - "word": "precipitation", - "points": 8, - "tileCount": 4, - "tileIndices": [ - 4, - 5, - 6, - 7 - ], - "tileSegments": [ - "pre", - "cip", - "ita", - "tion" - ], - "isTargetQuartile": true, - "isQuartile": true - }, - { - "word": "temperatures", - "points": 8, - "tileCount": 4, "tileIndices": [ 0, 1, 2, 3 ], + "tileSegments": [ + "me", + "teo", + "rol", + "ogy" + ], + "isTargetQuartile": true, + "isQuartile": true + }, + { + "word": "precipitation", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 8, + 9, + 10, + 11 + ], + "tileSegments": [ + "pre", + "cip", + "ita", + "tion" + ], + "isTargetQuartile": true, + "isQuartile": true + }, + { + "word": "stratosphere", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 12, + 13, + 14, + 15 + ], + "tileSegments": [ + "stra", + "tos", + "phe", + "re" + ], + "isTargetQuartile": true, + "isQuartile": true + }, + { + "word": "temperatures", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 4, + 5, + 6, + 7 + ], "tileSegments": [ "tem", "per", @@ -7077,61 +7093,65 @@ export const CURATED_PUZZLES = [ "isQuartile": true }, { - "word": "hilum", + "word": "merest", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 0, + 15, + 19 + ], + "tileSegments": [ + "me", + "re", + "st" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "statures", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 19, + 6, + 7 + ], + "tileSegments": [ + "st", + "at", + "ures" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "burst", "points": 2, "tileCount": 2, "tileIndices": [ - 12, + 18, + 19 + ], + "tileSegments": [ + "bur", + "st" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "cloud", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 16, 17 ], "tileSegments": [ - "hi", - "lum" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "lumber", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 17, - 13 - ], - "tileSegments": [ - "lum", - "ber" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "lumina", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 17, - 18 - ], - "tileSegments": [ - "lum", - "ina" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "lumper", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 17, - 1 - ], - "tileSegments": [ - "lum", - "per" + "clo", + "ud" ], "isTargetQuartile": false, "isQuartile": false @@ -7141,8 +7161,8 @@ export const CURATED_PUZZLES = [ "points": 2, "tileCount": 2, "tileIndices": [ - 8, - 2 + 0, + 6 ], "tileSegments": [ "me", @@ -7152,61 +7172,46 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "nail", + "word": "mere", "points": 2, "tileCount": 2, "tileIndices": [ - 14, - 16 + 0, + 15 ], "tileSegments": [ - "na", - "il" + "me", + "re" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "name", + "word": "rest", "points": 2, "tileCount": 2, "tileIndices": [ - 14, - 8 + 15, + 19 ], "tileSegments": [ - "na", - "me" + "re", + "st" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "nation", + "word": "stud", "points": 2, "tileCount": 2, "tileIndices": [ - 14, - 7 + 19, + 17 ], "tileSegments": [ - "na", - "tion" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "peril", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 1, - 16 - ], - "tileSegments": [ - "per", - "il" + "st", + "ud" ], "isTargetQuartile": false, "isQuartile": false @@ -7216,8 +7221,8 @@ export const CURATED_PUZZLES = [ "points": 2, "tileCount": 2, "tileIndices": [ - 0, - 1 + 4, + 5 ], "tileSegments": [ "tem", @@ -7231,7 +7236,7 @@ export const CURATED_PUZZLES = [ "points": 1, "tileCount": 1, "tileIndices": [ - 2 + 6 ], "tileSegments": [ "at" @@ -7240,14 +7245,14 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "hi", + "word": "bur", "points": 1, "tileCount": 1, "tileIndices": [ - 12 + 18 ], "tileSegments": [ - "hi" + "bur" ], "isTargetQuartile": false, "isQuartile": false @@ -7257,7 +7262,7 @@ export const CURATED_PUZZLES = [ "points": 1, "tileCount": 1, "tileIndices": [ - 8 + 0 ], "tileSegments": [ "me" @@ -7270,7 +7275,7 @@ export const CURATED_PUZZLES = [ "points": 1, "tileCount": 1, "tileIndices": [ - 1 + 5 ], "tileSegments": [ "per" @@ -7279,8 +7284,8 @@ export const CURATED_PUZZLES = [ "isQuartile": false } ], - "wordCount": 19, - "maxPossibleScore": 104 + "wordCount": 18, + "maxPossibleScore": 106 }, { "id": "2026-10-18", @@ -7291,21 +7296,21 @@ export const CURATED_PUZZLES = [ "quartets": [ [ "pho", - "to", - "syn", + "tos", + "yn", "thesis" ], [ - "chl", - "oro", - "ph", - "yll" + "hor", + "tic", + "ul", + "ture" ], [ - "hor", - "ti", - "cul", - "ture" + "ev", + "er", + "gre", + "en" ], [ "ger", @@ -7314,72 +7319,72 @@ export const CURATED_PUZZLES = [ "tion" ], [ - "cul", - "ti", - "va", - "tion" + "sun", + "flo", + "we", + "rs" ] ], "tiles": [ "pho", - "to", - "syn", + "tos", + "yn", "thesis", - "chl", - "oro", - "ph", - "yll", "hor", - "ti", - "cul", + "tic", + "ul", "ture", + "ev", + "er", + "gre", + "en", "ger", "mi", "na", "tion", - "cul", - "ti", - "va", - "tion" + "sun", + "flo", + "we", + "rs" ], "targetQuartiles": [ "photosynthesis", - "chlorophyll", "horticulture", + "evergreen", "germination", - "cultivation" + "sunflowers" ], "quartileDetails": [ { "word": "photosynthesis", "tiles": [ "pho", - "to", - "syn", + "tos", + "yn", "thesis" ], "clue": "Process by which green plants synthesize nutrients" }, - { - "word": "chlorophyll", - "tiles": [ - "chl", - "oro", - "ph", - "yll" - ], - "clue": "A green pigment responsible for light absorption in plants" - }, { "word": "horticulture", "tiles": [ "hor", - "ti", - "cul", + "tic", + "ul", "ture" ], "clue": "The art or practice of garden cultivation" }, + { + "word": "evergreen", + "tiles": [ + "ev", + "er", + "gre", + "en" + ], + "clue": "A plant that retains green leaves throughout the year" + }, { "word": "germination", "tiles": [ @@ -7391,51 +7396,32 @@ export const CURATED_PUZZLES = [ "clue": "The development of a plant from a seed or spore" }, { - "word": "cultivation", + "word": "sunflowers", "tiles": [ - "cul", - "ti", - "va", - "tion" + "sun", + "flo", + "we", + "rs" ], - "clue": "The act of caring for and encouraging plant growth" + "clue": "Tall plants with very large, daisy-like yellow flowers" } ], "words": [ { - "word": "chlorophyll", + "word": "evergreen", "points": 8, "tileCount": 4, "tileIndices": [ - 4, - 5, - 6, - 7 - ], - "tileSegments": [ - "chl", - "oro", - "ph", - "yll" - ], - "isTargetQuartile": true, - "isQuartile": true - }, - { - "word": "cultivation", - "points": 8, - "tileCount": 4, - "tileIndices": [ - 10, + 8, 9, - 18, - 15 + 10, + 11 ], "tileSegments": [ - "cul", - "ti", - "va", - "tion" + "ev", + "er", + "gre", + "en" ], "isTargetQuartile": true, "isQuartile": true @@ -7464,15 +7450,15 @@ export const CURATED_PUZZLES = [ "points": 8, "tileCount": 4, "tileIndices": [ - 8, - 9, - 10, - 11 + 4, + 5, + 6, + 7 ], "tileSegments": [ "hor", - "ti", - "cul", + "tic", + "ul", "ture" ], "isTargetQuartile": true, @@ -7490,50 +7476,116 @@ export const CURATED_PUZZLES = [ ], "tileSegments": [ "pho", - "to", - "syn", + "tos", + "yn", "thesis" ], "isTargetQuartile": true, "isQuartile": true }, { - "word": "culmination", + "word": "sunflowers", "points": 8, "tileCount": 4, "tileIndices": [ - 10, - 13, - 14, - 15 + 16, + 17, + 18, + 19 ], "tileSegments": [ - "cul", - "mi", - "na", - "tion" + "sun", + "flo", + "we", + "rs" ], - "isTargetQuartile": false, + "isTargetQuartile": true, "isQuartile": true }, { - "word": "titivation", - "points": 8, - "tileCount": 4, + "word": "enticer", + "points": 4, + "tileCount": 3, "tileIndices": [ - 9, - 17, - 18, - 15 + 11, + 5, + 9 ], "tileSegments": [ - "ti", - "ti", - "va", - "tion" + "en", + "tic", + "er" ], "isTargetQuartile": false, - "isQuartile": true + "isQuartile": false + }, + { + "word": "evener", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 8, + 11, + 9 + ], + "tileSegments": [ + "ev", + "en", + "er" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "flowers", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 17, + 18, + 19 + ], + "tileSegments": [ + "flo", + "we", + "rs" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "germier", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 12, + 13, + 9 + ], + "tileSegments": [ + "ger", + "mi", + "er" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "greener", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 10, + 11, + 9 + ], + "tileSegments": [ + "gre", + "en", + "er" + ], + "isTargetQuartile": false, + "isQuartile": false }, { "word": "phonation", @@ -7553,7 +7605,69 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "culture", + "word": "weever", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 18, + 8, + 9 + ], + "tileSegments": [ + "we", + "ev", + "er" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "errs", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 9, + 19 + ], + "tileSegments": [ + "er", + "rs" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "even", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 8, + 11 + ], + "tileSegments": [ + "ev", + "en" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "ever", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 8, + 9 + ], + "tileSegments": [ + "ev", + "er" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "green", "points": 2, "tileCount": 2, "tileIndices": [ @@ -7561,8 +7675,23 @@ export const CURATED_PUZZLES = [ 11 ], "tileSegments": [ - "cul", - "ture" + "gre", + "en" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "mien", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 13, + 11 + ], + "tileSegments": [ + "mi", + "en" ], "isTargetQuartile": false, "isQuartile": false @@ -7588,7 +7717,7 @@ export const CURATED_PUZZLES = [ "tileCount": 2, "tileIndices": [ 14, - 11 + 7 ], "tileSegments": [ "na", @@ -7598,7 +7727,22 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "photo", + "word": "photic", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 0, + 5 + ], + "tileSegments": [ + "pho", + "tic" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "photos", "points": 2, "tileCount": 2, "tileIndices": [ @@ -7607,52 +7751,67 @@ export const CURATED_PUZZLES = [ ], "tileSegments": [ "pho", - "to" + "tos" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "synthesis", + "word": "tureen", "points": 2, "tileCount": 2, "tileIndices": [ - 2, - 3 + 7, + 11 ], "tileSegments": [ - "syn", - "thesis" + "ture", + "en" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "tiger", + "word": "ulna", "points": 2, "tileCount": 2, "tileIndices": [ - 9, - 12 + 6, + 14 ], "tileSegments": [ - "ti", - "ger" + "ul", + "na" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "titi", + "word": "ween", "points": 2, "tileCount": 2, "tileIndices": [ - 9, - 17 + 18, + 11 ], "tileSegments": [ - "ti", - "ti" + "we", + "en" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "weer", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 18, + 9 + ], + "tileSegments": [ + "we", + "er" ], "isTargetQuartile": false, "isQuartile": false @@ -7670,6 +7829,19 @@ export const CURATED_PUZZLES = [ "isTargetQuartile": false, "isQuartile": false }, + { + "word": "sun", + "points": 1, + "tileCount": 1, + "tileIndices": [ + 16 + ], + "tileSegments": [ + "sun" + ], + "isTargetQuartile": false, + "isQuartile": false + }, { "word": "thesis", "points": 1, @@ -7684,21 +7856,34 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "to", + "word": "tic", "points": 1, "tileCount": 1, "tileIndices": [ - 1 + 5 ], "tileSegments": [ - "to" + "tic" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "we", + "points": 1, + "tileCount": 1, + "tileIndices": [ + 18 + ], + "tileSegments": [ + "we" ], "isTargetQuartile": false, "isQuartile": false } ], - "wordCount": 18, - "maxPossibleScore": 117 + "wordCount": 30, + "maxPossibleScore": 139 }, { "id": "2026-10-17", @@ -7714,28 +7899,28 @@ export const CURATED_PUZZLES = [ "nation" ], [ - "per", - "sev", - "er", - "ance" + "cou", + "rag", + "eo", + "us" ], [ - "ac", - "com", - "pli", - "shed" + "cham", + "pion", + "sh", + "ip" ], [ "ach", - "ie", - "ve", - "ment" + "iev", + "em", + "ent" ], [ - "dis", - "tin", - "gui", - "shed" + "per", + "sev", + "era", + "nce" ] ], "tiles": [ @@ -7743,29 +7928,29 @@ export const CURATED_PUZZLES = [ "ter", "mi", "nation", + "cou", + "rag", + "eo", + "us", + "cham", + "pion", + "sh", + "ip", + "ach", + "iev", + "em", + "ent", "per", "sev", - "er", - "ance", - "ac", - "com", - "pli", - "shed", - "ach", - "ie", - "ve", - "ment", - "dis", - "tin", - "gui", - "shed" + "era", + "nce" ], "targetQuartiles": [ "determination", - "perseverance", - "accomplished", + "courageous", + "championship", "achievement", - "distinguished" + "perseverance" ], "quartileDetails": [ { @@ -7779,66 +7964,47 @@ export const CURATED_PUZZLES = [ "clue": "Firmness of purpose; resoluteness" }, { - "word": "perseverance", + "word": "courageous", "tiles": [ - "per", - "sev", - "er", - "ance" + "cou", + "rag", + "eo", + "us" ], - "clue": "Persistence in doing something despite difficulty" + "clue": "Not deterred by danger or pain; brave" }, { - "word": "accomplished", + "word": "championship", "tiles": [ - "ac", - "com", - "pli", - "shed" + "cham", + "pion", + "sh", + "ip" ], - "clue": "Highly trained or skilled in a field" + "clue": "A competition to decide the victor or champion" }, { "word": "achievement", "tiles": [ "ach", - "ie", - "ve", - "ment" + "iev", + "em", + "ent" ], - "clue": "A thing done successfully with effort" + "clue": "A thing done successfully with effort, skill, or courage" }, { - "word": "distinguished", + "word": "perseverance", "tiles": [ - "dis", - "tin", - "gui", - "shed" + "per", + "sev", + "era", + "nce" ], - "clue": "Successful, well known, and respected" + "clue": "Persistence in doing something despite difficulty" } ], "words": [ - { - "word": "accomplished", - "points": 8, - "tileCount": 4, - "tileIndices": [ - 8, - 9, - 10, - 11 - ], - "tileSegments": [ - "ac", - "com", - "pli", - "shed" - ], - "isTargetQuartile": true, - "isQuartile": true - }, { "word": "achievement", "points": 8, @@ -7851,9 +8017,47 @@ export const CURATED_PUZZLES = [ ], "tileSegments": [ "ach", - "ie", - "ve", - "ment" + "iev", + "em", + "ent" + ], + "isTargetQuartile": true, + "isQuartile": true + }, + { + "word": "championship", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 8, + 9, + 10, + 11 + ], + "tileSegments": [ + "cham", + "pion", + "sh", + "ip" + ], + "isTargetQuartile": true, + "isQuartile": true + }, + { + "word": "courageous", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 4, + 5, + 6, + 7 + ], + "tileSegments": [ + "cou", + "rag", + "eo", + "us" ], "isTargetQuartile": true, "isQuartile": true @@ -7878,175 +8082,54 @@ export const CURATED_PUZZLES = [ "isQuartile": true }, { - "word": "distinguished", + "word": "perseverance", "points": 8, "tileCount": 4, "tileIndices": [ 16, 17, 18, - 11 - ], - "tileSegments": [ - "dis", - "tin", - "gui", - "shed" - ], - "isTargetQuartile": true, - "isQuartile": true - }, - { - "word": "perseverance", - "points": 8, - "tileCount": 4, - "tileIndices": [ - 4, - 5, - 6, - 7 + 19 ], "tileSegments": [ "per", "sev", - "er", - "ance" + "era", + "nce" ], "isTargetQuartile": true, "isQuartile": true }, - { - "word": "achieve", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 12, - 13, - 14 - ], - "tileSegments": [ - "ach", - "ie", - "ve" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "commenter", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 9, - 15, - 6 - ], - "tileSegments": [ - "com", - "ment", - "er" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "commination", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 9, - 2, - 3 - ], - "tileSegments": [ - "com", - "mi", - "nation" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "compliance", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 9, - 10, - 7 - ], - "tileSegments": [ - "com", - "pli", - "ance" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "compliment", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 9, - 10, - 15 - ], - "tileSegments": [ - "com", - "pli", - "ment" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "determent", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 0, - 1, - 15 - ], - "tileSegments": [ - "de", - "ter", - "ment" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "dissever", - "points": 4, - "tileCount": 3, - "tileIndices": [ - 16, - 5, - 6 - ], - "tileSegments": [ - "dis", - "sev", - "er" - ], - "isTargetQuartile": false, - "isQuartile": false - }, { "word": "severance", "points": 4, "tileCount": 3, "tileIndices": [ - 5, - 6, - 7 + 17, + 18, + 19 ], "tileSegments": [ "sev", - "er", - "ance" + "era", + "nce" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "shipper", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 10, + 11, + 16 + ], + "tileSegments": [ + "sh", + "ip", + "per" ], "isTargetQuartile": false, "isQuartile": false @@ -8069,76 +8152,31 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "actin", + "word": "champion", "points": 2, "tileCount": 2, "tileIndices": [ 8, - 17 + 9 ], "tileSegments": [ - "ac", - "tin" + "cham", + "pion" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "comer", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 9, - 6 - ], - "tileSegments": [ - "com", - "er" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "comment", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 9, - 15 - ], - "tileSegments": [ - "com", - "ment" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "deer", + "word": "deem", "points": 2, "tileCount": 2, "tileIndices": [ 0, - 6 + 14 ], "tileSegments": [ "de", - "er" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "dement", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 0, - 15 - ], - "tileSegments": [ - "de", - "ment" + "em" ], "isTargetQuartile": false, "isQuartile": false @@ -8159,31 +8197,31 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "guide", + "word": "emus", "points": 2, "tileCount": 2, "tileIndices": [ - 18, - 0 + 14, + 7 ], "tileSegments": [ - "gui", - "de" + "em", + "us" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "midis", + "word": "mince", "points": 2, "tileCount": 2, "tileIndices": [ 2, - 16 + 19 ], "tileSegments": [ "mi", - "dis" + "nce" ], "isTargetQuartile": false, "isQuartile": false @@ -8193,7 +8231,7 @@ export const CURATED_PUZZLES = [ "points": 2, "tileCount": 2, "tileIndices": [ - 4, + 16, 1 ], "tileSegments": [ @@ -8204,76 +8242,42 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "plier", + "word": "ship", "points": 2, "tileCount": 2, "tileIndices": [ 10, - 6 + 11 ], "tileSegments": [ - "pli", - "er" + "sh", + "ip" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "sever", - "points": 2, - "tileCount": 2, + "word": "cham", + "points": 1, + "tileCount": 1, "tileIndices": [ - 5, - 6 + 8 ], "tileSegments": [ - "sev", - "er" + "cham" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "tinter", - "points": 2, - "tileCount": 2, + "word": "era", + "points": 1, + "tileCount": 1, "tileIndices": [ - 17, - 1 + 18 ], "tileSegments": [ - "tin", - "ter" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "veer", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 14, - 6 - ], - "tileSegments": [ - "ve", - "er" - ], - "isTargetQuartile": false, - "isQuartile": false - }, - { - "word": "venation", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 14, - 3 - ], - "tileSegments": [ - "ve", - "nation" + "era" ], "isTargetQuartile": false, "isQuartile": false @@ -8296,17 +8300,56 @@ export const CURATED_PUZZLES = [ "points": 1, "tileCount": 1, "tileIndices": [ - 4 + 16 ], "tileSegments": [ "per" ], "isTargetQuartile": false, "isQuartile": false + }, + { + "word": "pion", + "points": 1, + "tileCount": 1, + "tileIndices": [ + 9 + ], + "tileSegments": [ + "pion" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "rag", + "points": 1, + "tileCount": 1, + "tileIndices": [ + 5 + ], + "tileSegments": [ + "rag" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "us", + "points": 1, + "tileCount": 1, + "tileIndices": [ + 7 + ], + "tileSegments": [ + "us" + ], + "isTargetQuartile": false, + "isQuartile": false } ], - "wordCount": 30, - "maxPossibleScore": 146 + "wordCount": 22, + "maxPossibleScore": 113 }, { "id": "2026-10-16", @@ -8328,16 +8371,16 @@ export const CURATED_PUZZLES = [ "ble" ], [ - "con", - "ste", - "lla", - "tion" + "un", + "der", + "wa", + "ter" ], [ - "med", - "ite", - "rra", - "nean" + "cru", + "sta", + "ce", + "ans" ], [ "ex", @@ -8355,14 +8398,14 @@ export const CURATED_PUZZLES = [ "mer", "si", "ble", - "con", - "ste", - "lla", - "tion", - "med", - "ite", - "rra", - "nean", + "un", + "der", + "wa", + "ter", + "cru", + "sta", + "ce", + "ans", "ex", "plo", "ra", @@ -8371,8 +8414,8 @@ export const CURATED_PUZZLES = [ "targetQuartiles": [ "oceanography", "submersible", - "constellation", - "mediterranean", + "underwater", + "crustaceans", "exploration" ], "quartileDetails": [ @@ -8397,24 +8440,24 @@ export const CURATED_PUZZLES = [ "clue": "Designed to operate completely underwater" }, { - "word": "constellation", + "word": "underwater", "tiles": [ - "con", - "ste", - "lla", - "tion" + "un", + "der", + "wa", + "ter" ], - "clue": "A group of stars forming a recognizable pattern" + "clue": "Situated or occurring below water surface" }, { - "word": "mediterranean", + "word": "crustaceans", "tiles": [ - "med", - "ite", - "rra", - "nean" + "cru", + "sta", + "ce", + "ans" ], - "clue": "Of or characteristic of the Mediterranean Sea" + "clue": "Aquatic arthropods like crabs, lobsters, and shrimp" }, { "word": "exploration", @@ -8424,25 +8467,25 @@ export const CURATED_PUZZLES = [ "ra", "tion" ], - "clue": "The action of traveling in or through an unfamiliar area" + "clue": "The action of traveling through an unfamiliar area" } ], "words": [ { - "word": "constellation", + "word": "crustaceans", "points": 8, "tileCount": 4, "tileIndices": [ - 8, - 9, - 10, - 11 + 12, + 13, + 14, + 15 ], "tileSegments": [ - "con", - "ste", - "lla", - "tion" + "cru", + "sta", + "ce", + "ans" ], "isTargetQuartile": true, "isQuartile": true @@ -8455,7 +8498,7 @@ export const CURATED_PUZZLES = [ 16, 17, 18, - 11 + 19 ], "tileSegments": [ "ex", @@ -8505,33 +8548,238 @@ export const CURATED_PUZZLES = [ "isQuartile": true }, { - "word": "iteration", - "points": 4, - "tileCount": 3, + "word": "underwater", + "points": 8, + "tileCount": 4, "tileIndices": [ - 13, - 18, + 8, + 9, + 10, 11 ], "tileSegments": [ - "ite", - "ra", + "un", + "der", + "wa", + "ter" + ], + "isTargetQuartile": true, + "isQuartile": true + }, + { + "word": "exploder", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 16, + 17, + 9 + ], + "tileSegments": [ + "ex", + "plo", + "der" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "substation", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 4, + 13, + 19 + ], + "tileSegments": [ + "sub", + "sta", "tion" ], "isTargetQuartile": false, "isQuartile": false }, { - "word": "racon", + "word": "terrace", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 11, + 18, + 14 + ], + "tileSegments": [ + "ter", + "ra", + "ce" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "unstable", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 8, + 13, + 7 + ], + "tileSegments": [ + "un", + "sta", + "ble" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "ceder", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 14, + 9 + ], + "tileSegments": [ + "ce", + "der" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "cesta", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 14, + 13 + ], + "tileSegments": [ + "ce", + "sta" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "cruder", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 12, + 9 + ], + "tileSegments": [ + "cru", + "der" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "grace", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 2, + 14 + ], + "tileSegments": [ + "gra", + "ce" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "grader", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 2, + 9 + ], + "tileSegments": [ + "gra", + "der" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "grater", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 2, + 11 + ], + "tileSegments": [ + "gra", + "ter" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "oceans", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 0, + 15 + ], + "tileSegments": [ + "oce", + "ans" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "ploce", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 17, + 14 + ], + "tileSegments": [ + "plo", + "ce" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "race", "points": 2, "tileCount": 2, "tileIndices": [ 18, - 8 + 14 ], "tileSegments": [ "ra", - "con" + "ce" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "rater", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 18, + 11 + ], + "tileSegments": [ + "ra", + "ter" ], "isTargetQuartile": false, "isQuartile": false @@ -8542,7 +8790,7 @@ export const CURATED_PUZZLES = [ "tileCount": 2, "tileIndices": [ 18, - 11 + 19 ], "tileSegments": [ "ra", @@ -8552,14 +8800,134 @@ export const CURATED_PUZZLES = [ "isQuartile": false }, { - "word": "con", + "word": "stable", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 13, + 7 + ], + "tileSegments": [ + "sta", + "ble" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "stater", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 13, + 11 + ], + "tileSegments": [ + "sta", + "ter" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "station", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 13, + 19 + ], + "tileSegments": [ + "sta", + "tion" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "terce", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 11, + 14 + ], + "tileSegments": [ + "ter", + "ce" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "terra", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 11, + 18 + ], + "tileSegments": [ + "ter", + "ra" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "under", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 8, + 9 + ], + "tileSegments": [ + "un", + "der" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "wader", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 10, + 9 + ], + "tileSegments": [ + "wa", + "der" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "water", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 10, + 11 + ], + "tileSegments": [ + "wa", + "ter" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "cru", "points": 1, "tileCount": 1, "tileIndices": [ - 8 + 12 ], "tileSegments": [ - "con" + "cru" ], "isTargetQuartile": false, "isQuartile": false @@ -8578,8 +8946,8 @@ export const CURATED_PUZZLES = [ "isQuartile": false } ], - "wordCount": 9, - "maxPossibleScore": 82 + "wordCount": 30, + "maxPossibleScore": 136 }, { "id": "2026-10-15", @@ -8594,12 +8962,6 @@ export const CURATED_PUZZLES = [ "ri", "city" ], - [ - "ac", - "cel", - "era", - "tion" - ], [ "the", "rmo", @@ -8616,7 +8978,13 @@ export const CURATED_PUZZLES = [ "rad", "ioa", "cti", - "vity" + "ve" + ], + [ + "mag", + "ne", + "ti", + "sm" ] ], "tiles": [ @@ -8624,10 +8992,6 @@ export const CURATED_PUZZLES = [ "ect", "ri", "city", - "ac", - "cel", - "era", - "tion", "the", "rmo", "dyn", @@ -8639,14 +9003,18 @@ export const CURATED_PUZZLES = [ "rad", "ioa", "cti", - "vity" + "ve", + "mag", + "ne", + "ti", + "sm" ], "targetQuartiles": [ "electricity", - "acceleration", "thermodynamic", "equilibrium", - "radioactivity" + "radioactive", + "magnetism" ], "quartileDetails": [ { @@ -8659,16 +9027,6 @@ export const CURATED_PUZZLES = [ ], "clue": "Form of energy from charged elementary particles" }, - { - "word": "acceleration", - "tiles": [ - "ac", - "cel", - "era", - "tion" - ], - "clue": "The rate of change of velocity per unit time" - }, { "word": "thermodynamic", "tiles": [ @@ -8690,36 +9048,27 @@ export const CURATED_PUZZLES = [ "clue": "A state in which opposing forces are balanced" }, { - "word": "radioactivity", + "word": "radioactive", "tiles": [ "rad", "ioa", "cti", - "vity" + "ve" ], - "clue": "The emission of ionizing radiation from nuclei" + "clue": "Emitting ionizing radiation from nuclei" + }, + { + "word": "magnetism", + "tiles": [ + "mag", + "ne", + "ti", + "sm" + ], + "clue": "A physical phenomenon produced by the motion of electric charge" } ], "words": [ - { - "word": "acceleration", - "points": 8, - "tileCount": 4, - "tileIndices": [ - 4, - 5, - 6, - 7 - ], - "tileSegments": [ - "ac", - "cel", - "era", - "tion" - ], - "isTargetQuartile": true, - "isQuartile": true - }, { "word": "electricity", "points": 8, @@ -8744,10 +9093,10 @@ export const CURATED_PUZZLES = [ "points": 8, "tileCount": 4, "tileIndices": [ - 12, - 13, - 14, - 15 + 8, + 9, + 10, + 11 ], "tileSegments": [ "equ", @@ -8759,7 +9108,7 @@ export const CURATED_PUZZLES = [ "isQuartile": true }, { - "word": "radioactivity", + "word": "magnetism", "points": 8, "tileCount": 4, "tileIndices": [ @@ -8768,11 +9117,30 @@ export const CURATED_PUZZLES = [ 18, 19 ], + "tileSegments": [ + "mag", + "ne", + "ti", + "sm" + ], + "isTargetQuartile": true, + "isQuartile": true + }, + { + "word": "radioactive", + "points": 8, + "tileCount": 4, + "tileIndices": [ + 12, + 13, + 14, + 15 + ], "tileSegments": [ "rad", "ioa", "cti", - "vity" + "ve" ], "isTargetQuartile": true, "isQuartile": true @@ -8782,10 +9150,10 @@ export const CURATED_PUZZLES = [ "points": 8, "tileCount": 4, "tileIndices": [ - 8, - 9, - 10, - 11 + 4, + 5, + 6, + 7 ], "tileSegments": [ "the", @@ -8797,16 +9165,50 @@ export const CURATED_PUZZLES = [ "isQuartile": true }, { - "word": "action", + "word": "smriti", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 19, + 2, + 18 + ], + "tileSegments": [ + "sm", + "ri", + "ti" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "verism", + "points": 4, + "tileCount": 3, + "tileIndices": [ + 15, + 2, + 19 + ], + "tileSegments": [ + "ve", + "ri", + "sm" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "brine", "points": 2, "tileCount": 2, "tileIndices": [ - 4, - 7 + 10, + 17 ], "tileSegments": [ - "ac", - "tion" + "bri", + "ne" ], "isTargetQuartile": false, "isQuartile": false @@ -8816,8 +9218,8 @@ export const CURATED_PUZZLES = [ "points": 2, "tileCount": 2, "tileIndices": [ - 10, - 11 + 6, + 7 ], "tileSegments": [ "dyn", @@ -8841,28 +9243,13 @@ export const CURATED_PUZZLES = [ "isTargetQuartile": false, "isQuartile": false }, - { - "word": "iliac", - "points": 2, - "tileCount": 2, - "tileIndices": [ - 13, - 4 - ], - "tileSegments": [ - "ili", - "ac" - ], - "isTargetQuartile": false, - "isQuartile": false - }, { "word": "ilium", "points": 2, "tileCount": 2, "tileIndices": [ - 13, - 15 + 9, + 11 ], "tileSegments": [ "ili", @@ -8886,6 +9273,51 @@ export const CURATED_PUZZLES = [ "isTargetQuartile": false, "isQuartile": false }, + { + "word": "rive", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 2, + 15 + ], + "tileSegments": [ + "ri", + "ve" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "tine", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 18, + 17 + ], + "tileSegments": [ + "ti", + "ne" + ], + "isTargetQuartile": false, + "isQuartile": false + }, + { + "word": "tithe", + "points": 2, + "tileCount": 2, + "tileIndices": [ + 18, + 4 + ], + "tileSegments": [ + "ti", + "the" + ], + "isTargetQuartile": false, + "isQuartile": false + }, { "word": "city", "points": 1, @@ -8899,25 +9331,12 @@ export const CURATED_PUZZLES = [ "isTargetQuartile": false, "isQuartile": false }, - { - "word": "era", - "points": 1, - "tileCount": 1, - "tileIndices": [ - 6 - ], - "tileSegments": [ - "era" - ], - "isTargetQuartile": false, - "isQuartile": false - }, { "word": "the", "points": 1, "tileCount": 1, "tileIndices": [ - 8 + 4 ], "tileSegments": [ "the" @@ -8926,8 +9345,8 @@ export const CURATED_PUZZLES = [ "isQuartile": false } ], - "wordCount": 14, - "maxPossibleScore": 95 + "wordCount": 17, + "maxPossibleScore": 106 } ]; @@ -9043,114 +9462,37 @@ export const TARGET_WORDS_POOL = [ "clue": "Having the power for viewing distant objects" }, { - "word": "required", + "word": "constellation", "tiles": [ - "re", - "qu", - "ir", - "ed" - ], - "theme": "science", - "clue": "Officially compulsory or needed" - }, - { - "word": "equivalent", - "tiles": [ - "equ", - "iv", - "al", - "ent" - ], - "theme": "science", - "clue": "Equal in value, amount, or meaning" - }, - { - "word": "objection", - "tiles": [ - "obj", - "ec", - "ti", - "on" - ], - "theme": "science", - "clue": "An expression or feeling of disapproval" - }, - { - "word": "justification", - "tiles": [ - "ju", - "stif", - "ica", + "con", + "ste", + "lla", "tion" ], - "theme": "science", - "clue": "The action of showing something to be right" + "theme": "space", + "clue": "A group of stars forming a pattern" }, { - "word": "mysterious", + "word": "stratosphere", "tiles": [ - "mys", - "ter", - "io", - "us" + "stra", + "tos", + "phe", + "re" ], - "theme": "science", - "clue": "Difficult or impossible to understand" + "theme": "space", + "clue": "Layer of the atmosphere above troposphere" }, { - "word": "biodiversity", + "word": "superconductor", "tiles": [ - "bio", - "di", - "ver", - "sity" + "su", + "per", + "con", + "ductor" ], - "theme": "nature", - "clue": "The variety of life in the world or habitat" - }, - { - "word": "environment", - "tiles": [ - "en", - "vi", - "ron", - "ment" - ], - "theme": "nature", - "clue": "The surroundings or conditions in which one lives" - }, - { - "word": "caterpillar", - "tiles": [ - "cat", - "er", - "pil", - "lar" - ], - "theme": "nature", - "clue": "The larval stage of a butterfly or moth" - }, - { - "word": "underwater", - "tiles": [ - "un", - "der", - "wa", - "ter" - ], - "theme": "nature", - "clue": "Situated or occurring below water surface" - }, - { - "word": "thunderstorm", - "tiles": [ - "thun", - "der", - "sto", - "rm" - ], - "theme": "nature", - "clue": "A transient storm of lightning and thunder" + "theme": "space", + "clue": "Material with zero electrical resistance" }, { "word": "imagination", @@ -9205,7 +9547,29 @@ export const TARGET_WORDS_POOL = [ "ness" ], "theme": "mind", - "clue": "The state of being aware of one surroundings" + "clue": "The state of being aware of surroundings" + }, + { + "word": "philosophy", + "tiles": [ + "phi", + "los", + "op", + "hy" + ], + "theme": "mind", + "clue": "The study of fundamental nature of knowledge" + }, + { + "word": "thoughtfulness", + "tiles": [ + "thou", + "ght", + "ful", + "ness" + ], + "theme": "mind", + "clue": "The state of thinking deeply or being caring" }, { "word": "architecture", @@ -9263,7 +9627,7 @@ export const TARGET_WORDS_POOL = [ "clue": "A very tall building with many stories" }, { - "word": "symphony", + "word": "symphonically", "tiles": [ "sym", "pho", @@ -9285,15 +9649,15 @@ export const TARGET_WORDS_POOL = [ "clue": "A work of outstanding artistry or skill" }, { - "word": "performance", + "word": "calligraphy", "tiles": [ - "per", - "for", - "man", - "ce" + "cal", + "lig", + "ra", + "phy" ], "theme": "arts", - "clue": "An act of staging or presenting a play or concert" + "clue": "Decorative handwriting or handwritten lettering" }, { "word": "exhibition", @@ -9317,6 +9681,28 @@ export const TARGET_WORDS_POOL = [ "theme": "arts", "clue": "The use of the imagination or original ideas" }, + { + "word": "choreography", + "tiles": [ + "cho", + "reo", + "gra", + "phy" + ], + "theme": "arts", + "clue": "The sequence of steps and movements in dance" + }, + { + "word": "harmonium", + "tiles": [ + "har", + "mo", + "ni", + "um" + ], + "theme": "arts", + "clue": "A keyboard instrument like an organ" + }, { "word": "technology", "tiles": [ @@ -9351,26 +9737,48 @@ export const TARGET_WORDS_POOL = [ "clue": "The use of largely automatic equipment in a system" }, { - "word": "innovation", + "word": "semiconductor", "tiles": [ - "in", - "no", - "va", - "tion" + "sem", + "ico", + "ndu", + "ctor" ], "theme": "tech", - "clue": "A new method, idea, or product" + "clue": "Solid substance conducting electricity between conductor and insulator" }, { - "word": "computation", + "word": "cybersecurity", "tiles": [ - "com", - "pu", - "ta", - "tion" + "cy", + "ber", + "sec", + "urity" ], "theme": "tech", - "clue": "The action of mathematical calculation" + "clue": "Protection of computer systems from attack or theft" + }, + { + "word": "microprocessor", + "tiles": [ + "mi", + "cro", + "pro", + "cessor" + ], + "theme": "tech", + "clue": "An integrated circuit containing CPU" + }, + { + "word": "motherboard", + "tiles": [ + "mo", + "ther", + "bo", + "ard" + ], + "theme": "tech", + "clue": "A printed circuit board containing principal components" }, { "word": "celebration", @@ -9381,29 +9789,29 @@ export const TARGET_WORDS_POOL = [ "tion" ], "theme": "society", - "clue": "The action of marking one pleasure at an event" + "clue": "The action of marking pleasure at an event" }, { - "word": "communication", + "word": "fellowship", "tiles": [ - "com", - "mu", - "ni", - "cation" + "fel", + "low", + "sh", + "ip" ], "theme": "society", - "clue": "The imparting or exchanging of information" + "clue": "Friendly association, especially with shared interests" }, { - "word": "relationship", + "word": "generosity", "tiles": [ - "re", - "la", - "tion", - "ship" + "gen", + "ero", + "si", + "ty" ], "theme": "society", - "clue": "The way in which two or more concepts or people connect" + "clue": "The quality of being kind and generous" }, { "word": "opportunity", @@ -9414,48 +9822,257 @@ export const TARGET_WORDS_POOL = [ "nity" ], "theme": "society", - "clue": "A set of circumstances making it possible to do something" + "clue": "A set of circumstances making something possible" }, { - "word": "conversation", + "word": "marshmallow", "tiles": [ - "con", - "ver", - "sa", - "tion" + "mar", + "shm", + "all", + "ow" ], "theme": "society", - "clue": "A talk between two or more people" + "clue": "A sweet chewy confection made of sugar and gelatin" }, { - "word": "vocabulary", + "word": "hospitality", "tiles": [ - "vo", - "cab", - "ul", - "ary" + "hos", + "pit", + "al", + "ity" ], - "theme": "words", - "clue": "The body of words used in a particular language" + "theme": "society", + "clue": "Friendly and generous reception of guests" }, { - "word": "encyclopedia", + "word": "friendship", + "tiles": [ + "fri", + "end", + "sh", + "ip" + ], + "theme": "society", + "clue": "A state of mutual trust and support between people" + }, + { + "word": "biodiversity", + "tiles": [ + "bio", + "di", + "ver", + "sity" + ], + "theme": "nature", + "clue": "The variety of life in the world or habitat" + }, + { + "word": "environment", "tiles": [ "en", - "cy", - "clo", - "pedia" + "vi", + "ron", + "ment" ], - "theme": "words", - "clue": "A book or set providing information on many subjects" + "theme": "nature", + "clue": "The surroundings or conditions in which one lives" + }, + { + "word": "caterpillar", + "tiles": [ + "cat", + "er", + "pil", + "lar" + ], + "theme": "nature", + "clue": "The larval stage of a butterfly or moth" + }, + { + "word": "wilderness", + "tiles": [ + "wil", + "der", + "ne", + "ss" + ], + "theme": "nature", + "clue": "An uncultivated, uninhabited, and hospitable region" + }, + { + "word": "chameleon", + "tiles": [ + "cha", + "me", + "le", + "on" + ], + "theme": "nature", + "clue": "A lizard capable of changing skin color" + }, + { + "word": "hummingbird", + "tiles": [ + "hum", + "ming", + "bi", + "rd" + ], + "theme": "nature", + "clue": "Small nectar-feeding bird with hovering flight" + }, + { + "word": "woodpecker", + "tiles": [ + "wood", + "pe", + "ck", + "er" + ], + "theme": "nature", + "clue": "A bird with a strong beak for drilling into wood" + }, + { + "word": "butterflies", + "tiles": [ + "but", + "ter", + "fli", + "es" + ], + "theme": "nature", + "clue": "Insects with large, often brightly colored wings" + }, + { + "word": "grasshoppers", + "tiles": [ + "grass", + "hop", + "pe", + "rs" + ], + "theme": "nature", + "clue": "Plant-eating insect with powerful hind legs for jumping" + }, + { + "word": "mysterious", + "tiles": [ + "mys", + "ter", + "io", + "us" + ], + "theme": "mystery", + "clue": "Difficult or impossible to understand or explain" + }, + { + "word": "supernatural", + "tiles": [ + "su", + "per", + "nat", + "ural" + ], + "theme": "mystery", + "clue": "Attributed to some force beyond scientific understanding" + }, + { + "word": "apparition", + "tiles": [ + "ap", + "par", + "it", + "ion" + ], + "theme": "mystery", + "clue": "A ghost or ghostlike image of a person" + }, + { + "word": "enchanted", + "tiles": [ + "en", + "cha", + "nt", + "ed" + ], + "theme": "mystery", + "clue": "Placed under a spell; bewitched" + }, + { + "word": "miraculous", + "tiles": [ + "mi", + "rac", + "ul", + "ous" + ], + "theme": "mystery", + "clue": "Occurring through divine or extraordinary intervention" + }, + { + "word": "equivalent", + "tiles": [ + "equ", + "iv", + "al", + "ent" + ], + "theme": "science", + "clue": "Equal in value, amount, function, or meaning" + }, + { + "word": "hypothesis", + "tiles": [ + "hy", + "pot", + "he", + "sis" + ], + "theme": "science", + "clue": "A proposed explanation made on limited evidence" + }, + { + "word": "laboratory", + "tiles": [ + "lab", + "ora", + "to", + "ry" + ], + "theme": "science", + "clue": "A room or building equipped for scientific experiments" + }, + { + "word": "microscope", + "tiles": [ + "mi", + "cro", + "sco", + "pe" + ], + "theme": "science", + "clue": "Optical instrument for magnifying tiny objects" + }, + { + "word": "phenomenon", + "tiles": [ + "phe", + "nom", + "en", + "on" + ], + "theme": "science", + "clue": "A remarkable fact or situation that is observed to happen" }, { "word": "dictionary", "tiles": [ "dic", - "tion", - "ar", - "y" + "tio", + "na", + "ry" ], "theme": "words", "clue": "A reference book on words and definitions" @@ -9472,26 +10089,70 @@ export const TARGET_WORDS_POOL = [ "clue": "An author text that has not yet been printed" }, { - "word": "translation", + "word": "encyclopedia", "tiles": [ - "trans", - "la", - "ti", - "on" + "en", + "cy", + "clo", + "pedia" ], "theme": "words", - "clue": "The process of translating words into another language" + "clue": "A book or set providing information on many subjects" }, { - "word": "destination", + "word": "literature", "tiles": [ - "des", - "ti", - "na", - "tion" + "li", + "ter", + "at", + "ure" + ], + "theme": "words", + "clue": "Written works, especially those considered of superior merit" + }, + { + "word": "proverbial", + "tiles": [ + "pro", + "ver", + "bi", + "al" + ], + "theme": "words", + "clue": "Referred to in a proverb or well known" + }, + { + "word": "backpacker", + "tiles": [ + "back", + "pa", + "ck", + "er" ], "theme": "travel", - "clue": "The place to which someone is going or being sent" + "clue": "A traveler who journeys carrying their belongings" + }, + { + "word": "locomotive", + "tiles": [ + "lo", + "co", + "mo", + "tive" + ], + "theme": "travel", + "clue": "A powered rail vehicle used for pulling trains" + }, + { + "word": "continental", + "tiles": [ + "con", + "tin", + "en", + "tal" + ], + "theme": "travel", + "clue": "Forming or belonging to a continent" }, { "word": "navigation", @@ -9502,62 +10163,18 @@ export const TARGET_WORDS_POOL = [ "tion" ], "theme": "travel", - "clue": "The process of accurately ascertaining one position" + "clue": "The process of accurately ascertaining one position and course" }, { - "word": "continental", + "word": "voyagers", "tiles": [ - "con", - "ti", - "nen", - "tal" + "vo", + "ya", + "ge", + "rs" ], "theme": "travel", - "clue": "Forming or belonging to a continent" - }, - { - "word": "expedition", - "tiles": [ - "ex", - "pe", - "di", - "tion" - ], - "theme": "travel", - "clue": "A journey undertaken by a group with a definite purpose" - }, - { - "word": "exploration", - "tiles": [ - "ex", - "plo", - "ra", - "tion" - ], - "theme": "travel", - "clue": "The action of traveling in or through an unfamiliar area" - }, - { - "word": "temperatures", - "tiles": [ - "tem", - "per", - "at", - "ures" - ], - "theme": "weather", - "clue": "The degrees or intensities of heat present in an area" - }, - { - "word": "precipitation", - "tiles": [ - "pre", - "cip", - "ita", - "tion" - ], - "theme": "weather", - "clue": "Rain, snow, sleet, or hail that falls to the ground" + "clue": "People who go on a long journey, typically by sea or space" }, { "word": "meteorology", @@ -9568,63 +10185,85 @@ export const TARGET_WORDS_POOL = [ "ogy" ], "theme": "weather", - "clue": "The science concerned with processes of the atmosphere" + "clue": "The science of atmospheric processes and forecasting" }, { - "word": "hibernation", + "word": "temperatures", "tiles": [ - "hi", - "ber", - "na", + "tem", + "per", + "at", + "ures" + ], + "theme": "weather", + "clue": "The degrees of heat present in substance or area" + }, + { + "word": "precipitation", + "tiles": [ + "pre", + "cip", + "ita", "tion" ], "theme": "weather", - "clue": "The condition or period of an animal spending winter asleep" + "clue": "Rain, snow, sleet, or hail falling to the ground" }, { - "word": "illumination", + "word": "cloudburst", "tiles": [ - "il", - "lum", - "ina", - "tion" + "clo", + "ud", + "bur", + "st" ], "theme": "weather", - "clue": "Lighting or light provided" + "clue": "A sudden, violent rainstorm" + }, + { + "word": "thunderstorm", + "tiles": [ + "thun", + "der", + "sto", + "rm" + ], + "theme": "weather", + "clue": "A storm with thunder and lightning and heavy rain" }, { "word": "photosynthesis", "tiles": [ "pho", - "to", - "syn", + "tos", + "yn", "thesis" ], "theme": "plants", "clue": "Process by which green plants synthesize nutrients" }, - { - "word": "chlorophyll", - "tiles": [ - "chl", - "oro", - "ph", - "yll" - ], - "theme": "plants", - "clue": "A green pigment responsible for light absorption in plants" - }, { "word": "horticulture", "tiles": [ "hor", - "ti", - "cul", + "tic", + "ul", "ture" ], "theme": "plants", "clue": "The art or practice of garden cultivation" }, + { + "word": "evergreen", + "tiles": [ + "ev", + "er", + "gre", + "en" + ], + "theme": "plants", + "clue": "A plant that retains green leaves throughout the year" + }, { "word": "germination", "tiles": [ @@ -9637,70 +10276,70 @@ export const TARGET_WORDS_POOL = [ "clue": "The development of a plant from a seed or spore" }, { - "word": "cultivation", + "word": "sunflowers", "tiles": [ - "cul", - "ti", - "va", - "tion" + "sun", + "flo", + "we", + "rs" ], "theme": "plants", - "clue": "The act of caring for and encouraging plant growth" + "clue": "Tall plants with very large, daisy-like yellow flowers" }, { - "word": "extraordinary", + "word": "determination", "tiles": [ - "ex", - "tra", - "ordi", - "nary" + "de", + "ter", + "mi", + "nation" ], - "theme": "wisdom", - "clue": "Very unusual or remarkable" + "theme": "endeavor", + "clue": "Firmness of purpose; resoluteness" }, { - "word": "satisfaction", + "word": "courageous", "tiles": [ - "sa", - "tis", - "fac", - "tion" + "cou", + "rag", + "eo", + "us" ], - "theme": "wisdom", - "clue": "Fulfillment of one wishes or expectations" + "theme": "endeavor", + "clue": "Not deterred by danger or pain; brave" }, { - "word": "anticipation", + "word": "championship", "tiles": [ - "an", - "ti", - "cip", - "ation" + "cham", + "pion", + "sh", + "ip" ], - "theme": "wisdom", - "clue": "The act of expecting something in advance" + "theme": "endeavor", + "clue": "A competition to decide the victor or champion" }, { - "word": "consideration", + "word": "achievement", "tiles": [ - "con", - "sid", + "ach", + "iev", + "em", + "ent" + ], + "theme": "endeavor", + "clue": "A thing done successfully with effort, skill, or courage" + }, + { + "word": "perseverance", + "tiles": [ + "per", + "sev", "era", - "tion" + "nce" ], - "theme": "wisdom", - "clue": "Careful thought over a period of time" - }, - { - "word": "investigation", - "tiles": [ - "in", - "ves", - "ti", - "gation" - ], - "theme": "wisdom", - "clue": "A formal inquiry or systematic examination" + "theme": "endeavor", + "clue": "Persistence in doing something despite difficulty" }, { "word": "oceanography", @@ -9725,92 +10364,37 @@ export const TARGET_WORDS_POOL = [ "clue": "Designed to operate completely underwater" }, { - "word": "navigation", + "word": "underwater", "tiles": [ - "na", - "vi", - "ga", + "un", + "der", + "wa", + "ter" + ], + "theme": "ocean", + "clue": "Situated or occurring below water surface" + }, + { + "word": "crustaceans", + "tiles": [ + "cru", + "sta", + "ce", + "ans" + ], + "theme": "ocean", + "clue": "Aquatic arthropods like crabs, lobsters, and shrimp" + }, + { + "word": "exploration", + "tiles": [ + "ex", + "plo", + "ra", "tion" ], "theme": "ocean", - "clue": "Planning and directing route of ship or craft" - }, - { - "word": "constellation", - "tiles": [ - "con", - "ste", - "lla", - "tion" - ], - "theme": "ocean", - "clue": "A group of stars forming a recognizable pattern" - }, - { - "word": "mediterranean", - "tiles": [ - "med", - "ite", - "rra", - "nean" - ], - "theme": "ocean", - "clue": "Of or characteristic of the Mediterranean Sea" - }, - { - "word": "determination", - "tiles": [ - "de", - "ter", - "mi", - "nation" - ], - "theme": "endeavor", - "clue": "Firmness of purpose; resoluteness" - }, - { - "word": "perseverance", - "tiles": [ - "per", - "sev", - "er", - "ance" - ], - "theme": "endeavor", - "clue": "Persistence in doing something despite difficulty" - }, - { - "word": "accomplished", - "tiles": [ - "ac", - "com", - "pli", - "shed" - ], - "theme": "endeavor", - "clue": "Highly trained or skilled in a field" - }, - { - "word": "achievement", - "tiles": [ - "ach", - "ie", - "ve", - "ment" - ], - "theme": "endeavor", - "clue": "A thing done successfully with effort" - }, - { - "word": "distinguished", - "tiles": [ - "dis", - "tin", - "gui", - "shed" - ], - "theme": "endeavor", - "clue": "Successful, well known, and respected" + "clue": "The action of traveling through an unfamiliar area" }, { "word": "electricity", @@ -9823,17 +10407,6 @@ export const TARGET_WORDS_POOL = [ "theme": "physics", "clue": "Form of energy from charged elementary particles" }, - { - "word": "acceleration", - "tiles": [ - "ac", - "cel", - "era", - "tion" - ], - "theme": "physics", - "clue": "The rate of change of velocity per unit time" - }, { "word": "thermodynamic", "tiles": [ @@ -9857,14 +10430,4260 @@ export const TARGET_WORDS_POOL = [ "clue": "A state in which opposing forces are balanced" }, { - "word": "radioactivity", + "word": "radioactive", "tiles": [ "rad", "ioa", "cti", - "vity" + "ve" ], "theme": "physics", - "clue": "The emission of ionizing radiation from nuclei" + "clue": "Emitting ionizing radiation from nuclei" + }, + { + "word": "magnetism", + "tiles": [ + "mag", + "ne", + "ti", + "sm" + ], + "theme": "physics", + "clue": "A physical phenomenon produced by the motion of electric charge" + }, + { + "word": "kaleidoscope", + "tiles": [ + "kal", + "eid", + "osc", + "ope" + ], + "theme": "arts", + "clue": "Optical instrument with reflective surfaces showing patterns" + }, + { + "word": "rollercoaster", + "tiles": [ + "rol", + "ler", + "coas", + "ter" + ], + "theme": "fun", + "clue": "Amusement park ride with steep slopes and curves" + }, + { + "word": "firecracker", + "tiles": [ + "fi", + "rec", + "rac", + "ker" + ], + "theme": "fun", + "clue": "A loud explosive firework" + }, + { + "word": "helicopter", + "tiles": [ + "he", + "li", + "cop", + "ter" + ], + "theme": "travel", + "clue": "Aircraft with horizontally rotating blades" + }, + { + "word": "motorcycle", + "tiles": [ + "mo", + "tor", + "cy", + "cle" + ], + "theme": "travel", + "clue": "Two-wheeled vehicle powered by an engine" + }, + { + "word": "candlestick", + "tiles": [ + "can", + "dle", + "sti", + "ck" + ], + "theme": "craft", + "clue": "A holder with a socket or spike for a candle" + }, + { + "word": "peppermint", + "tiles": [ + "pep", + "per", + "mi", + "nt" + ], + "theme": "food", + "clue": "A pungent herb or sweet flavoring" + }, + { + "word": "cheesecake", + "tiles": [ + "chee", + "se", + "ca", + "ke" + ], + "theme": "food", + "clue": "A rich sweet dessert made with soft cheese" + }, + { + "word": "gingerbread", + "tiles": [ + "gin", + "ger", + "bre", + "ad" + ], + "theme": "food", + "clue": "A cake or cookie flavored with ginger and molasses" + }, + { + "word": "blueberries", + "tiles": [ + "blue", + "ber", + "ri", + "es" + ], + "theme": "food", + "clue": "Small sweet blue-colored edible berries" + }, + { + "word": "strawberries", + "tiles": [ + "straw", + "ber", + "ri", + "es" + ], + "theme": "food", + "clue": "Sweet juicy red fruit with seeds on surface" + }, + { + "word": "waterproofing", + "tiles": [ + "wa", + "ter", + "pro", + "ofing" + ], + "theme": "craft", + "clue": "Making an object impervious to water" + }, + { + "word": "troubleshooter", + "tiles": [ + "trou", + "ble", + "shoo", + "ter" + ], + "theme": "tech", + "clue": "Someone who identifies and solves problems" + }, + { + "word": "heartwarming", + "tiles": [ + "hea", + "rtw", + "arm", + "ing" + ], + "theme": "emotion", + "clue": "Evoking feelings of happiness and contentment" + }, + { + "word": "groundbreaking", + "tiles": [ + "gro", + "und", + "bre", + "aking" + ], + "theme": "endeavor", + "clue": "Innovative; applying new ideas" + }, + { + "word": "brainstorming", + "tiles": [ + "bra", + "inst", + "orm", + "ing" + ], + "theme": "mind", + "clue": "Spontaneous group discussion to produce ideas" + }, + { + "word": "hydroelectric", + "tiles": [ + "hyd", + "roe", + "lec", + "tric" + ], + "theme": "physics", + "clue": "Relating to generation of electricity using water flow" + }, + { + "word": "aerodynamics", + "tiles": [ + "aer", + "ody", + "nam", + "ics" + ], + "theme": "physics", + "clue": "Study of forces and motion of air around objects" + }, + { + "word": "superpower", + "tiles": [ + "su", + "per", + "po", + "wer" + ], + "theme": "society", + "clue": "An exceptionally powerful nation or ability" + }, + { + "word": "leadership", + "tiles": [ + "lead", + "er", + "sh", + "ip" + ], + "theme": "society", + "clue": "The action of leading a group or organization" + }, + { + "word": "brotherhood", + "tiles": [ + "bro", + "ther", + "ho", + "od" + ], + "theme": "society", + "clue": "An association or community of people" + }, + { + "word": "windsurfers", + "tiles": [ + "wind", + "sur", + "fe", + "rs" + ], + "theme": "sports", + "clue": "Person who engages in board sailing" + }, + { + "word": "paraglider", + "tiles": [ + "pa", + "rag", + "lid", + "er" + ], + "theme": "sports", + "clue": "Non-motorized, foot-launched glider aircraft" + }, + { + "word": "thermometer", + "tiles": [ + "ther", + "mo", + "me", + "ter" + ], + "theme": "science", + "clue": "Instrument for measuring temperature" + }, + { + "word": "barometer", + "tiles": [ + "ba", + "rom", + "et", + "er" + ], + "theme": "science", + "clue": "Instrument measuring atmospheric pressure" + }, + { + "word": "speedometer", + "tiles": [ + "spee", + "dom", + "et", + "er" + ], + "theme": "science", + "clue": "Instrument on a vehicle indicating speed" + }, + { + "word": "cartography", + "tiles": [ + "car", + "tog", + "ra", + "phy" + ], + "theme": "science", + "clue": "The science or practice of drawing maps" + }, + { + "word": "oceanfront", + "tiles": [ + "oce", + "anf", + "ro", + "nt" + ], + "theme": "nature", + "clue": "Land facing directly toward the ocean" + }, + { + "word": "rainforest", + "tiles": [ + "rain", + "fo", + "re", + "st" + ], + "theme": "nature", + "clue": "A dense forest rich in biodiversity" + }, + { + "word": "waterfalls", + "tiles": [ + "wa", + "ter", + "fa", + "lls" + ], + "theme": "nature", + "clue": "Cascade of water falling from a height" + }, + { + "word": "dragonflies", + "tiles": [ + "dra", + "gon", + "fli", + "es" + ], + "theme": "nature", + "clue": "Fast-flying insects with long bodies and two pairs of wings" + }, + { + "word": "sandwiches", + "tiles": [ + "sand", + "wi", + "ch", + "es" + ], + "theme": "food", + "clue": "Slices of bread with filling between them" + }, + { + "word": "shortbread", + "tiles": [ + "sho", + "rtb", + "re", + "ad" + ], + "theme": "food", + "clue": "A crisp rich crumbly biscuit" + }, + { + "word": "blacksmith", + "tiles": [ + "bla", + "cks", + "mi", + "th" + ], + "theme": "craft", + "clue": "A person who makes and repairs things in iron" + }, + { + "word": "silversmith", + "tiles": [ + "sil", + "ver", + "smi", + "th" + ], + "theme": "craft", + "clue": "A person who crafts objects out of silver" + }, + { + "word": "coppersmith", + "tiles": [ + "cop", + "per", + "smi", + "th" + ], + "theme": "craft", + "clue": "A person who makes artifacts from copper" + }, + { + "word": "locksmiths", + "tiles": [ + "loc", + "ksm", + "it", + "hs" + ], + "theme": "craft", + "clue": "People who make and repair locks" + }, + { + "word": "woodworking", + "tiles": [ + "wood", + "wor", + "ki", + "ng" + ], + "theme": "craft", + "clue": "The activity or skill of making items from wood" + }, + { + "word": "shipbuilder", + "tiles": [ + "ship", + "bui", + "ld", + "er" + ], + "theme": "craft", + "clue": "A person or business that designs and constructs ships" + }, + { + "word": "stonecutter", + "tiles": [ + "sto", + "ne", + "cut", + "ter" + ], + "theme": "craft", + "clue": "A person who cuts, carves, or dresses stone" + }, + { + "word": "glassblower", + "tiles": [ + "gla", + "ssb", + "low", + "er" + ], + "theme": "craft", + "clue": "A person who shapes molten glass by blowing air into it" + }, + { + "word": "watchmakers", + "tiles": [ + "wat", + "chm", + "ake", + "rs" + ], + "theme": "craft", + "clue": "Artisans who make and repair watches" + }, + { + "word": "matchmakers", + "tiles": [ + "mat", + "chm", + "ake", + "rs" + ], + "theme": "society", + "clue": "People who arrange marriages or partnerships" + }, + { + "word": "homemakers", + "tiles": [ + "hom", + "em", + "ake", + "rs" + ], + "theme": "society", + "clue": "People who manage a household" + }, + { + "word": "playmakers", + "tiles": [ + "pla", + "yma", + "ke", + "rs" + ], + "theme": "sports", + "clue": "Players who control the flow of the team offensive play" + }, + { + "word": "gatekeepers", + "tiles": [ + "gat", + "eke", + "ep", + "ers" + ], + "theme": "society", + "clue": "Attendants controlling access through an entrance" + }, + { + "word": "peacekeeper", + "tiles": [ + "pea", + "cek", + "eep", + "er" + ], + "theme": "society", + "clue": "A person maintaining peace, especially in conflict zones" + }, + { + "word": "bookkeeper", + "tiles": [ + "boo", + "kke", + "ep", + "er" + ], + "theme": "business", + "clue": "A person whose job is to keep financial records" + }, + { + "word": "shopkeeper", + "tiles": [ + "sho", + "pke", + "ep", + "er" + ], + "theme": "business", + "clue": "An owner or manager of a small shop" + }, + { + "word": "innkeepers", + "tiles": [ + "inn", + "kee", + "pe", + "rs" + ], + "theme": "business", + "clue": "People who run an inn" + }, + { + "word": "goalscorers", + "tiles": [ + "goa", + "lsc", + "ore", + "rs" + ], + "theme": "sports", + "clue": "Athletes who score goals in games" + }, + { + "word": "cheerleader", + "tiles": [ + "che", + "erl", + "ead", + "er" + ], + "theme": "sports", + "clue": "A member of a team that leads cheering" + }, + { + "word": "trendsetter", + "tiles": [ + "tre", + "nds", + "ett", + "er" + ], + "theme": "society", + "clue": "A person who leads the way in fashion or ideas" + }, + { + "word": "bellwethers", + "tiles": [ + "bel", + "lwe", + "the", + "rs" + ], + "theme": "society", + "clue": "Something that leads or indicates future trends" + }, + { + "word": "underwriter", + "tiles": [ + "und", + "erw", + "rit", + "er" + ], + "theme": "business", + "clue": "A company or person guaranteeing an undertaking" + }, + { + "word": "copywriters", + "tiles": [ + "cop", + "ywr", + "ite", + "rs" + ], + "theme": "business", + "clue": "A person who writes text for advertising" + }, + { + "word": "ghostwriter", + "tiles": [ + "gho", + "stw", + "rit", + "er" + ], + "theme": "words", + "clue": "A person hired to write literary or journalistic work" + }, + { + "word": "screenwriter", + "tiles": [ + "scr", + "een", + "wri", + "ter" + ], + "theme": "arts", + "clue": "A person who writes screenplays for films" + }, + { + "word": "playwrights", + "tiles": [ + "pla", + "ywr", + "igh", + "ts" + ], + "theme": "arts", + "clue": "People who write plays" + }, + { + "word": "songwriters", + "tiles": [ + "son", + "gwr", + "ite", + "rs" + ], + "theme": "arts", + "clue": "Musicians who write musical compositions and lyrics" + }, + { + "word": "headmasters", + "tiles": [ + "hea", + "dma", + "ste", + "rs" + ], + "theme": "education", + "clue": "Teachers in charge of a school" + }, + { + "word": "ringmasters", + "tiles": [ + "rin", + "gma", + "ste", + "rs" + ], + "theme": "circus", + "clue": "The master of ceremonies in a circus" + }, + { + "word": "grandmaster", + "tiles": [ + "gra", + "ndm", + "ast", + "er" + ], + "theme": "games", + "clue": "The highest title awarded to a chess player" + }, + { + "word": "quarterback", + "tiles": [ + "qua", + "rte", + "rba", + "ck" + ], + "theme": "sports", + "clue": "A player in American football directing play" + }, + { + "word": "sweatshirts", + "tiles": [ + "swe", + "atsh", + "ir", + "ts" + ], + "theme": "clothes", + "clue": "Loose warm casual cotton pullover shirts" + }, + { + "word": "turtlenecks", + "tiles": [ + "tur", + "tle", + "nec", + "ks" + ], + "theme": "clothes", + "clue": "High, close-fitting turned-over collars" + }, + { + "word": "windbreaker", + "tiles": [ + "win", + "dbr", + "eak", + "er" + ], + "theme": "clothes", + "clue": "A wind-resistant lightweight jacket" + }, + { + "word": "rainjackets", + "tiles": [ + "rai", + "nja", + "cke", + "ts" + ], + "theme": "clothes", + "clue": "Water-resistant outer coats" + }, + { + "word": "leatherback", + "tiles": [ + "lea", + "the", + "rba", + "ck" + ], + "theme": "nature", + "clue": "The largest living sea turtle with leathery carapace" + }, + { + "word": "silverback", + "tiles": [ + "sil", + "ver", + "ba", + "ck" + ], + "theme": "nature", + "clue": "An older mature male mountain gorilla" + }, + { + "word": "paddleboard", + "tiles": [ + "pad", + "dle", + "bo", + "ard" + ], + "theme": "sports", + "clue": "A long board propelled with a paddle" + }, + { + "word": "springboard", + "tiles": [ + "spr", + "ing", + "bo", + "ard" + ], + "theme": "sports", + "clue": "A flexible board used in diving or gymnastics" + }, + { + "word": "checkerboard", + "tiles": [ + "che", + "cke", + "rbo", + "ard" + ], + "theme": "games", + "clue": "A game board divided into sixty-four squares" + }, + { + "word": "blackboards", + "tiles": [ + "bla", + "ckb", + "oar", + "ds" + ], + "theme": "education", + "clue": "Dark reusable writing surfaces for chalk" + }, + { + "word": "whiteboards", + "tiles": [ + "whi", + "teb", + "oar", + "ds" + ], + "theme": "education", + "clue": "Glossy white boards for nonpermanent markers" + }, + { + "word": "noticeboards", + "tiles": [ + "not", + "ice", + "boa", + "rds" + ], + "theme": "society", + "clue": "Boards for displaying notices or advertisements" + }, + { + "word": "smorgasbord", + "tiles": [ + "smo", + "rga", + "sbo", + "rd" + ], + "theme": "food", + "clue": "A buffet offering a variety of hot and cold dishes" + }, + { + "word": "alligator", + "tiles": [ + "al", + "li", + "ga", + "tor" + ], + "theme": "animals", + "clue": "Large reptile of southern swamps" + }, + { + "word": "armadillo", + "tiles": [ + "ar", + "ma", + "dil", + "lo" + ], + "theme": "animals", + "clue": "Burrowing mammal with a bony armored shell" + }, + { + "word": "crocodile", + "tiles": [ + "cro", + "co", + "di", + "le" + ], + "theme": "animals", + "clue": "Large aquatic reptile with powerful jaws" + }, + { + "word": "porcupine", + "tiles": [ + "por", + "cu", + "pi", + "ne" + ], + "theme": "animals", + "clue": "Rodent covered in sharp protective quills" + }, + { + "word": "salamander", + "tiles": [ + "sa", + "la", + "man", + "der" + ], + "theme": "animals", + "clue": "Lizard-like amphibian with moist skin" + }, + { + "word": "orangutan", + "tiles": [ + "or", + "an", + "gu", + "tan" + ], + "theme": "animals", + "clue": "Red-haired great ape of Borneo and Sumatra" + }, + { + "word": "kangaroos", + "tiles": [ + "kan", + "ga", + "ro", + "os" + ], + "theme": "animals", + "clue": "Hopping marsupials of Australia" + }, + { + "word": "centipede", + "tiles": [ + "cen", + "ti", + "pe", + "de" + ], + "theme": "animals", + "clue": "Arthropod with a great many legs" + }, + { + "word": "tarantula", + "tiles": [ + "ta", + "ran", + "tu", + "la" + ], + "theme": "animals", + "clue": "Large hairy spider" + }, + { + "word": "jellyfish", + "tiles": [ + "jel", + "ly", + "fi", + "sh" + ], + "theme": "animals", + "clue": "Free-swimming sea creature with stinging tentacles" + }, + { + "word": "seahorses", + "tiles": [ + "sea", + "ho", + "rs", + "es" + ], + "theme": "animals", + "clue": "Small upright fish with horse-like heads" + }, + { + "word": "nightingale", + "tiles": [ + "nigh", + "tin", + "ga", + "le" + ], + "theme": "animals", + "clue": "Songbird famous for singing at night" + }, + { + "word": "rhinoceros", + "tiles": [ + "rhi", + "no", + "ce", + "ros" + ], + "theme": "animals", + "clue": "Large horned herbivore of Africa and Asia" + }, + { + "word": "hippopotamus", + "tiles": [ + "hip", + "po", + "pota", + "mus" + ], + "theme": "animals", + "clue": "Massive semi-aquatic African mammal" + }, + { + "word": "chimpanzee", + "tiles": [ + "chim", + "pa", + "nz", + "ee" + ], + "theme": "animals", + "clue": "Intelligent African great ape" + }, + { + "word": "wolverine", + "tiles": [ + "wol", + "ve", + "ri", + "ne" + ], + "theme": "animals", + "clue": "Fierce carnivore of northern forests" + }, + { + "word": "mockingbird", + "tiles": [ + "mock", + "ing", + "bi", + "rd" + ], + "theme": "animals", + "clue": "Bird that imitates the songs of others" + }, + { + "word": "roadrunner", + "tiles": [ + "ro", + "ad", + "run", + "ner" + ], + "theme": "animals", + "clue": "Fast-running desert bird" + }, + { + "word": "platypus", + "tiles": [ + "pl", + "at", + "yp", + "us" + ], + "theme": "animals", + "clue": "Egg-laying mammal with a duck-like bill" + }, + { + "word": "scorpions", + "tiles": [ + "sc", + "or", + "pi", + "ons" + ], + "theme": "animals", + "clue": "Arachnids with a venomous curved tail" + }, + { + "word": "octopuses", + "tiles": [ + "oc", + "to", + "pu", + "ses" + ], + "theme": "animals", + "clue": "Eight-armed sea creatures" + }, + { + "word": "barracuda", + "tiles": [ + "bar", + "ra", + "cu", + "da" + ], + "theme": "animals", + "clue": "Predatory fish with fang-like teeth" + }, + { + "word": "cockroaches", + "tiles": [ + "cock", + "ro", + "ach", + "es" + ], + "theme": "animals", + "clue": "Hardy scuttling household insects" + }, + { + "word": "cappuccino", + "tiles": [ + "cap", + "pu", + "cci", + "no" + ], + "theme": "food", + "clue": "Espresso topped with frothy milk" + }, + { + "word": "spaghetti", + "tiles": [ + "sp", + "ag", + "het", + "ti" + ], + "theme": "food", + "clue": "Long thin strands of pasta" + }, + { + "word": "macaroni", + "tiles": [ + "ma", + "ca", + "ro", + "ni" + ], + "theme": "food", + "clue": "Small tube-shaped pasta" + }, + { + "word": "broccoli", + "tiles": [ + "br", + "oc", + "co", + "li" + ], + "theme": "food", + "clue": "Green vegetable with tree-like florets" + }, + { + "word": "pineapple", + "tiles": [ + "pi", + "ne", + "ap", + "ple" + ], + "theme": "food", + "clue": "Tropical fruit with spiky skin" + }, + { + "word": "watermelon", + "tiles": [ + "wa", + "ter", + "mel", + "on" + ], + "theme": "food", + "clue": "Large juicy summer fruit with a green rind" + }, + { + "word": "pomegranate", + "tiles": [ + "pom", + "egr", + "an", + "ate" + ], + "theme": "food", + "clue": "Fruit packed with juicy red seeds" + }, + { + "word": "chocolate", + "tiles": [ + "cho", + "co", + "la", + "te" + ], + "theme": "food", + "clue": "Sweet treat made from roasted cacao" + }, + { + "word": "cinnamon", + "tiles": [ + "ci", + "nn", + "am", + "on" + ], + "theme": "food", + "clue": "Warm spice made from tree bark" + }, + { + "word": "blackberry", + "tiles": [ + "bla", + "ckb", + "er", + "ry" + ], + "theme": "food", + "clue": "Dark bramble fruit" + }, + { + "word": "raspberry", + "tiles": [ + "ras", + "pb", + "er", + "ry" + ], + "theme": "food", + "clue": "Soft red berry with a hollow core" + }, + { + "word": "tangerine", + "tiles": [ + "tan", + "ge", + "ri", + "ne" + ], + "theme": "food", + "clue": "Small, easy-to-peel citrus fruit" + }, + { + "word": "mozzarella", + "tiles": [ + "moz", + "za", + "rel", + "la" + ], + "theme": "food", + "clue": "Soft white Italian cheese" + }, + { + "word": "guacamole", + "tiles": [ + "gua", + "ca", + "mo", + "le" + ], + "theme": "food", + "clue": "Avocado-based Mexican dip" + }, + { + "word": "margarine", + "tiles": [ + "mar", + "ga", + "ri", + "ne" + ], + "theme": "food", + "clue": "Butter substitute made from vegetable oils" + }, + { + "word": "casserole", + "tiles": [ + "cas", + "se", + "ro", + "le" + ], + "theme": "food", + "clue": "Dish slow-cooked in the oven" + }, + { + "word": "croissant", + "tiles": [ + "cr", + "ois", + "sa", + "nt" + ], + "theme": "food", + "clue": "Flaky crescent-shaped French pastry" + }, + { + "word": "hamburger", + "tiles": [ + "ham", + "bu", + "rg", + "er" + ], + "theme": "food", + "clue": "Ground beef patty served in a bun" + }, + { + "word": "pancakes", + "tiles": [ + "pa", + "nc", + "ak", + "es" + ], + "theme": "food", + "clue": "Flat breakfast cakes cooked on a griddle" + }, + { + "word": "marmalade", + "tiles": [ + "mar", + "ma", + "la", + "de" + ], + "theme": "food", + "clue": "Citrus fruit preserve" + }, + { + "word": "butterscotch", + "tiles": [ + "but", + "ters", + "cot", + "ch" + ], + "theme": "food", + "clue": "Candy made from brown sugar and butter" + }, + { + "word": "lemonade", + "tiles": [ + "le", + "mo", + "na", + "de" + ], + "theme": "food", + "clue": "Sweetened drink made with lemon juice" + }, + { + "word": "peppercorn", + "tiles": [ + "pep", + "per", + "co", + "rn" + ], + "theme": "food", + "clue": "Dried berry ground into black pepper" + }, + { + "word": "artichoke", + "tiles": [ + "ar", + "ti", + "cho", + "ke" + ], + "theme": "food", + "clue": "Edible thistle flower bud" + }, + { + "word": "asparagus", + "tiles": [ + "as", + "pa", + "ra", + "gus" + ], + "theme": "food", + "clue": "Spring vegetable with tender green spears" + }, + { + "word": "cauliflower", + "tiles": [ + "cau", + "li", + "flo", + "wer" + ], + "theme": "food", + "clue": "White-headed cabbage-family vegetable" + }, + { + "word": "vegetables", + "tiles": [ + "ve", + "ge", + "ta", + "bles" + ], + "theme": "food", + "clue": "Edible plants or plant parts" + }, + { + "word": "dumplings", + "tiles": [ + "dum", + "pl", + "in", + "gs" + ], + "theme": "food", + "clue": "Small balls of dough, often filled" + }, + { + "word": "meatballs", + "tiles": [ + "me", + "at", + "ba", + "lls" + ], + "theme": "food", + "clue": "Rolled balls of seasoned ground meat" + }, + { + "word": "honeycomb", + "tiles": [ + "ho", + "ney", + "co", + "mb" + ], + "theme": "food", + "clue": "Wax structure where bees store honey" + }, + { + "word": "cheeseburger", + "tiles": [ + "chee", + "se", + "bur", + "ger" + ], + "theme": "food", + "clue": "Hamburger topped with melted cheese" + }, + { + "word": "sauerkraut", + "tiles": [ + "sau", + "er", + "kra", + "ut" + ], + "theme": "food", + "clue": "Finely cut fermented cabbage" + }, + { + "word": "breakfast", + "tiles": [ + "bre", + "ak", + "fa", + "st" + ], + "theme": "food", + "clue": "The first meal of the day" + }, + { + "word": "basketball", + "tiles": [ + "bas", + "ket", + "ba", + "ll" + ], + "theme": "sports", + "clue": "Game of shooting a ball through a hoop" + }, + { + "word": "volleyball", + "tiles": [ + "vol", + "ley", + "ba", + "ll" + ], + "theme": "sports", + "clue": "Game of hitting a ball over a high net" + }, + { + "word": "badminton", + "tiles": [ + "bad", + "mi", + "nt", + "on" + ], + "theme": "sports", + "clue": "Racket sport played with a shuttlecock" + }, + { + "word": "gymnastics", + "tiles": [ + "gym", + "nas", + "ti", + "cs" + ], + "theme": "sports", + "clue": "Sport of balance, strength, and flips" + }, + { + "word": "skateboard", + "tiles": [ + "ska", + "te", + "bo", + "ard" + ], + "theme": "sports", + "clue": "Wheeled board ridden for tricks" + }, + { + "word": "snowboarding", + "tiles": [ + "snow", + "boar", + "di", + "ng" + ], + "theme": "sports", + "clue": "Sliding down snowy slopes on one board" + }, + { + "word": "marathon", + "tiles": [ + "ma", + "ra", + "th", + "on" + ], + "theme": "sports", + "clue": "Long-distance running race" + }, + { + "word": "wrestling", + "tiles": [ + "wre", + "st", + "li", + "ng" + ], + "theme": "sports", + "clue": "Grappling sport of pins and holds" + }, + { + "word": "lacrosse", + "tiles": [ + "la", + "cr", + "os", + "se" + ], + "theme": "sports", + "clue": "Field sport played with netted sticks" + }, + { + "word": "tournament", + "tiles": [ + "tour", + "na", + "me", + "nt" + ], + "theme": "sports", + "clue": "A series of contests to find a champion" + }, + { + "word": "crossword", + "tiles": [ + "cro", + "ss", + "wo", + "rd" + ], + "theme": "games", + "clue": "Grid puzzle solved from clues" + }, + { + "word": "backgammon", + "tiles": [ + "ba", + "ckg", + "am", + "mon" + ], + "theme": "games", + "clue": "Ancient board game of dice and checkers" + }, + { + "word": "dominoes", + "tiles": [ + "do", + "mi", + "no", + "es" + ], + "theme": "games", + "clue": "Game of matching spotted tiles" + }, + { + "word": "trampoline", + "tiles": [ + "tram", + "po", + "li", + "ne" + ], + "theme": "sports", + "clue": "Springy mat for bouncing" + }, + { + "word": "goalkeeper", + "tiles": [ + "goal", + "ke", + "ep", + "er" + ], + "theme": "sports", + "clue": "Player who guards the net" + }, + { + "word": "swimming", + "tiles": [ + "sw", + "im", + "mi", + "ng" + ], + "theme": "sports", + "clue": "Moving through water using limbs" + }, + { + "word": "surfboard", + "tiles": [ + "su", + "rf", + "bo", + "ard" + ], + "theme": "sports", + "clue": "Board used for riding waves" + }, + { + "word": "racquetball", + "tiles": [ + "rac", + "quet", + "ba", + "ll" + ], + "theme": "sports", + "clue": "Fast indoor racket sport" + }, + { + "word": "scoreboard", + "tiles": [ + "sco", + "re", + "bo", + "ard" + ], + "theme": "sports", + "clue": "Large display showing a game's points" + }, + { + "word": "touchdown", + "tiles": [ + "to", + "uch", + "do", + "wn" + ], + "theme": "sports", + "clue": "Six-point score in American football" + }, + { + "word": "cartwheel", + "tiles": [ + "ca", + "rt", + "whe", + "el" + ], + "theme": "sports", + "clue": "Sideways handspring with arms and legs extended" + }, + { + "word": "hopscotch", + "tiles": [ + "hop", + "sc", + "ot", + "ch" + ], + "theme": "games", + "clue": "Playground hopping game drawn in chalk" + }, + { + "word": "checkmate", + "tiles": [ + "che", + "ck", + "ma", + "te" + ], + "theme": "games", + "clue": "Winning position in chess" + }, + { + "word": "astronaut", + "tiles": [ + "as", + "tro", + "na", + "ut" + ], + "theme": "jobs", + "clue": "Person trained to travel into space" + }, + { + "word": "carpenter", + "tiles": [ + "ca", + "rp", + "en", + "ter" + ], + "theme": "jobs", + "clue": "Person who builds things from wood" + }, + { + "word": "electrician", + "tiles": [ + "elec", + "tri", + "ci", + "an" + ], + "theme": "jobs", + "clue": "Person who installs and repairs wiring" + }, + { + "word": "firefighter", + "tiles": [ + "fire", + "fig", + "ht", + "er" + ], + "theme": "jobs", + "clue": "Person who puts out fires" + }, + { + "word": "journalist", + "tiles": [ + "jour", + "na", + "li", + "st" + ], + "theme": "jobs", + "clue": "Person who writes news stories" + }, + { + "word": "librarian", + "tiles": [ + "li", + "bra", + "ri", + "an" + ], + "theme": "jobs", + "clue": "Person who manages a collection of books" + }, + { + "word": "magician", + "tiles": [ + "ma", + "gi", + "ci", + "an" + ], + "theme": "jobs", + "clue": "Performer of illusions and tricks" + }, + { + "word": "mechanic", + "tiles": [ + "me", + "ch", + "an", + "ic" + ], + "theme": "jobs", + "clue": "Person who repairs engines" + }, + { + "word": "musician", + "tiles": [ + "mu", + "si", + "ci", + "an" + ], + "theme": "jobs", + "clue": "Person who plays music" + }, + { + "word": "pharmacist", + "tiles": [ + "phar", + "ma", + "ci", + "st" + ], + "theme": "jobs", + "clue": "Person who prepares medicines" + }, + { + "word": "photographer", + "tiles": [ + "pho", + "to", + "gra", + "pher" + ], + "theme": "jobs", + "clue": "Person who takes pictures" + }, + { + "word": "professor", + "tiles": [ + "pr", + "of", + "ess", + "or" + ], + "theme": "jobs", + "clue": "University teacher of the highest rank" + }, + { + "word": "scientist", + "tiles": [ + "sci", + "en", + "ti", + "st" + ], + "theme": "jobs", + "clue": "Person who studies the natural world" + }, + { + "word": "detective", + "tiles": [ + "de", + "tec", + "ti", + "ve" + ], + "theme": "jobs", + "clue": "Person who investigates crimes" + }, + { + "word": "architect", + "tiles": [ + "ar", + "chi", + "te", + "ct" + ], + "theme": "jobs", + "clue": "Person who designs buildings" + }, + { + "word": "veterinarian", + "tiles": [ + "vet", + "eri", + "nar", + "ian" + ], + "theme": "jobs", + "clue": "Doctor for animals" + }, + { + "word": "lifeguard", + "tiles": [ + "li", + "fe", + "gu", + "ard" + ], + "theme": "jobs", + "clue": "Person who watches over swimmers" + }, + { + "word": "gardener", + "tiles": [ + "ga", + "rd", + "en", + "er" + ], + "theme": "jobs", + "clue": "Person who tends plants" + }, + { + "word": "lumberjack", + "tiles": [ + "lum", + "ber", + "ja", + "ck" + ], + "theme": "jobs", + "clue": "Person who fells trees" + }, + { + "word": "accountant", + "tiles": [ + "ac", + "cou", + "nt", + "ant" + ], + "theme": "jobs", + "clue": "Person who keeps financial accounts" + }, + { + "word": "translator", + "tiles": [ + "tra", + "ns", + "la", + "tor" + ], + "theme": "jobs", + "clue": "Person who converts text between languages" + }, + { + "word": "programmer", + "tiles": [ + "pro", + "gr", + "am", + "mer" + ], + "theme": "jobs", + "clue": "Person who writes computer code" + }, + { + "word": "babysitter", + "tiles": [ + "ba", + "by", + "sit", + "ter" + ], + "theme": "jobs", + "clue": "Person who looks after children" + }, + { + "word": "umbrella", + "tiles": [ + "um", + "br", + "el", + "la" + ], + "theme": "home", + "clue": "Folding canopy that keeps off rain" + }, + { + "word": "telephone", + "tiles": [ + "te", + "le", + "pho", + "ne" + ], + "theme": "home", + "clue": "Device for talking over a distance" + }, + { + "word": "television", + "tiles": [ + "te", + "le", + "vi", + "sion" + ], + "theme": "home", + "clue": "Screen for watching broadcast shows" + }, + { + "word": "refrigerator", + "tiles": [ + "re", + "fri", + "ger", + "ator" + ], + "theme": "home", + "clue": "Appliance that keeps food cold" + }, + { + "word": "dishwasher", + "tiles": [ + "dish", + "wa", + "sh", + "er" + ], + "theme": "home", + "clue": "Appliance that cleans plates" + }, + { + "word": "microwave", + "tiles": [ + "mi", + "cro", + "wa", + "ve" + ], + "theme": "home", + "clue": "Oven that heats food quickly" + }, + { + "word": "calculator", + "tiles": [ + "cal", + "cu", + "la", + "tor" + ], + "theme": "home", + "clue": "Device for doing arithmetic" + }, + { + "word": "binoculars", + "tiles": [ + "bi", + "no", + "cu", + "lars" + ], + "theme": "home", + "clue": "Two-lensed device for seeing far away" + }, + { + "word": "thermostat", + "tiles": [ + "ther", + "mo", + "st", + "at" + ], + "theme": "home", + "clue": "Device that regulates temperature" + }, + { + "word": "wheelbarrow", + "tiles": [ + "whe", + "el", + "bar", + "row" + ], + "theme": "home", + "clue": "One-wheeled cart for hauling loads" + }, + { + "word": "lawnmower", + "tiles": [ + "la", + "wn", + "mow", + "er" + ], + "theme": "home", + "clue": "Machine for cutting grass" + }, + { + "word": "flashlight", + "tiles": [ + "fla", + "sh", + "lig", + "ht" + ], + "theme": "home", + "clue": "Portable battery-powered light" + }, + { + "word": "toothbrush", + "tiles": [ + "too", + "th", + "br", + "ush" + ], + "theme": "home", + "clue": "Small brush for cleaning teeth" + }, + { + "word": "pillowcase", + "tiles": [ + "pil", + "low", + "ca", + "se" + ], + "theme": "home", + "clue": "Removable cover for a pillow" + }, + { + "word": "wardrobe", + "tiles": [ + "wa", + "rd", + "ro", + "be" + ], + "theme": "home", + "clue": "Tall cabinet for hanging clothes" + }, + { + "word": "bookshelf", + "tiles": [ + "bo", + "ok", + "sh", + "elf" + ], + "theme": "home", + "clue": "Shelf for holding books" + }, + { + "word": "chandelier", + "tiles": [ + "chan", + "de", + "li", + "er" + ], + "theme": "home", + "clue": "Decorative hanging light fixture" + }, + { + "word": "typewriter", + "tiles": [ + "ty", + "pe", + "wri", + "ter" + ], + "theme": "home", + "clue": "Mechanical machine for typing" + }, + { + "word": "paperclip", + "tiles": [ + "pa", + "per", + "cl", + "ip" + ], + "theme": "home", + "clue": "Bent wire for holding sheets together" + }, + { + "word": "scissors", + "tiles": [ + "sc", + "is", + "so", + "rs" + ], + "theme": "home", + "clue": "Two-bladed cutting tool" + }, + { + "word": "envelope", + "tiles": [ + "en", + "ve", + "lo", + "pe" + ], + "theme": "home", + "clue": "Paper sleeve for mailing letters" + }, + { + "word": "suitcase", + "tiles": [ + "su", + "it", + "ca", + "se" + ], + "theme": "home", + "clue": "Case for carrying clothes when traveling" + }, + { + "word": "candlelight", + "tiles": [ + "can", + "dle", + "li", + "ght" + ], + "theme": "home", + "clue": "Soft glow from a burning wick" + }, + { + "word": "fireplace", + "tiles": [ + "fi", + "re", + "pla", + "ce" + ], + "theme": "home", + "clue": "Hearth for an indoor fire" + }, + { + "word": "staircase", + "tiles": [ + "sta", + "ir", + "ca", + "se" + ], + "theme": "home", + "clue": "Set of steps between floors" + }, + { + "word": "doorbell", + "tiles": [ + "do", + "or", + "be", + "ll" + ], + "theme": "home", + "clue": "Button that chimes when visitors arrive" + }, + { + "word": "windowsill", + "tiles": [ + "win", + "dow", + "si", + "ll" + ], + "theme": "home", + "clue": "Ledge at the bottom of a window" + }, + { + "word": "furniture", + "tiles": [ + "fur", + "ni", + "tu", + "re" + ], + "theme": "home", + "clue": "Chairs, tables, beds, and the like" + }, + { + "word": "cupboard", + "tiles": [ + "cu", + "pb", + "oa", + "rd" + ], + "theme": "home", + "clue": "Cabinet with shelves and doors" + }, + { + "word": "headphones", + "tiles": [ + "hea", + "dp", + "ho", + "nes" + ], + "theme": "tech", + "clue": "Speakers worn over the ears" + }, + { + "word": "keyboard", + "tiles": [ + "ke", + "yb", + "oa", + "rd" + ], + "theme": "tech", + "clue": "Panel of keys for typing" + }, + { + "word": "computer", + "tiles": [ + "co", + "mp", + "ut", + "er" + ], + "theme": "tech", + "clue": "Electronic machine that processes data" + }, + { + "word": "smartphone", + "tiles": [ + "sma", + "rt", + "pho", + "ne" + ], + "theme": "tech", + "clue": "Pocket-sized phone with apps" + }, + { + "word": "spreadsheet", + "tiles": [ + "spr", + "ead", + "she", + "et" + ], + "theme": "tech", + "clue": "Grid of cells for calculations" + }, + { + "word": "password", + "tiles": [ + "pa", + "ss", + "wo", + "rd" + ], + "theme": "tech", + "clue": "Secret word for logging in" + }, + { + "word": "algorithm", + "tiles": [ + "al", + "go", + "ri", + "thm" + ], + "theme": "tech", + "clue": "Step-by-step procedure for solving a problem" + }, + { + "word": "satellite", + "tiles": [ + "sa", + "tel", + "li", + "te" + ], + "theme": "tech", + "clue": "Object orbiting a planet" + }, + { + "word": "batteries", + "tiles": [ + "bat", + "te", + "ri", + "es" + ], + "theme": "tech", + "clue": "Cells that store electrical energy" + }, + { + "word": "robotics", + "tiles": [ + "ro", + "bo", + "ti", + "cs" + ], + "theme": "tech", + "clue": "Engineering of automated machines" + }, + { + "word": "database", + "tiles": [ + "da", + "ta", + "ba", + "se" + ], + "theme": "tech", + "clue": "Organized store of information" + }, + { + "word": "software", + "tiles": [ + "so", + "ft", + "wa", + "re" + ], + "theme": "tech", + "clue": "Programs that run on a computer" + }, + { + "word": "hardware", + "tiles": [ + "ha", + "rd", + "wa", + "re" + ], + "theme": "tech", + "clue": "Physical parts of a computer" + }, + { + "word": "internet", + "tiles": [ + "in", + "te", + "rn", + "et" + ], + "theme": "tech", + "clue": "Global network of computers" + }, + { + "word": "download", + "tiles": [ + "do", + "wn", + "lo", + "ad" + ], + "theme": "tech", + "clue": "Copy a file from the web" + }, + { + "word": "wireless", + "tiles": [ + "wi", + "re", + "le", + "ss" + ], + "theme": "tech", + "clue": "Without cables" + }, + { + "word": "microphone", + "tiles": [ + "mi", + "cro", + "pho", + "ne" + ], + "theme": "tech", + "clue": "Device that picks up sound" + }, + { + "word": "avalanche", + "tiles": [ + "av", + "al", + "an", + "che" + ], + "theme": "nature", + "clue": "Mass of snow rushing down a mountain" + }, + { + "word": "hurricane", + "tiles": [ + "hur", + "ri", + "ca", + "ne" + ], + "theme": "nature", + "clue": "Powerful tropical storm" + }, + { + "word": "earthquake", + "tiles": [ + "ear", + "th", + "qua", + "ke" + ], + "theme": "nature", + "clue": "Sudden shaking of the ground" + }, + { + "word": "tornadoes", + "tiles": [ + "tor", + "na", + "do", + "es" + ], + "theme": "nature", + "clue": "Violently rotating columns of air" + }, + { + "word": "landscape", + "tiles": [ + "la", + "nd", + "sc", + "ape" + ], + "theme": "nature", + "clue": "All the visible features of an area of land" + }, + { + "word": "mountains", + "tiles": [ + "mou", + "nt", + "ai", + "ns" + ], + "theme": "nature", + "clue": "Very high natural elevations of land" + }, + { + "word": "peninsula", + "tiles": [ + "pe", + "nin", + "su", + "la" + ], + "theme": "nature", + "clue": "Land almost surrounded by water" + }, + { + "word": "archipelago", + "tiles": [ + "ar", + "chi", + "pel", + "ago" + ], + "theme": "nature", + "clue": "Group of islands" + }, + { + "word": "riverbank", + "tiles": [ + "ri", + "ver", + "ba", + "nk" + ], + "theme": "nature", + "clue": "Land along the edge of a river" + }, + { + "word": "sandstone", + "tiles": [ + "sa", + "nd", + "sto", + "ne" + ], + "theme": "nature", + "clue": "Rock formed from compressed sand" + }, + { + "word": "limestone", + "tiles": [ + "li", + "me", + "sto", + "ne" + ], + "theme": "nature", + "clue": "Rock formed from ancient shells" + }, + { + "word": "grassland", + "tiles": [ + "gra", + "ss", + "la", + "nd" + ], + "theme": "nature", + "clue": "Large open area covered in grass" + }, + { + "word": "moonlight", + "tiles": [ + "mo", + "on", + "li", + "ght" + ], + "theme": "nature", + "clue": "Light reflected from the moon" + }, + { + "word": "sunshine", + "tiles": [ + "su", + "ns", + "hi", + "ne" + ], + "theme": "nature", + "clue": "Direct light from the sun" + }, + { + "word": "starlight", + "tiles": [ + "st", + "ar", + "li", + "ght" + ], + "theme": "nature", + "clue": "Light from distant stars" + }, + { + "word": "rainbows", + "tiles": [ + "ra", + "in", + "bo", + "ws" + ], + "theme": "nature", + "clue": "Arcs of color after rain" + }, + { + "word": "snowflake", + "tiles": [ + "sn", + "ow", + "fla", + "ke" + ], + "theme": "nature", + "clue": "Single ice crystal falling from the sky" + }, + { + "word": "lightning", + "tiles": [ + "li", + "ght", + "ni", + "ng" + ], + "theme": "nature", + "clue": "Flash of electricity in a storm" + }, + { + "word": "blizzard", + "tiles": [ + "bl", + "iz", + "za", + "rd" + ], + "theme": "nature", + "clue": "Severe snowstorm with strong winds" + }, + { + "word": "continent", + "tiles": [ + "con", + "ti", + "ne", + "nt" + ], + "theme": "nature", + "clue": "One of Earth's large landmasses" + }, + { + "word": "countryside", + "tiles": [ + "coun", + "try", + "si", + "de" + ], + "theme": "nature", + "clue": "Rural land outside towns" + }, + { + "word": "coastline", + "tiles": [ + "coa", + "st", + "li", + "ne" + ], + "theme": "nature", + "clue": "Where land meets the sea" + }, + { + "word": "wildflower", + "tiles": [ + "wi", + "ld", + "flow", + "er" + ], + "theme": "nature", + "clue": "Flower growing without cultivation" + }, + { + "word": "butterfly", + "tiles": [ + "bu", + "tt", + "er", + "fly" + ], + "theme": "nature", + "clue": "Insect with large colorful wings" + }, + { + "word": "mushrooms", + "tiles": [ + "mu", + "sh", + "ro", + "oms" + ], + "theme": "nature", + "clue": "Fungi with caps and stems" + }, + { + "word": "seashells", + "tiles": [ + "sea", + "sh", + "el", + "ls" + ], + "theme": "nature", + "clue": "Shells found on the beach" + }, + { + "word": "driftwood", + "tiles": [ + "dri", + "ft", + "wo", + "od" + ], + "theme": "nature", + "clue": "Wood washed ashore by water" + }, + { + "word": "happiness", + "tiles": [ + "hap", + "pi", + "ne", + "ss" + ], + "theme": "emotion", + "clue": "State of being glad" + }, + { + "word": "excitement", + "tiles": [ + "ex", + "ci", + "te", + "ment" + ], + "theme": "emotion", + "clue": "Feeling of great eagerness" + }, + { + "word": "confidence", + "tiles": [ + "con", + "fi", + "den", + "ce" + ], + "theme": "emotion", + "clue": "Belief in one's own abilities" + }, + { + "word": "gratitude", + "tiles": [ + "gra", + "ti", + "tu", + "de" + ], + "theme": "emotion", + "clue": "Feeling of thankfulness" + }, + { + "word": "kindness", + "tiles": [ + "ki", + "nd", + "ne", + "ss" + ], + "theme": "emotion", + "clue": "Quality of being friendly and caring" + }, + { + "word": "curiosity", + "tiles": [ + "cu", + "ri", + "osi", + "ty" + ], + "theme": "emotion", + "clue": "Strong desire to know or learn" + }, + { + "word": "enthusiasm", + "tiles": [ + "en", + "thu", + "si", + "asm" + ], + "theme": "emotion", + "clue": "Intense enjoyment and interest" + }, + { + "word": "patience", + "tiles": [ + "pa", + "ti", + "en", + "ce" + ], + "theme": "emotion", + "clue": "Ability to wait calmly" + }, + { + "word": "loneliness", + "tiles": [ + "lo", + "ne", + "li", + "ness" + ], + "theme": "emotion", + "clue": "Sadness from being alone" + }, + { + "word": "nostalgia", + "tiles": [ + "no", + "st", + "al", + "gia" + ], + "theme": "emotion", + "clue": "Wistful longing for the past" + }, + { + "word": "optimistic", + "tiles": [ + "op", + "ti", + "mis", + "tic" + ], + "theme": "emotion", + "clue": "Hopeful about the future" + }, + { + "word": "wonderful", + "tiles": [ + "won", + "de", + "rf", + "ul" + ], + "theme": "emotion", + "clue": "Inspiring delight" + }, + { + "word": "beautiful", + "tiles": [ + "be", + "au", + "ti", + "ful" + ], + "theme": "emotion", + "clue": "Pleasing to the senses" + }, + { + "word": "delightful", + "tiles": [ + "de", + "li", + "ght", + "ful" + ], + "theme": "emotion", + "clue": "Causing great pleasure" + }, + { + "word": "fantastic", + "tiles": [ + "fan", + "ta", + "st", + "ic" + ], + "theme": "emotion", + "clue": "Extraordinarily good" + }, + { + "word": "generous", + "tiles": [ + "ge", + "ne", + "ro", + "us" + ], + "theme": "emotion", + "clue": "Freely giving" + }, + { + "word": "cheerful", + "tiles": [ + "ch", + "ee", + "rf", + "ul" + ], + "theme": "emotion", + "clue": "Noticeably happy" + }, + { + "word": "peaceful", + "tiles": [ + "pe", + "ac", + "ef", + "ul" + ], + "theme": "emotion", + "clue": "Free from disturbance" + }, + { + "word": "mischievous", + "tiles": [ + "mis", + "chie", + "vo", + "us" + ], + "theme": "emotion", + "clue": "Playfully causing trouble" + }, + { + "word": "hilarious", + "tiles": [ + "hi", + "la", + "ri", + "ous" + ], + "theme": "emotion", + "clue": "Extremely funny" + }, + { + "word": "ambitious", + "tiles": [ + "am", + "bi", + "ti", + "ous" + ], + "theme": "emotion", + "clue": "Strongly driven to succeed" + }, + { + "word": "fearless", + "tiles": [ + "fe", + "ar", + "le", + "ss" + ], + "theme": "emotion", + "clue": "Lacking fear; bold" + }, + { + "word": "friendliness", + "tiles": [ + "fri", + "end", + "li", + "ness" + ], + "theme": "emotion", + "clue": "Quality of being warm toward others" + }, + { + "word": "forgiveness", + "tiles": [ + "for", + "gi", + "ve", + "ness" + ], + "theme": "emotion", + "clue": "Act of pardoning a wrong" + }, + { + "word": "compassion", + "tiles": [ + "com", + "pas", + "si", + "on" + ], + "theme": "emotion", + "clue": "Sympathy for the suffering of others" + }, + { + "word": "serendipity", + "tiles": [ + "ser", + "en", + "dip", + "ity" + ], + "theme": "emotion", + "clue": "Happy accident or lucky discovery" + }, + { + "word": "celebrate", + "tiles": [ + "ce", + "le", + "bra", + "te" + ], + "theme": "emotion", + "clue": "Mark a happy occasion" + }, + { + "word": "passport", + "tiles": [ + "pa", + "ss", + "po", + "rt" + ], + "theme": "travel", + "clue": "Document for crossing borders" + }, + { + "word": "lighthouse", + "tiles": [ + "li", + "ght", + "hou", + "se" + ], + "theme": "travel", + "clue": "Tower with a guiding light for ships" + }, + { + "word": "submarine", + "tiles": [ + "sub", + "ma", + "ri", + "ne" + ], + "theme": "travel", + "clue": "Vessel that travels underwater" + }, + { + "word": "sailboat", + "tiles": [ + "sa", + "il", + "bo", + "at" + ], + "theme": "travel", + "clue": "Boat propelled by wind" + }, + { + "word": "destination", + "tiles": [ + "des", + "ti", + "na", + "tion" + ], + "theme": "travel", + "clue": "Place one is traveling to" + }, + { + "word": "vacation", + "tiles": [ + "va", + "ca", + "ti", + "on" + ], + "theme": "travel", + "clue": "Time off for rest or travel" + }, + { + "word": "itinerary", + "tiles": [ + "iti", + "ne", + "ra", + "ry" + ], + "theme": "travel", + "clue": "Planned route of a journey" + }, + { + "word": "souvenir", + "tiles": [ + "so", + "uv", + "en", + "ir" + ], + "theme": "travel", + "clue": "Keepsake from a trip" + }, + { + "word": "adventure", + "tiles": [ + "ad", + "ven", + "tu", + "re" + ], + "theme": "travel", + "clue": "Exciting or daring experience" + }, + { + "word": "expedition", + "tiles": [ + "ex", + "pe", + "di", + "tion" + ], + "theme": "travel", + "clue": "Journey with a purpose" + }, + { + "word": "railroad", + "tiles": [ + "ra", + "il", + "ro", + "ad" + ], + "theme": "travel", + "clue": "Track for trains" + }, + { + "word": "motorway", + "tiles": [ + "mo", + "to", + "rw", + "ay" + ], + "theme": "travel", + "clue": "Major high-speed road" + }, + { + "word": "crossroads", + "tiles": [ + "cro", + "ss", + "ro", + "ads" + ], + "theme": "travel", + "clue": "Where two roads meet" + }, + { + "word": "campground", + "tiles": [ + "camp", + "gr", + "ou", + "nd" + ], + "theme": "travel", + "clue": "Area for pitching tents" + }, + { + "word": "hitchhiker", + "tiles": [ + "hit", + "ch", + "hi", + "ker" + ], + "theme": "travel", + "clue": "Person traveling by free rides" + }, + { + "word": "cathedral", + "tiles": [ + "ca", + "the", + "dr", + "al" + ], + "theme": "places", + "clue": "Principal church of a diocese" + }, + { + "word": "monastery", + "tiles": [ + "mo", + "nas", + "te", + "ry" + ], + "theme": "places", + "clue": "Home of a community of monks" + }, + { + "word": "observatory", + "tiles": [ + "ob", + "ser", + "va", + "tory" + ], + "theme": "places", + "clue": "Building with telescopes for stargazing" + }, + { + "word": "playground", + "tiles": [ + "play", + "gr", + "ou", + "nd" + ], + "theme": "places", + "clue": "Outdoor area for children to play" + }, + { + "word": "marketplace", + "tiles": [ + "mar", + "ket", + "pla", + "ce" + ], + "theme": "places", + "clue": "Open area where goods are sold" + }, + { + "word": "restaurant", + "tiles": [ + "res", + "tau", + "ra", + "nt" + ], + "theme": "places", + "clue": "Place where meals are served" + }, + { + "word": "supermarket", + "tiles": [ + "su", + "per", + "mar", + "ket" + ], + "theme": "places", + "clue": "Large self-service grocery store" + }, + { + "word": "university", + "tiles": [ + "uni", + "ver", + "si", + "ty" + ], + "theme": "places", + "clue": "Institution of higher learning" + }, + { + "word": "classroom", + "tiles": [ + "cl", + "ass", + "ro", + "om" + ], + "theme": "places", + "clue": "Room where lessons are taught" + }, + { + "word": "apartment", + "tiles": [ + "apa", + "rt", + "me", + "nt" + ], + "theme": "places", + "clue": "Set of rooms for living in" + }, + { + "word": "courthouse", + "tiles": [ + "co", + "ur", + "tho", + "use" + ], + "theme": "places", + "clue": "Building where trials are held" + }, + { + "word": "greenhouse", + "tiles": [ + "gre", + "en", + "hou", + "se" + ], + "theme": "places", + "clue": "Glass building for growing plants" + }, + { + "word": "warehouse", + "tiles": [ + "wa", + "re", + "hou", + "se" + ], + "theme": "places", + "clue": "Large building for storing goods" + }, + { + "word": "farmhouse", + "tiles": [ + "fa", + "rm", + "hou", + "se" + ], + "theme": "places", + "clue": "Main house on a farm" + }, + { + "word": "hospital", + "tiles": [ + "ho", + "sp", + "it", + "al" + ], + "theme": "places", + "clue": "Place where the sick are treated" + }, + { + "word": "aquarium", + "tiles": [ + "aq", + "ua", + "ri", + "um" + ], + "theme": "places", + "clue": "Tank or building housing aquatic life" + }, + { + "word": "orchestra", + "tiles": [ + "or", + "che", + "st", + "ra" + ], + "theme": "arts", + "clue": "Large group of instrumental musicians" + }, + { + "word": "saxophone", + "tiles": [ + "sax", + "op", + "ho", + "ne" + ], + "theme": "arts", + "clue": "Brass-bodied reed instrument used in jazz" + }, + { + "word": "xylophone", + "tiles": [ + "xy", + "lo", + "pho", + "ne" + ], + "theme": "arts", + "clue": "Instrument of wooden bars struck with mallets" + }, + { + "word": "harmonica", + "tiles": [ + "har", + "mo", + "ni", + "ca" + ], + "theme": "arts", + "clue": "Small mouth organ" + }, + { + "word": "accordion", + "tiles": [ + "ac", + "cor", + "di", + "on" + ], + "theme": "arts", + "clue": "Squeezebox instrument with bellows" + }, + { + "word": "clarinet", + "tiles": [ + "cl", + "ar", + "in", + "et" + ], + "theme": "arts", + "clue": "Woodwind with a single reed" + }, + { + "word": "trombone", + "tiles": [ + "tr", + "om", + "bo", + "ne" + ], + "theme": "arts", + "clue": "Brass instrument with a slide" + }, + { + "word": "tambourine", + "tiles": [ + "tam", + "bou", + "ri", + "ne" + ], + "theme": "arts", + "clue": "Hand drum with jingling discs" + }, + { + "word": "violinist", + "tiles": [ + "vi", + "ol", + "in", + "ist" + ], + "theme": "arts", + "clue": "Person who plays the violin" + }, + { + "word": "melodious", + "tiles": [ + "me", + "lo", + "di", + "ous" + ], + "theme": "arts", + "clue": "Pleasant-sounding; tuneful" + }, + { + "word": "painting", + "tiles": [ + "pa", + "in", + "ti", + "ng" + ], + "theme": "arts", + "clue": "Picture made with paint" + }, + { + "word": "sculpture", + "tiles": [ + "scu", + "lp", + "tu", + "re" + ], + "theme": "arts", + "clue": "Art made by carving or modeling" + }, + { + "word": "portrait", + "tiles": [ + "po", + "rt", + "ra", + "it" + ], + "theme": "arts", + "clue": "Painting or photo of a person" + }, + { + "word": "animation", + "tiles": [ + "ani", + "ma", + "ti", + "on" + ], + "theme": "arts", + "clue": "Technique of making drawings appear to move" + }, + { + "word": "cartoonist", + "tiles": [ + "car", + "to", + "on", + "ist" + ], + "theme": "arts", + "clue": "Person who draws comics" + }, + { + "word": "storyteller", + "tiles": [ + "sto", + "ry", + "tel", + "ler" + ], + "theme": "arts", + "clue": "Person who tells tales" + }, + { + "word": "novelist", + "tiles": [ + "no", + "ve", + "li", + "st" + ], + "theme": "arts", + "clue": "Writer of novels" + }, + { + "word": "illustrator", + "tiles": [ + "il", + "lus", + "tra", + "tor" + ], + "theme": "arts", + "clue": "Person who draws pictures for books" + }, + { + "word": "soundtrack", + "tiles": [ + "so", + "und", + "tra", + "ck" + ], + "theme": "arts", + "clue": "Music accompanying a film" + }, + { + "word": "spotlight", + "tiles": [ + "spo", + "tl", + "ig", + "ht" + ], + "theme": "arts", + "clue": "Strong beam of light on a performer" + }, + { + "word": "ballerina", + "tiles": [ + "bal", + "le", + "ri", + "na" + ], + "theme": "arts", + "clue": "Female ballet dancer" + }, + { + "word": "symphony", + "tiles": [ + "sy", + "mp", + "ho", + "ny" + ], + "theme": "arts", + "clue": "Elaborate composition for orchestra" + }, + { + "word": "masquerade", + "tiles": [ + "mas", + "que", + "ra", + "de" + ], + "theme": "arts", + "clue": "Party where guests wear masks" + }, + { + "word": "dinosaur", + "tiles": [ + "di", + "no", + "sa", + "ur" + ], + "theme": "history", + "clue": "Extinct prehistoric reptile" + }, + { + "word": "pyramids", + "tiles": [ + "py", + "ra", + "mi", + "ds" + ], + "theme": "history", + "clue": "Ancient Egyptian monumental tombs" + }, + { + "word": "gladiator", + "tiles": [ + "gla", + "di", + "at", + "or" + ], + "theme": "history", + "clue": "Roman arena fighter" + }, + { + "word": "knighthood", + "tiles": [ + "kni", + "ght", + "ho", + "od" + ], + "theme": "history", + "clue": "Rank or status of a knight" + }, + { + "word": "wizardry", + "tiles": [ + "wi", + "za", + "rd", + "ry" + ], + "theme": "fantasy", + "clue": "The art of magic" + }, + { + "word": "treasure", + "tiles": [ + "tr", + "ea", + "su", + "re" + ], + "theme": "fantasy", + "clue": "Hoard of valuable riches" + }, + { + "word": "shipwreck", + "tiles": [ + "sh", + "ip", + "wre", + "ck" + ], + "theme": "history", + "clue": "Destruction of a ship at sea" + }, + { + "word": "labyrinth", + "tiles": [ + "la", + "by", + "rin", + "th" + ], + "theme": "fantasy", + "clue": "Complicated maze" + }, + { + "word": "mythology", + "tiles": [ + "my", + "tho", + "lo", + "gy" + ], + "theme": "fantasy", + "clue": "Collection of traditional myths" + }, + { + "word": "legendary", + "tiles": [ + "le", + "gen", + "da", + "ry" + ], + "theme": "fantasy", + "clue": "Famous; described in legends" + }, + { + "word": "invisible", + "tiles": [ + "in", + "vi", + "si", + "ble" + ], + "theme": "fantasy", + "clue": "Unable to be seen" + }, + { + "word": "werewolf", + "tiles": [ + "we", + "re", + "wo", + "lf" + ], + "theme": "fantasy", + "clue": "Person who turns into a wolf" + }, + { + "word": "vampires", + "tiles": [ + "va", + "mp", + "ir", + "es" + ], + "theme": "fantasy", + "clue": "Blood-drinking creatures of legend" + }, + { + "word": "revolution", + "tiles": [ + "re", + "vo", + "lu", + "tion" + ], + "theme": "history", + "clue": "Forcible overthrow of a government" + }, + { + "word": "independence", + "tiles": [ + "in", + "de", + "pen", + "dence" + ], + "theme": "history", + "clue": "Freedom from outside control" + }, + { + "word": "democracy", + "tiles": [ + "de", + "mo", + "cra", + "cy" + ], + "theme": "history", + "clue": "Government by the people" + }, + { + "word": "parliament", + "tiles": [ + "par", + "lia", + "me", + "nt" + ], + "theme": "history", + "clue": "Legislative assembly" + }, + { + "word": "ambassador", + "tiles": [ + "am", + "bas", + "sa", + "dor" + ], + "theme": "history", + "clue": "Diplomat representing a country abroad" + }, + { + "word": "president", + "tiles": [ + "pre", + "si", + "de", + "nt" + ], + "theme": "history", + "clue": "Elected head of a republic" + }, + { + "word": "government", + "tiles": [ + "go", + "ver", + "nm", + "ent" + ], + "theme": "history", + "clue": "Body that governs a nation" + }, + { + "word": "constitution", + "tiles": [ + "con", + "sti", + "tu", + "tion" + ], + "theme": "history", + "clue": "Founding legal document of a nation" + }, + { + "word": "afternoon", + "tiles": [ + "af", + "ter", + "no", + "on" + ], + "theme": "everyday", + "clue": "Time between noon and evening" + }, + { + "word": "yesterday", + "tiles": [ + "yes", + "te", + "rd", + "ay" + ], + "theme": "everyday", + "clue": "The day before today" + }, + { + "word": "tomorrow", + "tiles": [ + "to", + "mo", + "rr", + "ow" + ], + "theme": "everyday", + "clue": "The day after today" + }, + { + "word": "calendar", + "tiles": [ + "ca", + "le", + "nd", + "ar" + ], + "theme": "everyday", + "clue": "Chart of days and months" + }, + { + "word": "everything", + "tiles": [ + "ev", + "ery", + "thi", + "ng" + ], + "theme": "everyday", + "clue": "All things" + }, + { + "word": "somewhere", + "tiles": [ + "so", + "me", + "whe", + "re" + ], + "theme": "everyday", + "clue": "In or to some place" + }, + { + "word": "basement", + "tiles": [ + "ba", + "se", + "me", + "nt" + ], + "theme": "everyday", + "clue": "Floor below ground level" + }, + { + "word": "newspaper", + "tiles": [ + "ne", + "ws", + "pa", + "per" + ], + "theme": "everyday", + "clue": "Daily printed news publication" + }, + { + "word": "magazine", + "tiles": [ + "ma", + "ga", + "zi", + "ne" + ], + "theme": "everyday", + "clue": "Periodical with articles and photos" + }, + { + "word": "alphabet", + "tiles": [ + "al", + "ph", + "ab", + "et" + ], + "theme": "education", + "clue": "Set of letters of a language" + }, + { + "word": "vocabulary", + "tiles": [ + "vo", + "ca", + "bu", + "lary" + ], + "theme": "education", + "clue": "Body of words a person knows" + }, + { + "word": "homework", + "tiles": [ + "ho", + "me", + "wo", + "rk" + ], + "theme": "education", + "clue": "Schoolwork done at home" + }, + { + "word": "notebook", + "tiles": [ + "no", + "te", + "bo", + "ok" + ], + "theme": "education", + "clue": "Book of blank pages for notes" + }, + { + "word": "paintbrush", + "tiles": [ + "pa", + "int", + "bru", + "sh" + ], + "theme": "education", + "clue": "Brush for applying paint" + }, + { + "word": "handwriting", + "tiles": [ + "hand", + "wri", + "ti", + "ng" + ], + "theme": "education", + "clue": "Writing done by hand" + }, + { + "word": "spelling", + "tiles": [ + "sp", + "el", + "li", + "ng" + ], + "theme": "education", + "clue": "Forming words from letters correctly" + }, + { + "word": "mathematics", + "tiles": [ + "ma", + "the", + "mat", + "ics" + ], + "theme": "education", + "clue": "Science of numbers and shapes" + }, + { + "word": "geography", + "tiles": [ + "ge", + "og", + "ra", + "phy" + ], + "theme": "education", + "clue": "Study of Earth's features" + }, + { + "word": "chemistry", + "tiles": [ + "che", + "mi", + "st", + "ry" + ], + "theme": "education", + "clue": "Science of substances and reactions" + }, + { + "word": "experiment", + "tiles": [ + "ex", + "pe", + "ri", + "ment" + ], + "theme": "science", + "clue": "Scientific test of a hypothesis" + }, + { + "word": "discovery", + "tiles": [ + "di", + "sco", + "ve", + "ry" + ], + "theme": "science", + "clue": "Act of finding something new" + }, + { + "word": "invention", + "tiles": [ + "in", + "ven", + "ti", + "on" + ], + "theme": "science", + "clue": "Something newly created" + }, + { + "word": "skeleton", + "tiles": [ + "sk", + "el", + "et", + "on" + ], + "theme": "science", + "clue": "Framework of bones" + }, + { + "word": "vitamins", + "tiles": [ + "vi", + "ta", + "mi", + "ns" + ], + "theme": "health", + "clue": "Nutrients needed in small amounts" + }, + { + "word": "medicine", + "tiles": [ + "me", + "di", + "ci", + "ne" + ], + "theme": "health", + "clue": "Substance used to treat illness" + }, + { + "word": "bandages", + "tiles": [ + "ba", + "nd", + "ag", + "es" + ], + "theme": "health", + "clue": "Strips of material for wounds" + }, + { + "word": "ambulance", + "tiles": [ + "am", + "bu", + "la", + "nce" + ], + "theme": "health", + "clue": "Vehicle for emergency patients" + }, + { + "word": "heartbeat", + "tiles": [ + "hea", + "rt", + "be", + "at" + ], + "theme": "health", + "clue": "Pulse of the heart" + }, + { + "word": "exercise", + "tiles": [ + "ex", + "er", + "ci", + "se" + ], + "theme": "health", + "clue": "Physical activity for fitness" + }, + { + "word": "meditation", + "tiles": [ + "me", + "di", + "ta", + "tion" + ], + "theme": "health", + "clue": "Practice of focused calm reflection" + }, + { + "word": "relaxation", + "tiles": [ + "re", + "la", + "xa", + "tion" + ], + "theme": "health", + "clue": "State of being free from tension" } ]; diff --git a/src/engine/generator.js b/src/engine/generator.js index b3d79c6..ebeaab1 100644 --- a/src/engine/generator.js +++ b/src/engine/generator.js @@ -4,22 +4,91 @@ import { solveBoard } from './solver.js'; /** * Generates a random valid Quartiles puzzle from the target word pool */ +/** + * Generates a random valid Quartiles puzzle from the target word pool + * Guarantees: + * - 20 strictly unique tiles (no duplicates anywhere on board) + * - All tiles are at least 2 characters (never 1 letter) + * - Anti-repetition: tracks recently used words in localStorage across games + * - Highly varied and random puzzles + */ export function generateRandomPuzzle(seed) { - const pool = [...TARGET_WORDS_POOL]; - // Shuffle pool - for (let i = pool.length - 1; i > 0; i--) { - const j = Math.floor(Math.random() * (i + 1)); - [pool[i], pool[j]] = [pool[j], pool[i]]; + // Load recently used target words to prevent repetition across games + let recentWords = []; + try { + const rawRecent = localStorage.getItem('quartiles_recent_target_words'); + if (rawRecent) { + recentWords = JSON.parse(rawRecent); + if (!Array.isArray(recentWords)) recentWords = []; + } + } catch (e) { + recentWords = []; + } + const recentSet = new Set(recentWords.map(w => w.toLowerCase())); + + // Filter pool to prioritize words not played recently + const nonRecentPool = TARGET_WORDS_POOL.filter(w => !recentSet.has(w.word.toLowerCase())); + // If non-recent pool is too small, use full pool + const poolCandidate = nonRecentPool.length >= 25 ? nonRecentPool : [...TARGET_WORDS_POOL]; + + // Helper to shuffle an array + function shuffle(arr) { + const a = [...arr]; + for (let i = a.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [a[i], a[j]] = [a[j], a[i]]; + } + return a; } - // Pick 5 words that don't repeat letters/roots too excessively - const selectedWords = pool.slice(0, 5); - const quartets = selectedWords.map(w => w.tiles); + // Attempt to find 5 words with 0 tile collisions (strictly 20 unique tiles) + let selectedWords = null; + const attemptsPools = [shuffle(poolCandidate), shuffle(TARGET_WORDS_POOL), shuffle(TARGET_WORDS_POOL)]; - const solved = solveBoard(quartets); + for (const pool of attemptsPools) { + const picked = []; + const usedTiles = new Set(); + + for (const item of pool) { + if (!item.tiles || item.tiles.length !== 4) continue; + // Ensure no 1-letter tiles + if (!item.tiles.every(t => t && t.length >= 2)) continue; + + // Check collision with already used tiles + const hasCollision = item.tiles.some(t => usedTiles.has(t.toLowerCase())); + if (!hasCollision) { + picked.push(item); + item.tiles.forEach(t => usedTiles.add(t.toLowerCase())); + if (picked.length === 5) { + selectedWords = picked; + break; + } + } + } + if (selectedWords && selectedWords.length === 5) break; + } + + // Fallback if extreme constraints somehow failed + if (!selectedWords || selectedWords.length < 5) { + selectedWords = shuffle(TARGET_WORDS_POOL).slice(0, 5); + } + + // Save selected words into recent words history (keep up to last 50 words) + try { + const updatedRecent = [ + ...selectedWords.map(w => w.word.toLowerCase()), + ...recentWords.filter(w => !selectedWords.some(sw => sw.word.toLowerCase() === w)) + ].slice(0, 50); + localStorage.setItem('quartiles_recent_target_words', JSON.stringify(updatedRecent)); + } catch (e) { + // Non-fatal if localStorage unavailable + } + + const quartets = selectedWords.map(w => w.tiles.map(t => t.toLowerCase().trim())); + const solved = solveBoard(quartets, 30); const id = 'custom-' + Date.now(); - const theme = selectedWords[0].theme ? `${selectedWords[0].theme.toUpperCase()} & MORE` : 'Unlimited Challenge'; + const theme = selectedWords[0].theme ? `${selectedWords[0].theme.toUpperCase()} & BEYOND` : 'Unlimited Challenge'; return { id, @@ -44,12 +113,17 @@ export function generateRandomPuzzle(seed) { /** * Validates and creates a custom puzzle from user-provided quartets * Expects array of 5 quartets: [[t1,t2,t3,t4], [t5,t6,t7,t8], ...] + * Enforces: + * - Exactly 20 tiles total + * - All 20 tiles must be unique (no duplicate tiles on board) + * - Every tile must be at least 2 letters (no 1-letter tiles) */ export function createCustomPuzzle(quartets, customTitle = 'Custom Community Puzzle') { if (!Array.isArray(quartets) || quartets.length !== 5) { throw new Error('Puzzle must have exactly 5 quartets (4-tile words)'); } + const allTiles = []; for (let i = 0; i < quartets.length; i++) { const q = quartets[i]; if (!Array.isArray(q) || q.length !== 4) { @@ -57,14 +131,21 @@ export function createCustomPuzzle(quartets, customTitle = 'Custom Community Puz } for (let j = 0; j < 4; j++) { const tile = q[j].toLowerCase().trim(); - if (!/^[a-z]{2,4}$/.test(tile)) { - throw new Error(`Tile "${tile}" in quartet #${i + 1} must be 2 to 4 letters`); + if (!/^[a-z]{2,8}$/.test(tile)) { + throw new Error(`Tile "${tile}" in quartet #${i + 1} must be at least 2 letters`); } + allTiles.push(tile); } } + // Enforce no duplicate tiles across the board + const uniqueTileSet = new Set(allTiles); + if (uniqueTileSet.size !== 20) { + throw new Error('All 20 tiles on the board must be unique. Duplicate tiles are not allowed.'); + } + const normalizedQuartets = quartets.map(q => q.map(t => t.toLowerCase().trim())); - const solved = solveBoard(normalizedQuartets); + const solved = solveBoard(normalizedQuartets, 30); return { id: 'user-' + btoa(normalizedQuartets.map(q => q.join('-')).join('|')).slice(0, 16), diff --git a/src/engine/solver.js b/src/engine/solver.js index 948c832..e591a57 100644 --- a/src/engine/solver.js +++ b/src/engine/solver.js @@ -37,6 +37,13 @@ export function solveBoard(quartets, maxWords = 30) { const quartilesList = quartets.map(q => q.join('').toLowerCase()); const quartileSet = new Set(quartilesList); + // Target quartiles are always valid, even if missing from the dictionary + quartilesList.forEach((word, qIdx) => { + if (!foundMap.has(word)) { + foundMap.set(word, [qIdx * 4, qIdx * 4 + 1, qIdx * 4 + 2, qIdx * 4 + 3]); + } + }); + let words = []; for (const [word, path] of foundMap.entries()) { diff --git a/src/main.js b/src/main.js index 185a7d3..a8ed3cf 100644 --- a/src/main.js +++ b/src/main.js @@ -145,6 +145,9 @@ async function initApp() { const tileGrid = createTileGrid({ onTileSelected: tileId => { gameState.onTileClicked(tileId); + }, + onTogglePin: tileId => { + gameState.togglePinTile(tileId); } }); appContainer.appendChild(tileGrid.element); diff --git a/src/state/game-state.js b/src/state/game-state.js index 8ddee91..7273aa4 100644 --- a/src/state/game-state.js +++ b/src/state/game-state.js @@ -4,8 +4,9 @@ import { getRankInfo, QUARTILE_COMPLETION_BONUS } from '../engine/constants.js'; class GameStateManager { constructor() { this.currentPuzzle = null; - this.boardTiles = []; // Array of { id, text, isQuartileSolved, isLocked } + this.boardTiles = []; // Array of { id, text, originalText, isQuartileSolved, isLocked, isPinned } this.activeTileIds = []; // Array of tile IDs in construction tray + this.userPinnedTileIds = new Set(); // Set of tile IDs manually pinned by user this.foundWords = new Map(); // word -> wordData this.score = 0; this.quartilesBonusAwarded = false; @@ -48,6 +49,7 @@ class GameStateManager { this.currentPuzzle = puzzle; this.saveActivePuzzle(); this.activeTileIds = []; + this.userPinnedTileIds = new Set(); this.foundWords = new Map(); this.score = 0; this.quartilesBonusAwarded = false; @@ -60,7 +62,8 @@ class GameStateManager { text: text.toUpperCase(), originalText: text, isQuartileSolved: false, - isLocked: false + isLocked: false, + isPinned: false })); // Restore saved state from LocalStorage if available @@ -136,6 +139,8 @@ class GameStateManager { score: this.score, bonus: this.quartilesBonusAwarded, tileOrder: this.boardTiles.map(t => t.id), + pinnedTileIds: Array.from(this.userPinnedTileIds), + lockQuartiles: this.lockQuartiles, activeTileIds: this.activeTileIds, isRevealed: this.isRevealed, hintIndex: this.hintIndex, @@ -143,6 +148,11 @@ class GameStateManager { }; try { localStorage.setItem(saveKey, JSON.stringify(payload)); + // Maintain persistent list of all played puzzle IDs + const rawAll = localStorage.getItem('quartiles_all_saved_puzzle_ids'); + const allSaved = new Set(rawAll ? JSON.parse(rawAll) : []); + allSaved.add(this.currentPuzzle.id); + localStorage.setItem('quartiles_all_saved_puzzle_ids', JSON.stringify(Array.from(allSaved))); } catch (err) { console.warn('LocalStorage save failed:', err); } @@ -182,9 +192,16 @@ class GameStateManager { } this.isRevealed = !!parsed.isRevealed; this.hintIndex = parsed.hintIndex || 0; + if (parsed.lockQuartiles !== undefined) { + this.lockQuartiles = parsed.lockQuartiles; + } - // Re-mark solved quartiles - this.updateSolvedQuartileTiles(); + // Restore pinned tiles + if (Array.isArray(parsed.pinnedTileIds)) { + this.userPinnedTileIds = new Set(parsed.pinnedTileIds.filter(id => id >= 0 && id < 20)); + } else { + this.userPinnedTileIds = new Set(); + } // Restore active tray tiles if any if (Array.isArray(parsed.activeTileIds)) { @@ -194,16 +211,18 @@ class GameStateManager { // Restore tile order if saved if (Array.isArray(parsed.tileOrder) && parsed.tileOrder.length === 20) { const isSequential = parsed.tileOrder.every((id, idx) => id === idx); - if (!isSequential || this.foundWords.size > 0) { + if (!isSequential || this.foundWords.size > 0 || this.userPinnedTileIds.size > 0) { const tileMap = new Map(this.boardTiles.map(t => [t.id, t])); const reordered = parsed.tileOrder.map(id => tileMap.get(id)).filter(Boolean); if (reordered.length === 20) { this.boardTiles = reordered; - return true; } } } - return this.foundWords.size > 0; + + // Re-mark solved quartiles and user-pinned tiles + this.updateSolvedQuartileTiles(); + return this.foundWords.size > 0 || this.userPinnedTileIds.size > 0; } } } catch (err) { @@ -212,7 +231,7 @@ class GameStateManager { return false; } - // Check if a tile belongs to an already found Quartile + // Check if a tile belongs to an already found Quartile or is user-pinned updateSolvedQuartileTiles() { const solvedQuartileWords = new Set(); for (const [w, data] of this.foundWords.entries()) { @@ -221,10 +240,11 @@ class GameStateManager { } } - // For each target quartet, check if solved + // Initialize all tiles with their pin state this.boardTiles.forEach(tile => { tile.isQuartileSolved = false; - tile.isLocked = false; + tile.isPinned = this.userPinnedTileIds.has(tile.id); + tile.isLocked = tile.isPinned; }); for (let qIdx = 0; qIdx < this.currentPuzzle.quartets.length; qIdx++) { @@ -237,7 +257,7 @@ class GameStateManager { const tile = this.boardTiles.find(t => t.id === i); if (tile) { tile.isQuartileSolved = true; - if (this.lockQuartiles) { + if (this.lockQuartiles || tile.isPinned) { tile.isLocked = true; } } @@ -246,6 +266,25 @@ class GameStateManager { } } + // Toggle user pin on an individual tile + togglePinTile(tileId) { + if (this.userPinnedTileIds.has(tileId)) { + this.userPinnedTileIds.delete(tileId); + } else { + this.userPinnedTileIds.add(tileId); + } + this.updateSolvedQuartileTiles(); + this.saveProgress(); + this.notify(); + const tile = this.boardTiles.find(t => t.id === tileId); + const isPinned = this.userPinnedTileIds.has(tileId); + this.notifyToast( + isPinned ? `📌 Pinned tile "${tile?.text || ''}" in place` : `🔓 Unpinned tile "${tile?.text || ''}"`, + 'info', + 1600 + ); + } + // Reorganizes the board: locked solved quartiles go to top rows reorganizeBoard() { this.updateSolvedQuartileTiles(); @@ -347,30 +386,56 @@ class GameStateManager { } } - // Shuffle unlocked tiles + // Shuffle unlocked & unpinned tiles shuffle() { - const lockedTiles = this.lockQuartiles ? this.boardTiles.filter(t => t.isLocked) : []; - const unlockedTiles = this.lockQuartiles ? this.boardTiles.filter(t => !t.isLocked) : [...this.boardTiles]; + const unpinnedPositions = []; + const unpinnedTiles = []; + + this.boardTiles.forEach((tile, idx) => { + const isFixed = tile.isPinned || (this.lockQuartiles && tile.isLocked); + if (!isFixed) { + unpinnedPositions.push(idx); + unpinnedTiles.push(tile); + } + }); // Fisher-Yates shuffle - for (let i = unlockedTiles.length - 1; i > 0; i--) { + for (let i = unpinnedTiles.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); - [unlockedTiles[i], unlockedTiles[j]] = [unlockedTiles[j], unlockedTiles[i]]; + [unpinnedTiles[i], unpinnedTiles[j]] = [unpinnedTiles[j], unpinnedTiles[i]]; } - this.boardTiles = [...lockedTiles, ...unlockedTiles]; + const newBoard = [...this.boardTiles]; + unpinnedPositions.forEach((pos, idx) => { + newBoard[pos] = unpinnedTiles[idx]; + }); + + this.boardTiles = newBoard; this.saveProgress(); this.notify(); } - // Sort unlocked tiles alphabetically + // Sort unlocked & unpinned tiles alphabetically sortAlphabetical() { - const lockedTiles = this.lockQuartiles ? this.boardTiles.filter(t => t.isLocked) : []; - const unlockedTiles = this.lockQuartiles ? this.boardTiles.filter(t => !t.isLocked) : [...this.boardTiles]; + const unpinnedPositions = []; + const unpinnedTiles = []; - unlockedTiles.sort((a, b) => a.text.localeCompare(b.text)); + this.boardTiles.forEach((tile, idx) => { + const isFixed = tile.isPinned || (this.lockQuartiles && tile.isLocked); + if (!isFixed) { + unpinnedPositions.push(idx); + unpinnedTiles.push(tile); + } + }); - this.boardTiles = [...lockedTiles, ...unlockedTiles]; + unpinnedTiles.sort((a, b) => a.text.localeCompare(b.text)); + + const newBoard = [...this.boardTiles]; + unpinnedPositions.forEach((pos, idx) => { + newBoard[pos] = unpinnedTiles[idx]; + }); + + this.boardTiles = newBoard; this.saveProgress(); this.notify(); } @@ -385,13 +450,16 @@ class GameStateManager { const constructedWord = this.activeTileIds .map(id => { const tile = this.boardTiles.find(t => t.id === id); - return tile ? tile.text.toLowerCase() : ''; + return tile ? tile.text.toLowerCase().trim() : ''; }) .join(''); // Check if already found if (this.foundWords.has(constructedWord)) { this.notifyToast(`"${constructedWord.toUpperCase()}" already found!`, 'warning'); + this.activeTileIds = []; + this.saveProgress(); + this.notify(); return { success: false, reason: 'duplicate', word: constructedWord }; } diff --git a/src/styles/board.css b/src/styles/board.css index aef0559..de366a6 100644 --- a/src/styles/board.css +++ b/src/styles/board.css @@ -338,6 +338,46 @@ opacity: 0.8; } +/* User-pinned tile state */ +.board-tile.pinned { + border-color: #f59e0b !important; + box-shadow: 0 0 0 1.5px rgba(245, 158, 11, 0.45), var(--tile-shadow) !important; +} + +.tile-pin-btn { + position: absolute; + top: 2px; + right: 2px; + width: 20px; + height: 20px; + display: flex; + align-items: center; + justify-content: center; + background: transparent; + border: none; + cursor: pointer; + padding: 0; + border-radius: 4px; + opacity: 0.22; + transition: opacity var(--transition-fast), transform var(--transition-fast); + z-index: 5; +} + +.board-tile:hover .tile-pin-btn, +.tile-pin-btn.is-pinned { + opacity: 0.95; +} + +.tile-pin-btn .pin-icon { + font-size: 0.7rem; + line-height: 1; +} + +.tile-pin-btn.is-pinned { + transform: scale(1.12); + filter: drop-shadow(0 1px 2px rgba(245, 158, 11, 0.4)); +} + /* Board tile shuffle animation */ .board-tile.flipping { animation: tileFlip 0.4s var(--ease-smooth);