DRWordle (script)
DRWordle (script) | |
---|---|
Category | events |
Front-end | Genie |
Author | Shift |
Updated word list on 5-21-2023, added "infinite run" option.
Word list as of 5-23-2022
.drwordle solve Attempts to solve the puzzle.
.drwordle debug Enters debug mode. use "#parse NEXTCASE" without the quotes to progress it.
drwordle help Shows possible commands.
Important Notes:
1. Turn the recommend only variable in the custom variables section to ON if you want the script to give you recommendations rather than solve the puzzle for you.
2. If the script is timing out, decrease the infinite loop hack variable. This will slow it down a bit, so don't make it too short unless you want to sit around and do otherstuff while it processes.
3. Some DR words will likely not be in the list. You can add them to the missing words list at top. Just make sure you end in a | and it's all caps or it's likely to break or ignore the word.
4. If the script dies or you accidentally break out, change the guess variable and just rerun it. It'll pick back up with the new guess.
5. Start the script when standing next to a time lock.
Disclaimer: No guarantees on your RPAs because I don't know what else you have going on in your system, but my testing showed about 81-100% accuracy (variable due to versions and updates to the script itself + word lists).
### use .DRWordle help for instructions #============================== CUSTOM VARIABLES GO HERE =========================== ## This is the word to start the puzzle ## Most people will want to just ignore this. var DRWordle._guess AEIOU # var DRWordle._guess CRANE ## Add new words discovered here ## Most likely DR specific words not in the dictionary; always 5 characters ## Make sure to separate words and end with | ## Always caps, and these words will be prioritized if the program does auto-input ## WARNING: ADDING THE WORD "FALSE" WILL BREAK THE CODE !!! var DRWordle._missingWords OSAGE|NILOS|DARJE|IROKO|RAMIE|KASAI|MOABI|CRWTH|REBEC|KELSA|COBZA|ANGLE|GUIRO|HOSTA|TABLA|TZECE|AKABO|SNICK|IAHJA|ESTOC|AVENE|ZUBKE|SUFIL|PUNKA|MADUN|KOMNO|KALAG|TELEK|ELMOD|KATAR|JASPE|TONFA|UKABI|PHOFE|TURSA|RAMIN|KASAI|NULOE|JOSTA|MELIE|RISTE|KYTHE|HULIJ|KILAM|VEDDA|LUNAT|HISAN|TAIGO|LOACH|SHAAL|MALIK|MELIR|LIANA|ITHOR|MOABI|CUSKA ## Only recommends a word. Won't actually type it in. You need to. ## OFF to have it play the game for you, ON or anything else to enable assisted mode var DRWordle._recommendOnly OFF ## If you have errors due to infinite loop or recursion, lower this number. ## It will be slighly slower to significantly slower depending on how low it goes var DRWordle._infiniteLoopHack 2000 ## Echo color for information text; customizable for the visually impaired or for those running lots of highlights var DRWordle._textColor._info yellow var DRWordle._textColor._warning red ## Delay for processing. Increase this if you're missing letters due to slower or older PCs var DRWordle._globalShortDelay .001 var DRWordle._globalLongDelay 1 ## Set to 1 to repeat indefinitely - but it will break on failure to allow you to resolve the issue var DRWordle.useAllSlips 1 #============================================================================================= DRWordle.Start: ### Setting up base variables. This should run before attempting gosub DRWordle.SetupActions gosub DRWordle.SetupGlobalVars ### real run or just help run? gosub DRWordle.InputCheck DRWordle.Exit: put #parse DRWORDLE FINISHED exit 0 ######################################################## Puzzle Solver FUNCTIONS ########################################### DRWordle.startPuzzle: gosub DRWordle.Echo %DRWordle._textColor._info Starting puzzle put touch time lock waitforre This will consume a pass for Aesthene|already connected to the lock put touch time lock waitforre You can WHISPER your guess|already connected to the lock|an alarming pulse of energy surges from it and through you put whisper time lock %DRWordle._guess waitforre LOOK at the lock for an update on your progress pause %DRWordle._globalLongDelay drwordle.override: gosub DRWordle.PostProcessing if ("%DRWordle._recommendOnly" = "ON") then { gosub DRWordle.TestCase.PrintStates gosub DRWordle.Echo %DRWordle._textColor._warning red INPUT REQURIED gosub DRWordle.Echo %DRWordle._textColor._warning red type "whisper time lock <guess>" without quotes, filling in your guess for "<guess>" } else { goto DRWordle.automateGuess } ## waiting for triggers to move on. Could use matchwait, but I'm lazy pause 30000 goto DRWordle.override ######################################################## SETUP FUNCTIONS ########################################### DRWordle.SetupActions: gosub DRWordle.Echo %DRWordle._textColor._info --- Creating Triggers ### Actions to identify which words are good and which are bad. ### There has to be a better way to do this too. ### identify bad letters ## This didn't work, only caught first bad letter per row, so splitting into multiple actions # action var DRWordle._badLettersDirty %DRWordle._goodLettersDirty|$1 when \*([A-Z])\* action var DRWordle._badLettersDirty $1|%DRWordle._badLettersDirty when \s*\|\s*\*([A-Z])\*\s*\|\s*...\s*\|\s*...\s*\|\s*...\s*\|\s*...\s*\|\s*$ action var DRWordle._badLettersDirty $1|%DRWordle._badLettersDirty when \s*\|\s*...\s*\|\s*\*([A-Z])\*\s*\|\s*...\s*\|\s*...\s*\|\s*...\s*\|\s*$ action var DRWordle._badLettersDirty $1|%DRWordle._badLettersDirty when \s*\|\s*...\s*\|\s*...\s*\|\s*\*([A-Z])\*\s*\|\s*...\s*\|\s*...\s*\|\s*$ action var DRWordle._badLettersDirty $1|%DRWordle._badLettersDirty when \s*\|\s*...\s*\|\s*...\s*\|\s*...\s*\|\s*\*([A-Z])\*\s*\|\s*...\s*\|\s*$ action var DRWordle._badLettersDirty $1|%DRWordle._badLettersDirty when \s*\|\s*...\s*\|\s*...\s*\|\s*...\s*\|\s*...\s*\|\s*\*([A-Z])\*\s*\|\s*$ ### identify good letters #same problem as above, so just hardcoding it. #action var DRWordle._goodLettersDirty %DRWordle._goodLettersDirty|$1 when \+([A-Z])\+ #action var DRWordle._goodLettersDirty %DRWordle._goodLettersDirty|$1 when _([A-Z])_ action var DRWordle._goodLettersDirty $1|%DRWordle._goodLettersDirty;var DRWordle._GoodLBadPosition1 $1 when \s*\|\s*_([A-Z])_\s*\|\s*...\s*\|\s*...\s*\|\s*...\s*\|\s*...\s*\|\s*$ action var DRWordle._goodLettersDirty $1|%DRWordle._goodLettersDirty;var DRWordle._GoodLBadPosition2 $1 when \s*\|\s*...\s*\|\s*_([A-Z])_\s*\|\s*...\s*\|\s*...\s*\|\s*...\s*\|\s*$ action var DRWordle._goodLettersDirty $1|%DRWordle._goodLettersDirty;var DRWordle._GoodLBadPosition3 $1 when \s*\|\s*...\s*\|\s*...\s*\|\s*_([A-Z])_\s*\|\s*...\s*\|\s*...\s*\|\s*$ action var DRWordle._goodLettersDirty $1|%DRWordle._goodLettersDirty;var DRWordle._GoodLBadPosition4 $1 when \s*\|\s*...\s*\|\s*...\s*\|\s*...\s*\|\s*_([A-Z])_\s*\|\s*...\s*\|\s*$ action var DRWordle._goodLettersDirty $1|%DRWordle._goodLettersDirty;var DRWordle._GoodLBadPosition5 $1 when \s*\|\s*...\s*\|\s*...\s*\|\s*...\s*\|\s*...\s*\|\s*_([A-Z])_\s*\|\s*$ ### identify known positions action var DRWordle._knownPosition1 $1;var DRWordle._goodLettersDirty $1|%DRWordle._goodLettersDirty when \s*\|\s*\+([A-Z])\+\s*\|\s*...\s*\|\s*...\s*\|\s*...\s*\|\s*...\s*\|\s*$ action var DRWordle._knownPosition2 $1;var DRWordle._goodLettersDirty $1|%DRWordle._goodLettersDirty when \s*\|\s*...\s*\|\s*\+([A-Z])\+\s*\|\s*...\s*\|\s*...\s*\|\s*...\s*\|\s*$ action var DRWordle._knownPosition3 $1;var DRWordle._goodLettersDirty $1|%DRWordle._goodLettersDirty when \s*\|\s*...\s*\|\s*...\s*\|\s*\+([A-Z])\+\s*\|\s*...\s*\|\s*...\s*\|\s*$ action var DRWordle._knownPosition4 $1;var DRWordle._goodLettersDirty $1|%DRWordle._goodLettersDirty when \s*\|\s*...\s*\|\s*...\s*\|\s*...\s*\|\s*\+([A-Z])\+\s*\|\s*...\s*\|\s*$ action var DRWordle._knownPosition5 $1;var DRWordle._goodLettersDirty $1|%DRWordle._goodLettersDirty when \s*\|\s*...\s*\|\s*...\s*\|\s*...\s*\|\s*...\s*\|\s*\+([A-Z])\+\s*\|\s*$ ## support actions action goto DRWordle.Override when PROCESSLASTMOVE! action goto DRWordle.Override when indicates a wrong letter that isn't used in the final word action goto DRWordle.NO.PASSES when To interact with the lock, you must redeem a pass for the event action goto DRWordle.COMPLETE when for your assistance in locking away unstable temporal magics at Aesthene's Close action goto DRWordle.automateGuess when You must whisper a guess ## fail states action goto DRWordle.UNKONWN.WORD when You are not currently tasked with solving the puzzle. TOUCH the lock to begin.] # action goto DRWordle.UNKONWN.WORD when You whisper quietly to the lock. It doesn't respond return DRWordle.SetupGlobalVars: gosub DRWordle.Echo %DRWordle._textColor._info --- Creating Variables ## Functional variables; will fill in as part of the run var DRWordle._goodLetters var DRWordle._goodLettersDirty var DRWordle._badLetters var DRWordle._badLettersDirty # NYI # var DRWordle._remainingLetters ABCDEFGHIJKLMNOPQRSTUVWXYZ ####### var DRWordle._knownPosition1 var DRWordle._knownPosition2 var DRWordle._knownPosition3 var DRWordle._knownPosition4 var DRWordle._knownPosition5 var DRWordle._GoodLBadPosition1 . var DRWordle._GoodLBadPosition2 . var DRWordle._GoodLBadPosition3 . var DRWordle._GoodLBadPosition4 . var DRWordle._GoodLBadPosition5 . gosub DRWordle.CheckKnownPositions gosub DRWordle.Echo %DRWordle._textColor._info --- Creating Word List... this may take a while ## Customizable variables. Wordbank is HUGE. There has to be a better way. Import external file maybe? var DRWordle._wordCharCount 5 var DRWordle._wordBank %DRWordle._missingWordsAALAR|AARGH|AAYRA|ABACA|ABACI|ABACK|ABAFT|ABASE|ABASH|ABATE|ABBEY|ABBOT|ABEAM|ABEND|ABETS|ABHOR|ABIDE|ABIRA|ABLED|ABLER|ABODE|ABORT|ABOUT|ABOVE|ABSIT|ABUSE|ABUTS|ABUZZ|ABYSS|ACHED|ACHES|ACHOO|ACIDS|ACING|ACKED|ACMES|ACNED|ACNES|ACORN|ACRES|ACRID|ACTED|ACTIN|ACTOR|ACUTE|ADAGE|ADANF|ADANO|ADAPT|ADDED|ADDER|ADDLE|ADEPT|ADIEU|ADIOS|ADLIB|ADMAN|ADMEN|ADMIT|ADMIX|ADOBE|ADOPT|ADORE|ADORN|ADULT|ADZES|AEDEM|AEGIS|AELIK|AERIE|AESRY|AEVEL|AEYMI|AFFIX|AFIRE|AFOOT|AFORE|AFOUL|AFTER|AGAIN|AGAPE|AGARS|AGATE|AGAVE|AGENT|AGGAH|AGILE|AGING|AGLEY|AGLOW|AGOBL|AGONE|AGONY|AGORA|AGREE|AGUES|AHEAD|AHHHH|AHOLD|AHOYS|AHWEN|AIDED|AIDER|AIDES|AILED|AIMED|AIMER|AIOLI|AIRED|AIRER|AISLE|AITCH|AJUGA|ALACK|ALAIN|ALARM|ALBUM|ALDER|ALECK|ALEPH|ALERT|ALGAE|ALGAL|ALGIN|ALIAS|ALIBI|ALIEN|ALIGN|ALIKE|ALIVE|ALKYD|ALKYL|ALLAY|ALLEY|ALLOT|ALLOW|ALLOY|ALLUM|ALLYE|ALOES|ALOFT|ALOHA|ALONE|ALONG|ALOOF|ALOUD|ALPHA|ALRET|ALRIS|ALTAR|ALTER|ALTHO|ALTOS|ALUMS|ALUNE|ALVAR|ALWAY|ALYDA|AMAHS|AMASS|AMAZE|AMBER|AMBIT|AMBLE|AMEBA|AMEND|AMENS|AMIDE|AMIGO|AMINE|AMINO|AMISS|AMITY|AMMOS|AMONG|AMOUR|AMPED|AMPLE|AMPLY|AMUCK|AMUSE|AMYLS|ANDED|ANDOR|ANENT|ANEUS|ANGEL|ANGEM|ANGER|ANGLE|ANGRY|ANGST|ANIEK|ANILE|ANIMA|ANION|ANISE|ANISI|ANKHS|ANKLE|ANLAS|ANNAS|ANNEX|ANNOY|ANNUL|ANNUM|ANODE|ANOLE|ANTED|ANTES|ANTIC|ANTIS|ANTOC|ANTSY|ANVIL|AODIN|AORTA|AOURN|APACE|APART|APERS|APHID|APHIS|APIAN|APING|APISH|APNEA|APORT|APPLE|APPLY|APRIL|APRON|APSES|APSOS|APTLY|AQUAE|AQUAS|ARBOR|ARCED|ARDOR|ARDYS|AREAL|AREAS|AREKO|ARENA|ARENT|ARGON|ARGOT|ARGUE|ARHAT|ARIAS|ARINE|ARISE|ARITY|ARIYA|ARJEN|ARMED|ARMOR|AROMA|AROSE|ARPIA|ARRAS|ARRAY|ARROW|ARSES|ARSON|ARTHE|ARTSY|ARUMS|ARUNA|ASANA|ASCOT|ASHEN|ASHES|ASIDE|ASINI|ASKED|ASKER|ASKEW|ASMAR|ASPEN|ASPIC|ASSAI|ASSAY|ASSED|ASSES|ASSET|ASTER|ASTIR|ASTRO|ATHAN|ATILT|ATLAS|ATOLL|ATOMS|ATONE|ATRAI|ATRIA|ATTAR|ATTIC|ATUEN|ATVUS|AUDIO|AUDIT|AUGER|AUGHT|AUGUR|AULES|AUNTS|AURAE|AURAL|AURAS|AURIC|AUTOS|AVAAR|AVAEV|AVAIL|AVANT|AVAST|AVEDA|AVERS|AVERT|AVIAN|AVLEA|AVNEL|AVOID|AVOWS|AVREN|AVRII|AVTIK|AWAIT|AWAKE|AWARD|AWARE|AWASH|AWAYS|AWFUL|AWING|AWKSA|AWOKE|AXELS|AXIAL|AXING|AXIOM|AXLED|AXLES|AXMAN|AXMEN|AXONS|AYINS|AYLAY|AYSTA|AZDAR|AZINE|AZOIC|AZUME|AZURE|BABEL|BABES|BACKS|BACON|BADDY|BADGE|BADLY|BAERN|BAGEL|BAGGY|BAHTS|BAILS|BAINS|BAIRN|BAITS|BAIZE|BAKED|BAKER|BAKES|BALAM|BALDS|BALDY|BALED|BALER|BALES|BALKS|BALKY|BALLS|BALLY|BALMS|BALMY|BALSA|BANAL|BANDS|BANDY|BANES|BANGS|BANII|BANJO|BANKS|BANNS|BARBS|BARDS|BARED|BARER|BARES|BARFS|BARFY|BARGE|BARIC|BARKS|BARKY|BARMS|BARMY|BARNS|BARON|BASAL|BASED|BASER|BASES|BASIC|BASIL|BASIN|BASIR|BASIS|BASKS|BASSI|BASSO|BASTE|BATCH|BATED|BATES|BATHE|BATHS|BATIK|BATON|BATTY|BAUDS|BAULK|BAWDY|BAWLS|BAYED|BAYOU|BAZAR|BEACH|BEADS|BEADY|BEAKS|BEAKY|BEAMS|BEAMY|BEANO|BEANS|BEARD|BEARS|BEAST|BEATS|BEAUS|BEAUT|BEAUX|BEBOP|BEBUG|BECKS|BEDAN|BEDEW|BEDIM|BEECH|BEEFS|BEEFY|BEEPS|BEERS|BEERY|BEETS|BEFIT|BEFOG|BEGAN|BEGAT|BEGET|BEGIN|BEGOT|BEGUN|BEIGE|BEING|BELAY|BELCH|BELEA|BELIE|BELLE|BELLI|BELLS|BELLY|BELOW|BELTS|BENCH|BENDS|BENTS|BEORT|BERAN|BERET|BERGS|BERMS|BERRY|BERTH|BERYL|BESET|BESOT|BESTS|BETAS|BETEL|BETHS|BEVEL|BEZEL|BHANG|BHOYS|BIBBS|BIBLE|BIDDY|BIDED|BIDER|BIDES|BIDET|BIERS|BIFFS|BIFFY|BIGGY|BIGHT|BIGLY|BIGOT|BIKED|BIKER|BIKES|BILES|BILGE|BILGY|BILKS|BILLS|BILLY|BIMBO|BINDS|BINGE|BINGO|BIOME|BIPED|BIPOD|BIRCH|BIRDS|BIRTH|BISON|BITCH|BITER|BITES|BITSY|BITTY|BIZAR|BKKKM|BLABS|BLACK|BLADE|BLAHS|BLAME|BLAND|BLANK|BLARE|BLASH|BLAST|BLATS|BLAZE|BLEAK|BLEAR|BLEAT|BLEBS|BLEED|BLEND|BLESS|BLEST|BLIMP|BLIND|BLINI|BLINK|BLIPS|BLISS|BLITZ|BLOAT|BLOBS|BLOCK|BLOCS|BLOKE|BLOND|BLOOD|BLOOM|BLOTS|BLOWN|BLOWS|BLOWY|BLUED|BLUER|BLUES|BLUFF|BLUNT|BLURB|BLURS|BLURT|BLUSH|BOARD|BOARS|BOAST|BOATS|BOBBY|BOCCE|BOCCI|BOCKS|BODED|BODES|BODGE|BODIE|BOFFO|BOFFS|BOGEY|BOGGY|BOGIE|BOGUS|BOILS|BOLAS|BOLLS|BOLOS|BOLTS|BOMBE|BOMBS|BONDS|BONED|BONER|BONES|BONGO|BONGS|BONKS|BONNE|BONNY|BONUS|BOOBS|BOOBY|BOOED|BOOKS|BOOKY|BOOMS|BOOMY|BOONS|BOORS|BOOST|BOOTH|BOOTS|BOOTY|BOOZE|BOOZY|BORAX|BORED|BORER|BORES|BORIC|BORNE|BORON|BOSKY|BOSOM|BOSON|BOSSA|BOSSY|BOSUN|BOTCH|BOTHY|BOTUK|BOUGH|BOULE|BOUND|BOUTS|BOWED|BOWEL|BOWER|BOWIE|BOWLS|BOXED|BOXER|BOXES|BOZOS|BRACE|BRACK|BRACT|BRADS|BRAES|BRAGS|BRAID|BRAIN|BRAKE|BRAND|BRANS|BRANT|BRASH|BRASS|BRATH|BRATS|BRAUN|BRAVA|BRAVE|BRAVO|BRAWL|BRAWN|BRAYS|BRAZE|BREAD|BREAK|BREAM|BREED|BRENT|BREVE|BREWS|BRIAR|BRIBE|BRICK|BRIDE|BRIEF|BRIER|BRIES|BRIGS|BRIMS|BRINE|BRING|BRINK|BRINY|BRISK|BROAD|BROIL|BROKE|BROMO|BRONC|BRONX|BROOD|BROOK|BROOM|BROTH|BROWN|BROWS|BRUIN|BRUIT|BRUNG|BRUNT|BRUSH|BRUSK|BRUTE|BUBBA|BUCCA|BUCKS|BUDDY|BUDGE|BUENA|BUENO|BUFFA|BUFFO|BUFFS|BUGGY|BUGLE|BUILD|BUILT|BULBS|BULGE|BULGY|BULKS|BULKY|BULLS|BULLY|BUMPH|BUMPS|BUMPY|BUNCH|BUNCO|BUNDS|BUNGS|BUNKO|BUNKS|BUNNY|BUNTS|BUOYS|BURET|BURGS|BURIN|BURLS|BURLY|BURNS|BURNT|BURPS|BURRO|BURRS|BURRY|BURST|BUSBY|BUSED|BUSES|BUSHY|BUSKS|BUSTS|BUSTY|BUTCH|BUTTE|BUTTS|BUTYL|BUUWL|BUXOM|BUYER|BUZZY|BWANA|BXXAS|BYLAW|BYRES|BYTES|BYWAY|CABAL|CABBY|CABIN|CABLE|CACAO|CACHE|CACTI|CADDY|CADET|CADGE|CADRE|CAFES|CAGED|CAGER|CAGES|CAGEY|CAIRN|CAKED|CAKES|CALIX|CALKS|CALLA|CALLS|CALMS|CALVE|CALYX|CAMEL|CAMEO|CAMPO|CAMPS|CAMPY|CANAL|CANDY|CANED|CANER|CANES|CANNA|CANNY|CANOE|CANON|CANST|CANTO|CANTS|CAPED|CAPER|CAPES|CAPON|CAPOS|CARAT|CARDS|CARED|CARER|CARES|CARET|CARGO|CARME|CARNE|CARNY|CAROB|CAROL|CAROM|CARON|CARPS|CARPY|CARRY|CARTE|CARTS|CARVE|CASAS|CASED|CASES|CASKS|CASTE|CASTS|CASUS|CATCH|CATER|CATTY|CAULK|CAULS|CAUSE|CAVED|CAVES|CAVIL|CAWED|CAWNA|CEASE|CEDAR|CEDED|CEDER|CEDES|CEILS|CELEB|CELLO|CELLS|CENTO|CENTS|CHAFE|CHAFF|CHAGA|CHAID|CHAIN|CHAIR|CHALK|CHAMP|CHANT|CHAOS|CHAPS|CHARD|CHARM|CHARS|CHART|CHARY|CHASE|CHASM|CHATS|CHAWS|CHEAP|CHEAT|CHECK|CHEEK|CHEEP|CHEER|CHEFS|CHERT|CHESS|CHEST|CHEWS|CHEWY|CHICK|CHIDE|CHIEF|CHIFF|CHILD|CHILE|CHILI|CHILL|CHIME|CHIMP|CHINA|CHINE|CHINK|CHINO|CHINS|CHIPS|CHIRP|CHITS|CHIVE|CHOCK|CHOIR|CHOKE|CHOMP|CHOOS|CHOPS|CHORD|CHORE|CHOSE|CHOWS|CHRIS|CHUCK|CHUFF|CHUGS|CHUMP|CHUMS|CHUNK|CHURL|CHURN|CHUTE|CIDER|CIGAR|CILIA|CILLS|CINCH|CIRCA|CIRRI|CITED|CITES|CITYS|CIVET|CIVIC|CIVIL|CIVVY|CLACK|CLADS|CLAIM|CLAMP|CLAMS|CLANG|CLANK|CLANS|CLAPS|CLASH|CLASP|CLASS|CLAVE|CLAWS|CLAYS|CLEAN|CLEAR|CLEAT|CLEFS|CLEFT|CLERK|CLEWS|CLICK|CLIFF|CLIMB|CLIME|CLING|CLINK|CLIPS|CLOAK|CLOCK|CLODS|CLOGS|CLOMP|CLONE|CLOPS|CLOSE|CLOTH|CLOTS|CLOUD|CLOUT|CLOVE|CLOWN|CLOYS|CLUBS|CLUCK|CLUED|CLUES|CLUMP|CLUNG|CLUNK|COACH|COALS|COAST|COATI|COATS|COBRA|COCAS|COCCI|COCKS|COCKY|COCOA|COCOS|CODAS|CODED|CODER|CODES|CODEX|CODON|COEDS|COHOS|COIFS|COILS|COINS|COKED|COKES|COLAS|COLDS|COLIC|COLON|COLOR|COLTS|COMAS|COMBO|COMBS|COMER|COMES|COMET|COMFY|COMIC|COMMA|COMPS|CONCH|CONDO|CONED|CONES|CONEY|CONGA|CONIC|CONKS|COOCH|COOED|COOKS|COOKY|COOLS|COONS|COOPS|COOTS|COPED|COPER|COPES|COPRA|COPSE|COQUI|CORAL|CORDS|CORDY|CORED|CORER|CORES|CORGI|CORIK|CORKS|CORKY|CORMS|CORNS|CORNU|CORNY|CORPS|COSET|COSTA|COSTS|COTES|COTTA|COUCH|COUGH|COULD|COUNT|COUPE|COUPS|COURT|COUTH|COVEN|COVER|COVES|COVET|COVEY|COWED|COWER|COWLS|COWRY|COXED|COXES|COYER|COYLY|COYPU|COZEN|CRABS|CRACK|CRAFT|CRAGS|CRAMP|CRAMS|CRANE|CRANK|CRAPS|CRASH|CRASS|CRATE|CRAVE|CRAWL|CRAWS|CRAZE|CRAZY|CREAK|CREAM|CREDO|CREED|CREEK|CREEL|CREEP|CREME|CREPE|CREPT|CRESS|CREST|CREWS|CRIBS|CRICK|CRIED|CRIER|CRIES|CRIME|CRIMP|CRINK|CRISP|CRITS|CROAK|CROCK|CROCS|CROFF|CROFT|CRONE|CRONY|CROOK|CROON|CROPS|CROSS|CROUP|CROWD|CROWN|CROWS|CRUDE|CRUDS|CRUEL|CRUET|CRUFT|CRUMB|CRUMP|CRUSE|CRUSH|CRUST|CRYPT|CUBBY|CUBED|CUBER|CUBES|CUBIC|CUBIT|CUFFS|CUING|CUKES|CULLS|CULPA|CULTS|CUMIN|CUNTS|CUPID|CUPPA|CUPPY|CURBS|CURDS|CURDY|CURED|CURER|CURES|CURIA|CURIE|CURIO|CURLS|CURLY|CURRY|CURSE|CURVE|CURVY|CUSHY|CUSKA|CUSPS|CUSPY|CUTER|CUTIE|CUTTA|CUTUP|CYCAD|CYCLE|CYNIC|CYSTS|CZARS|DACHA|DADDY|DADOS|DAFFY|DAILY|DAIRY|DAISY|DALAR|DALES|DALLY|DAMES|DAMNS|DAMPS|DANCE|DANDY|DARED|DARER|DARES|DARKS|DARKY|DARNS|DARTS|DARVA|DASHY|DATED|DATER|DATES|DATUM|DAUBS|DAUNT|DAVIT|DAWNS|DAZED|DAZES|DEADS|DEALS|DEALT|DEANS|DEARS|DEARY|DEATH|DEBAR|DEBIT|DEBTS|DEBUG|DEBUT|DECAF|DECAL|DECAY|DECKS|DECOR|DECOY|DECRY|DEEDS|DEEMS|DEEPS|DEFER|DEFOG|DEFUN|DEGAS|DEGUM|DEICE|DEIFY|DEIGN|DEINS|DEISM|DEIST|DEITY|DEIVA|DELAY|DELFT|DELIS|DELLS|DELTA|DELVE|DEMIN|DEMIT|DEMON|DEMOS|DEMUR|DENIM|DENSE|DENTS|DEPOT|DEPTH|DEQUE|DERBY|DESEX|DESKS|DETER|DEUCE|DEVIL|DEWED|DEWEY|DHOWS|DIALS|DIARY|DIAZO|DICED|DICER|DICES|DICEY|DICKS|DICKY|DICOT|DICTA|DICTU|DICUT|DIDDY|DIDNT|DIDOS|DIDOT|DIDST|DIEMS|DIEST|DIETH|DIETS|DIGIT|DIKED|DIKES|DILDO|DILLS|DILLY|DIMER|DIMES|DIMLY|DINAR|DINED|DINER|DINES|DINGO|DINGS|DINGY|DINKS|DINKY|DINTS|DIODE|DIPPY|DIPSO|DIRER|DIRGE|DIRKS|DIRTS|DIRTY|DISCO|DISCS|DISHY|DISKS|DITCH|DITTO|DITTY|DIVAN|DIVAS|DIVED|DIVER|DIVES|DIVOT|DIVVY|DIXIT|DIZZY|DJINN|DOBEK|DOCKS|DODGE|DODGY|DODOS|DOERS|DOEST|DOETH|DOFFS|DOGES|DOGGO|DOGGY|DOGIE|DOGMA|DOILY|DOING|DOLCE|DOLED|DOLES|DOLLS|DOLLY|DOLOR|DOLTS|DOMED|DOMES|DONEE|DONNA|DONOR|DONUT|DOOMS|DOORS|DOOZY|DOPED|DOPER|DOPES|DOPEY|DORKS|DORKY|DORMS|DOSED|DOSER|DOSES|DOTED|DOTER|DOTES|DOTTY|DOUBT|DOUGH|DOUSE|DOVES|DOVEY|DOWDY|DOWEL|DOWER|DOWNS|DOWNY|DOWRY|DOWSE|DOXIE|DOYEN|DOZED|DOZEN|DOZER|DOZES|DRABS|DRAFT|DRAGS|DRAIN|DRAKE|DRAMA|DRAMS|DRANK|DRAPE|DRAUS|DRAWL|DRAWN|DRAWS|DRAYS|DREAD|DREAM|DREAR|DRECK|DREGS|DRESS|DRIBS|DRIED|DRIER|DRIES|DRIFT|DRILL|DRILY|DRINK|DRIPS|DRIVE|DRJPG|DROID|DROLL|DRONE|DROOL|DROOP|DROPS|DROSS|DROVE|DROWN|DRUBS|DRUGS|DRUID|DRUMS|DRUNK|DRYAD|DRYER|DRYLY|DUALS|DUCAL|DUCAT|DUCES|DUCHY|DUCKS|DUCKY|DUCTS|DUDDY|DUDES|DUELS|DUETS|DUFFS|DUGIN|DUKES|DULLS|DULLY|DULSE|DUMMY|DUMPS|DUMPY|DUNCE|DUNES|DUNGS|DUNGY|DUNKS|DUNNO|DUOMO|DUPED|DUPER|DUPES|DUPLE|DURST|DUSKS|DUSKY|DUSTS|DUSTY|DUTCH|DUVAC|DUVET|DWARF|DWEEB|DWELL|DWELT|DYADS|DYAUS|DYERS|DYING|DYKES|DYNES|DZIVE|DZREE|EADOS|EAGER|EAGLE|EARED|EARLS|EARLY|EARNS|EARTH|EASED|EASEL|EASES|EASTS|EATEN|EATER|EAVES|EBBED|EBONY|EBOTS|ECHOS|ECLAT|EDEMA|EDGED|EDGER|EDGES|EDICT|EDIFY|EDITS|EDUCE|EERIE|EGADS|EGGED|EGGER|EGRET|EIDER|EIGHT|EJECT|EKING|ELAND|ELANS|ELATE|ELBOW|ELDER|ELECT|ELEGY|ELFIN|ELIDE|ELITE|ELOPE|ELSES|ELUDE|ELVEN|ELVES|EMAIL|EMBED|EMBER|EMCEE|EMEND|EMERY|EMIIL|EMIRS|EMITS|EMOJI|EMOTE|EMPTY|ENACT|ENDED|ENDER|ENDIA|ENDOW|ENDUE|ENEMA|ENEMY|ENJOY|ENNUI|ENROL|ENSUE|ENTER|ENTRY|ENVOI|ENVOY|EPACT|EPATO|EPEES|EPHAH|EPHOD|EPICS|EPOCH|EPOXY|EPSOM|EQUAL|EQUIP|ERASE|ERECT|ERODE|ERRED|ERROR|ERUCT|ERUPT|ESSAY|ESSES|ESTER|ESTOP|ETEXT|ETHER|ETHIC|ETHOS|ETHYL|ETUDE|EVADE|EVENS|EVENT|EVERY|EVICT|EVILS|EVOKE|EXACT|EXALT|EXAMS|EXCEL|EXCON|EXEAT|EXECS|EXERT|EXILE|EXIST|EXITS|EXPAT|EXPEL|EXPOS|EXTOL|EXTRA|EXUDE|EXULT|EXURB|EYERS|EYING|EYRIE|FABLE|FACED|FACER|FACES|FACET|FACIE|FACTO|FACTS|FADDY|FADED|FADER|FADES|FAERY|FAGOT|FAILS|FAINT|FAIRE|FAIRS|FAIRY|FAITH|FAKED|FAKER|FAKES|FAKIR|FALLS|FAMED|FAMES|FANCY|FANGS|FANIN|FANNY|FARAD|FARCE|FARED|FARES|FARMS|FARNS|FARTS|FASTS|FATAL|FATED|FATES|FATLY|FATSO|FATTY|FATWA|FAULT|FAUNA|FAUNS|FAVOR|FAWNS|FAWNY|FAXED|FAXER|FAXES|FAZED|FAZES|FEARS|FEAST|FEATS|FECAL|FECES|FEEDS|FEELS|FEIGN|FEINT|FEIST|FELLA|FELLS|FELON|FELTS|FEMME|FEMUR|FENCE|FENDS|FENNY|FERAL|FERMI|FERNS|FERNY|FERRY|FESTS|FETAL|FETCH|FETED|FETES|FETID|FETOR|FETUS|FEUAR|FEUDS|FEUED|FEVER|FEWER|FIATS|FIBER|FIBRE|FICHE|FICHU|FIEFS|FIELD|FIEND|FIERY|FIFES|FIFTH|FIFTY|FIGHT|FILAR|FILCH|FILED|FILER|FILES|FILET|FILLS|FILLY|FILMS|FILMY|FILTH|FINAL|FINCH|FINDS|FINED|FINER|FINES|FINIF|FINIS|FINKS|FINNY|FIORD|FIRED|FIRER|FIRES|FIRMA|FIRMS|FIRST|FIRTH|FISHY|FISTS|FISTY|FITLY|FIVER|FIVES|FIXED|FIXER|FIXES|FIXIT|FIZZY|FJORD|FLABS|FLACK|FLAGS|FLAIL|FLAIR|FLAKE|FLAKS|FLAKY|FLAME|FLAMS|FLANK|FLAPS|FLARE|FLASH|FLASK|FLATS|FLAWS|FLAYS|FLEAS|FLECK|FLEES|FLEET|FLESH|FLICK|FLICS|FLIED|FLIER|FLIES|FLING|FLINT|FLIPS|FLIRT|FLITS|FLOAT|FLOCK|FLOES|FLOGS|FLOOD|FLOOR|FLOPS|FLORA|FLOSS|FLOUR|FLOUT|FLOWN|FLOWS|FLUBS|FLUES|FLUFF|FLUID|FLUKE|FLUKY|FLUME|FLUNG|FLUNK|FLUSH|FLUTE|FLYBY|FLYER|FOALS|FOAMS|FOAMY|FOCAL|FOCUS|FOGEY|FOGGY|FOILS|FOIST|FOLDS|FOLIA|FOLIC|FOLIO|FOLKS|FOLKY|FOLLY|FONDU|FONTS|FOODS|FOOLS|FOOTS|FORAY|FORCE|FORDS|FORES|FORGE|FORGO|FORIL|FORKS|FORKY|FORMA|FORMS|FORTE|FORTH|FORTS|FORTY|FORUM|FOSSA|FOSSE|FOULS|FOUND|FOUNT|FOURS|FOVEA|FOWLS|FOXED|FOXES|FOYER|FRAIL|FRAME|FRANC|FRANK|FRATS|FRAUD|FRAYS|FREAK|FREED|FREER|FREES|FRESH|FRETS|FRIAR|FRIED|FRIER|FRIES|FRIGS|FRILL|FRISK|FRIZZ|FROCK|FROGS|FROND|FRONT|FROSH|FROST|FROTH|FROWN|FROZE|FRUIT|FRUMP|FRYER|FTPED|FUAHL|FUCKS|FUDGE|FUDGY|FUELS|FUGAL|FUGIT|FUGUE|FULLS|FULLY|FUMED|FUMER|FUMES|FUNDS|FUNGI|FUNGO|FUNKS|FUNKY|FUNNY|FURLS|FUROR|FURRY|FURZE|FUSED|FUSEE|FUSES|FUSSY|FUSTY|FUTON|FUZED|FUZES|FUZZY|GABBY|GABLE|GAFFE|GAFFS|GAGES|GAILY|GAINS|GAITS|GALAS|GALEN|GALES|GALLS|GAMBA|GAMED|GAMER|GAMES|GAMEY|GAMIC|GAMIN|GAMMA|GAMUT|GANEF|GANGS|GAOLS|GAPED|GAPER|GAPES|GAPPY|GARBS|GARDE|GASES|GASPS|GASSY|GATED|GATES|GATOR|GAUDY|GAUGE|GAUNT|GAUSS|GAUZE|GAUZY|GAVEL|GAWKS|GAWKY|GAYER|GAYLY|GAZED|GAZER|GAZES|GEARS|GECKO|GEEKS|GEESE|GELDS|GENES|GENET|GENIE|GENII|GENRE|GENTS|GENUS|GEODE|GEOID|GERMS|GESSO|GETHA|GETUP|GHAST|GHOST|GHOTI|GHOUL|GIANT|GIBED|GIBER|GIBES|GIDDY|GIDII|GIESA|GIFTS|GIGAS|GIGUE|GILDS|GILLS|GILTS|GIMEL|GIMME|GIMPS|GIMPY|GINNY|GIPSY|GIRDS|GIRLS|GIRLY|GIROS|GIRTH|GIRTS|GISMO|GISTS|GIVEN|GIVER|GIVES|GIZMO|GLADE|GLADS|GLAES|GLAND|GLANS|GLARE|GLARY|GLASS|GLAZE|GLEAM|GLEAN|GLEBE|GLEES|GLENS|GLIDE|GLINT|GLITZ|GLOAT|GLOBE|GLOBS|GLOMS|GLOOM|GLORY|GLOSS|GLOVE|GLOWS|GLUED|GLUER|GLUES|GLUEY|GLUON|GLUTS|GLYPH|GMNPC|GNARL|GNASH|GNATS|GNAWS|GNOME|GOADS|GOALS|GOATS|GODLY|GOERS|GOEST|GOETH|GOFER|GOING|GOLDS|GOLEM|GOLFS|GOLLY|GONAD|GONER|GONGS|GONNA|GONZO|GOODS|GOODY|GOOEY|GOOFS|GOOFY|GOOKS|GOOKY|GOONS|GOONY|GOOPY|GOOSE|GOOSY|GORED|GORES|GORGE|GORSE|GOTHS|GOTTA|GOUDA|GOUGE|GOURD|GOUTS|GOUTY|GOWNS|GOYIM|GRABS|GRACE|GRADE|GRADS|GRAFT|GRAIL|GRAIN|GRAMS|GRAND|GRANT|GRAPE|GRAPH|GRAPY|GRASP|GRASS|GRATA|GRATE|GRAVE|GRAVY|GRAYS|GRAZE|GREAT|GREBE|GREED|GREEK|GREEN|GREET|GRELL|GREPS|GREWD|GREYS|GRIDS|GRIEF|GRIFT|GRILL|GRIME|GRIMY|GRIND|GRINS|GRIPE|GRIPS|GRIST|GRITS|GROAN|GROAT|GRODY|GROGS|GROIN|GROKS|GRONK|GROOK|GROOM|GROPE|GROSS|GROUP|GROUT|GROVE|GROWL|GROWN|GROWS|GRUBS|GRUEL|GRUFF|GRUMP|GRUNT|GUANO|GUARD|GUAVA|GUESS|GUEST|GUIDE|GUILD|GUILE|GUILT|GUISE|GULAG|GULCH|GULES|GULFS|GULLS|GULLY|GULPS|GUMBO|GUMMY|GUNKS|GUNKY|GUNNY|GUPPY|GURUS|GUSHY|GUSTO|GUSTS|GUSTY|GUTSY|GUTTA|GUTTY|GUYED|GWETH|GWINE|GYPPY|GYPSY|GYROS|GYVED|GYVES|HABIT|HACKS|HADDA|HADES|HADNT|HADST|HAFTA|HAFTS|HAFWA|HAIKU|HAILS|HAIRS|HAIRY|HALED|HALER|HALES|HALLO|HALLS|HALMA|HALOS|HALTS|HALVE|HAMES|HAMMY|HAMZA|HANDS|HANDY|HANGS|HANKS|HANKY|HAPAX|HAPLY|HAPPY|HARDY|HAREM|HARES|HARKS|HARMS|HARPS|HARPY|HARRY|HARSH|HARTS|HARUM|HASNT|HASPS|HASTE|HASTY|HATCH|HATED|HATER|HATES|HAULS|HAUNT|HAUTE|HAVEN|HAVES|HAVOC|HAWED|HAWKS|HAYED|HAYER|HAYEY|HAZED|HAZEL|HAZER|HAZES|HEADS|HEADY|HEALS|HEAPS|HEARD|HEARS|HEART|HEATH|HEATS|HEAVE|HEAVY|HEDGE|HEEDS|HEELS|HEERD|HEFTS|HEFTY|HEIGH|HEIRS|HEIST|HELIX|HELLO|HELLS|HELMS|HELPS|HEMPS|HEMPY|HENCE|HENGE|HENNA|HENRY|HERBS|HERBY|HERDS|HEREM|HERES|HERON|HEROS|HERTZ|HESHE|HEWED|HEWER|HEXAD|HEXED|HEXER|HEXES|HHRKI|HICKS|HIDER|HIDES|HIGHS|HIKED|HIKER|HIKES|HILAR|HILLS|HILLY|HILTS|HILUM|HIMBO|HINDS|HINGE|HINTS|HIPPO|HIPPY|HIRED|HIRER|HIRES|HITCH|HIVED|HIVER|HIVES|HOAGY|HOARD|HOARS|HOARY|HOBBY|HOBOS|HOCKS|HOCUS|HODAD|HOERS|HOGAN|HOIST|HOKEY|HOKUM|HOLDS|HOLED|HOLER|HOLES|HOLEY|HOLLY|HOLON|HOMED|HOMER|HOMES|HOMEY|HOMME|HOMOS|HONED|HONER|HONES|HONEY|HONKS|HONKY|HONOR|HOOCH|HOODS|HOOEY|HOOFS|HOOKS|HOOKY|HOOPS|HOOTS|HOPED|HOPER|HOPES|HOPPY|HORDE|HORNS|HORNY|HORSE|HORSY|HOSED|HOSES|HOSTS|HOTEL|HOTLY|HOUND|HOURI|HOURS|HOUSE|HOVEL|HOVER|HOWDY|HOWLS|HUBBA|HUBBY|HUFFS|HUFFY|HUGER|HULAS|HULKS|HULKY|HULLO|HULLS|HUMAN|HUMID|HUMOR|HUMPF|HUMPH|HUMPS|HUMPY|HUMUS|HUNCH|HUNKS|HUNKY|HUNTS|HURLS|HURLY|HURRY|HURTS|HUSKS|HUSKY|HUSSY|HUTCH|HUZZA|HYDRA|HYDRO|HYENA|HYING|HYMEN|HYMNS|HYPED|HYPER|HYPES|HYPOS|IAMBS|IAZEN|IBBST|ICERS|ICHOR|ICIER|ICILY|ICING|ICONS|ICUTU|IDEAL|IDEAS|IDIOM|IDIOT|IDLED|IDLER|IDLES|IDOLS|IDONS|IDYLL|IDYLS|IGLOO|IKATS|IKONS|ILAYA|ILEUM|ILEUS|ILIAC|ILIUM|IMAGE|IMAGO|IMAMS|IMBED|IMBUE|IMMIX|IMPEL|IMPLY|IMPRO|INANE|INAPT|INCUR|INDEX|INDIE|INEPT|INERT|INFER|INFIX|INFRA|INGOT|INJUN|INKED|INKER|INLAY|INLET|INNER|INODE|INPUT|INSET|INTER|INTRA|INTRO|INURE|IOCTL|IODIC|IONIC|IOTAS|IRATE|IRKED|IRNAN|IRONS|IRONY|ISEUM|ISLES|ISLET|ISSUE|ITCHY|ITEMS|IVIED|IVIES|IVORY|IXAEM|IXNAY|JACKS|JADED|JADES|JAGGY|JAILS|JAKES|JAMBS|JAMMY|JANES|JAPAN|JARES|JAUNT|JAVAC|JAWED|JAZZY|JEANS|JEEPS|JEERS|JELLO|JELLS|JELLY|JENNY|JERKS|JERKY|JERRY|JESTS|JETTY|JEWEL|JIBED|JIBER|JIBES|JIFFS|JIFFY|JIHAD|JILTS|JIMMY|JINGO|JINGS|JINKS|JINNS|JIVED|JIVES|JOCKS|JOEYS|JOHNS|JOINS|JOINT|JOIST|JOKED|JOKER|JOKES|JOLAS|JOLLY|JOLTS|JOMAY|JOULE|JOUST|JOWLS|JOWLY|JOYED|JUDGE|JUDOS|JUICE|JUICY|JUJUS|JUKES|JULEP|JUMBO|JUMPS|JUMPY|JUNCO|JUNKS|JUNKY|JUNTA|JUROR|JUSTE|JUTES|KABOB|KAIAK|KAITH|KALAG|KALEN|KALES|KAPOK|KAPPA|KAPUT|KARAT|KARMA|KAYAK|KAYOS|KAZOO|KEBAB|KEBOB|KEELS|KEENS|KEEPS|KEFIR|KELLY|KELPS|KELPY|KENAF|KEPIS|KERBS|KERFS|KERNS|KETCH|KEYED|KEYER|KHAKI|KHANS|KHRIS|KICKS|KICKY|KIDDO|KIIJA|KIKES|KILLS|KILNS|KILOS|KILTS|KILTY|KINDA|KINDS|KINGS|KINKS|KINKY|KIOSK|KIRKS|KITED|KITES|KITHS|KITTY|KIVAS|KIWIS|KLIEG|KLUGE|KLUGY|KLUNK|KLUTZ|KNACK|KNAVE|KNEAD|KNEED|KNEEL|KNEES|KNELL|KNELT|KNIFE|KNISH|KNITS|KNOBS|KNOCK|KNOLL|KNOPS|KNOTS|KNOUT|KNOWN|KNOWS|KNURL|KOALA|KOINE|KOOKS|KOOKY|KOPEK|KOROR|KRAAL|KRAEL|KRAUT|KRILL|KRONA|KRONE|KUDOS|KUDZU|KULAK|KYRIE|LABEL|LABIA|LABOR|LACED|LACER|LACES|LACEY|LACKS|LADED|LADEN|LADES|LADLE|LADOC|LAGER|LAIRD|LAIRS|LAITY|LAKER|LAKES|LAMAS|LAMBS|LAMED|LAMER|LAMES|LAMPS|LANAI|LANCE|LANDS|LANES|LANKY|LAPEL|LAPIN|LAPIS|LAPSE|LARCH|LARDS|LARDY|LARGE|LARGO|LARKS|LARVA|LASED|LASER|LASES|LASSO|LASTS|LATCH|LATER|LATEX|LATHE|LATHS|LATIN|LATUS|LAUDE|LAUDS|LAUGH|LAVAS|LAVED|LAVER|LAVES|LAWNS|LAWNY|LAWZY|LAXER|LAXLY|LAYER|LAYUP|LAZED|LAZES|LEACH|LEADS|LEAFS|LEAFY|LEAKS|LEAKY|LEANS|LEANT|LEAPS|LEAPT|LEARN|LEASE|LEASH|LEAST|LEAVE|LEDGE|LEECH|LEEKS|LEERS|LEERY|LEFTS|LEFTY|LEGAL|LEGGO|LEGGY|LEGIT|LEGOS|LEMMA|LEMME|LEMON|LEMUR|LENDS|LENTO|LEPER|LEPTA|LETUP|LEVEE|LEVEL|LEVER|LEVIS|LIARS|LIBEL|LIBRA|LICIT|LICKS|LIEGE|LIENS|LIERS|LIEST|LIETH|LIFER|LIFTS|LIGHT|LIGNE|LIKED|LIKEN|LIKER|LIKES|LILAC|LILTS|LILTY|LIMBO|LIMBS|LIMBY|LIMED|LIMEN|LIMES|LIMEY|LIMIT|LIMNS|LIMOS|LIMPS|LINED|LINEN|LINER|LINES|LINGO|LINGS|LINKS|LINTS|LINTY|LIONS|LIPID|LIPPY|LIRAS|LIRUM|LISLE|LISPS|LISTS|LITER|LITES|LITHE|LITHO|LITRE|LIVED|LIVEN|LIVER|LIVES|LIVID|LIVRE|LKARM|LLAMA|LOADS|LOAFS|LOAMS|LOAMY|LOANS|LOATH|LOBAR|LOBBY|LOBED|LOBES|LOCAL|LOCHS|LOCKS|LOCOS|LOCUS|LODES|LODGE|LOESS|LOFTS|LOFTY|LOGES|LOGGY|LOGIC|LOGIN|LOGOS|LOINS|LOLLS|LOLLY|LONER|LONGS|LOOKS|LOOKY|LOOMS|LOONS|LOONY|LOOPS|LOOPY|LOOSE|LOOTS|LOPED|LOPER|LOPES|LOPPY|LORDS|LORDY|LORES|LORRY|LOSER|LOSES|LOSSY|LOTSA|LOTTA|LOTTO|LOTUS|LOUIS|LOUSE|LOUSY|LOUTS|LOVED|LOVER|LOVES|LOWED|LOWER|LOWLY|LOXES|LOYAL|LUAUS|LUBES|LUBRA|LUCID|LUCKS|LUCKY|LUCRE|LULAB|LULLS|LULUS|LUMEN|LUMPS|LUMPY|LUNAR|LUNCH|LUNES|LUNGE|LUNGS|LUPUS|LURCH|LURED|LURER|LURES|LURID|LURKS|LUSTS|LUSTY|LUTED|LUTES|LUVYA|LUXES|LYCRA|LYING|LYMPH|LYNCH|LYRAS|LYRES|LYRIC|MACAW|MACED|MACER|MACES|MACHO|MACJA|MACRO|MADAM|MADLY|MAFIA|MAGEN|MAGES|MAGIC|MAGMA|MAGNA|MAGUS|MAHUA|MAIDS|MAILS|MAIMS|MAINS|MAIZE|MAJOR|MAKER|MAKES|MALES|MALKO|MALLS|MALTS|MALTY|MAMAS|MAMBA|MAMBO|MAMMA|MAMMY|MAMNI|MANED|MANES|MANGE|MANGO|MANGY|MANIA|MANIC|MANLY|MANNA|MANOR|MANSE|MANTA|MAPLE|MARCH|MARES|MARGE|MARIA|MARIG|MARKS|MARLS|MARRY|MARSH|MARTS|MASER|MASHY|MASKS|MASON|MASSE|MASTS|MATAR|MATCH|MATED|MATER|MATES|MATEY|MATHS|MATTE|MATZO|MAULS|MAUVE|MAVEN|MAVIS|MAXIM|MAXIS|MAYBE|MAYOR|MAYST|MAZED|MAZER|MAZES|MEADS|MEALS|MEALY|MEANS|MEANT|MEANY|MEATS|MEATY|MEBBE|MECCA|MECHS|MECUM|MEDAL|MEDIA|MEDIC|MEETS|MELBA|MELDS|MELEE|MELON|MELTS|MEMES|MEMOS|MENDS|MENUS|MEOWS|MERCY|MERGE|MERIT|MERRY|MERSE|MESAS|MESNE|MESON|MESSY|METAL|METED|METER|METES|METRE|METRO|MEWED|MEZZO|MIAOW|MICAS|MICKS|MICRO|MIDDY|MIDIS|MIDST|MIELE|MIENS|MIETH|MIEWS|MIFFS|MIGHT|MIKED|MIKES|MILCH|MILER|MILES|MILKS|MILKY|MILLS|MIMED|MIMEO|MIMER|MIMES|MIMIC|MIMSY|MINAS|MINCE|MINDS|MINED|MINER|MINES|MINIM|MINIS|MINKS|MINOR|MINTS|MINUS|MIRED|MIREK|MIRES|MIRTH|MISER|MISSY|MISTS|MISTY|MITER|MITES|MITRE|MITTS|MIXED|MIXER|MIXES|MIXUP|MOANS|MOATS|MOCHA|MOCKS|MODAL|MODEL|MODEM|MODES|MODUS|MOGUL|MOHEL|MOIRE|MOIST|MOLAL|MOLAR|MOLAS|MOLDS|MOLDY|MOLES|MOLLS|MOLLY|MOLTO|MOLTS|MOMMA|MOMMY|MONAD|MONDO|MONEY|MONIC|MONKS|MONTE|MONTH|MOOCH|MOODS|MOODY|MOOED|MOOLA|MOONS|MOONY|MOORS|MOOSE|MOOTS|MOPED|MOPER|MOPES|MORAH|MORAL|MORAY|MOREL|MORES|MORIT|MORNS|MORON|MORPH|MORTS|MORUM|MOSEY|MOSSY|MOSTS|MOTEL|MOTES|MOTET|MOTHS|MOTHY|MOTIF|MOTOR|MOTTO|MOULD|MOULT|MOUND|MOUNT|MOURN|MOUSE|MOUSY|MOUTH|MOVED|MOVER|MOVES|MOVIE|MOWED|MOWER|MOXIE|MRADS|MRISS|MUCHO|MUCKS|MUCKY|MUCUS|MUDDY|MUFFS|MUFTI|MUGGY|MUJIK|MULCH|MULCT|MULES|MULEY|MULLS|MUMBO|MUMMY|MUMPS|MUNCH|MUNGE|MUNGS|MUNGY|MUONS|MURAL|MURKS|MURKY|MUSED|MUSER|MUSES|MUSHY|MUSIC|MUSKS|MUSKY|MUSOS|MUSSY|MUSTA|MUSTS|MUSTY|MUTED|MUTER|MUTES|MUTTS|MUXES|MYLAR|MYNAH|MYNAS|MYRRH|MYTHS|NABLA|NABOB|NACHO|NADIR|NAIAD|NAILS|NAIVE|NAKED|NAMED|NAMER|NAMES|NANNY|NAPES|NAPPY|NARCO|NARCS|NARDS|NARES|NASAL|NASTY|NATAL|NATCH|NATES|NATTY|NAVAL|NAVEL|NAVES|NEARS|NEATH|NEATO|NECKS|NEEDS|NEEDY|NEFIS|NEGRO|NEIGH|NENAV|NEONS|NERDS|NERDY|NERFS|NERTS|NERVE|NERVY|NESTS|NEVER|NEWEL|NEWER|NEWLY|NEWSY|NEWTS|NEXUS|NICAD|NICER|NICHE|NICKS|NIECE|NIFTY|NIGHT|NIHIL|NILME|NIMBI|NINES|NINJA|NINNY|NINTH|NIPOH|NIPPY|NISEI|NISSA|NITER|NITRO|NITTY|NIXED|NIXES|NIXIE|NOBBY|NOBLE|NOBLY|NODAL|NODDY|NODES|NOELS|NOHOW|NOIRE|NOISE|NOISY|NOMAD|NONCE|NONES|NONNY|NOOKS|NOOKY|NOONS|NOOSE|NORMS|NORTH|NOSED|NOSES|NOSEY|NOTCH|NOTED|NOTER|NOTES|NOUNS|NOVAE|NOVAS|NOVEL|NOVUS|NOWAY|NUDER|NUDES|NUDGE|NUDIE|NUKED|NUKES|NULLS|NUMBS|NURBS|NURSE|NUTSY|NUTTY|NYLON|NYMPH|OAKEN|OAKUM|OARED|OASES|OASIS|OATEN|OATHS|OBEAH|OBESE|OBEYS|OBITS|OBOES|OCCUR|OCEAN|OCHER|OCHRE|OCTAL|OCTET|ODDER|ODDLY|ODIUM|ODORS|ODOUR|OFFAL|OFFED|OFFEN|OFFER|OFFON|OFNOR|OFTEN|OGLED|OGLER|OGLES|OGRES|OHHHH|OHMIC|OILED|OILER|OINKS|OINKY|OKAPI|OKAYS|OKNOR|OKRAS|OLDEN|OLDER|OLDIE|OLEOS|OLIOS|OLIVE|OLKAR|OLVIO|OMBRE|OMEGA|OMENS|OMITS|ONCET|ONION|ONSET|OODLE|OOMPH|OOZED|OOZES|OPALS|OPENS|OPERA|OPINE|OPIUM|OPTED|OPTIC|OPYUR|ORALS|ORATE|ORAUS|ORBED|ORBIT|ORCAS|ORDER|ORGAN|ORIIV|ORING|ORLON|ORTHO|OSAEN|OSIER|OSREL|OSVEN|OTHER|OTTER|OUGHT|OUIJA|OUNCE|OUSEL|OUSTS|OUTDO|OUTEN|OUTER|OUTGO|OUTTA|OUZEL|OVALS|OVARY|OVATE|OVENS|OVERS|OVERT|OVOID|OVULE|OWEST|OWETH|OWING|OWLET|OWNED|OWNER|OXBOW|OXEYE|OXIDE|OXLIP|OZONE|PACED|PACER|PACES|PACKS|PACTS|PADDY|PADRE|PAEAN|PAGAN|PAGED|PAGER|PAGES|PAILS|PAINS|PAINT|PAIRS|PALED|PALER|PALES|PALLS|PALLY|PALMS|PALMY|PALSY|PAMPA|PANDA|PANED|PANEL|PANES|PANGA|PANGS|PANIC|PANSY|PANTS|PANTY|PAPAL|PAPAS|PAPAW|PAPER|PAPPY|PARAS|PARCH|PARDS|PARED|PAREN|PARER|PARES|PARKA|PARKS|PARRY|PARSE|PARTS|PARTY|PASHA|PASSE|PASSS|PASTA|PASTE|PASTS|PASTY|PATCH|PATEN|PATER|PATES|PATHS|PATIO|PATSY|PATTY|PAUSE|PAVAN|PAVED|PAVER|PAVES|PAWED|PAWER|PAWKY|PAWLS|PAWNS|PAYED|PAYEE|PAYER|PEACE|PEACH|PEAKS|PEAKY|PEALS|PEARL|PEARS|PEASE|PEATS|PEATY|PECAN|PECKS|PEDAL|PEEKS|PEELS|PEENS|PEEPS|PEERS|PEEVE|PEKOE|PELAN|PELTS|PENAL|PENCE|PENDS|PENES|PENGO|PENIS|PENNY|PEONS|PEONY|PEPPY|PERCH|PERDU|PERIL|PERKS|PERKY|PERMS|PESKY|PESOS|PESTO|PESTS|PETAL|PETER|PETIT|PETRI|PETTY|PEWEE|PEWIT|PFFFT|PHAGE|PHASE|PHIAL|PHLOX|PHONE|PHONY|PHOTO|PHYLA|PIANO|PICAS|PICKS|PICKY|PICOT|PIECE|PIERS|PIETA|PIETY|PIGGY|PIGMY|PIING|PIKER|PIKES|PILAF|PILAU|PILED|PILES|PILLS|PILOT|PIMPS|PINCH|PINED|PINES|PINEY|PINGS|PINKO|PINKS|PINKY|PINTO|PINTS|PINUP|PIONS|PIOUS|PIPED|PIPER|PIPES|PIPET|PIQUE|PISMO|PITAS|PITCH|PITHS|PITHY|PITON|PIVOT|PIVUH|PIXEL|PIXIE|PIZZA|PLACE|PLAID|PLAIN|PLAIT|PLANE|PLANK|PLANS|PLANT|PLASH|PLASM|PLATE|PLATS|PLAYA|PLAYS|PLAZA|PLEAD|PLEAS|PLEAT|PLEBE|PLEBS|PLEIN|PLENA|PLIED|PLIES|PLINK|PLODS|PLONK|PLOPS|PLOTS|PLOWS|PLOYS|PLUCK|PLUGS|PLUMB|PLUME|PLUMP|PLUMS|PLUMY|PLUNK|PLUSH|PLYER|POACH|POCKS|POCKY|PODGY|PODIA|POEMS|POESY|POETS|POINT|POISE|POKED|POKER|POKES|POKEY|POLAR|POLED|POLER|POLES|POLIO|POLIS|POLKA|POLLS|POLLY|POLOS|POLYP|POMPS|PONDS|PONES|POOCH|POOEY|POOFS|POOHS|POOLS|POOPS|POPES|POPPY|PORCH|PORED|PORES|PORGY|PORKS|PORKY|PORNO|PORTS|POSED|POSER|POSES|POSET|POSIT|POSSE|POSTE|POSTS|POTTY|POUCH|POUFS|POUND|POURS|POUTS|POWER|POXED|POXES|PRAMS|PRANK|PRATE|PRATS|PRAWN|PRAYK|PRAYS|PREEN|PREPS|PRESS|PREST|PREXY|PREYS|PRICE|PRICK|PRIDE|PRIED|PRIER|PRIES|PRIGS|PRIMA|PRIME|PRIMO|PRIMP|PRIMS|PRINK|PRINT|PRIOR|PRISE|PRISM|PRIVY|PRIZE|PROBE|PRODS|PROEM|PROFS|PROMO|PROMS|PRONE|PRONG|PROOF|PROPS|PROSE|PROSY|PROUD|PROVE|PROWL|PROWS|PROXY|PRUDE|PRUNE|PRUTA|PRYER|PSALM|PSEUD|PSHAW|PSOAS|PSSST|PSYCH|PUBES|PUBIC|PUBIS|PUCKS|PUDGY|PUFFS|PUFFY|PUKED|PUKES|PUKKA|PULLS|PULPS|PULPY|PULSE|PUMAS|PUMPS|PUNCH|PUNKS|PUNKY|PUNNY|PUNTS|PUPAE|PUPAL|PUPAS|PUPIL|PUPPY|PUREE|PURER|PURGE|PURLS|PURRS|PURSE|PURTY|PUSHY|PUSSY|PUTTS|PUTTY|PYGMY|PYLON|PYRES|PYXIE|QOPHS|QUACK|QUADS|QUAFF|QUAIL|QUAIS|QUAKE|QUALM|QUALS|QUARK|QUART|QUASH|QUASI|QUAYS|QUEEN|QUEER|QUELL|QUERI|QUERY|QUEST|QUEUE|QUICK|QUIDS|QUIET|QUIFF|QUILL|QUILT|QUINT|QUIPS|QUIPU|QUIRE|QUIRK|QUIRT|QUITE|QUITS|QUOIN|QUOIT|QUOTA|QUOTE|QUOTH|RABBI|RABID|RACED|RACER|RACES|RACKS|RADAR|RADII|RADIO|RADIX|RADON|RAESH|RAFTS|RAGED|RAGER|RAGES|RAIDS|RAILS|RAINS|RAINY|RAISE|RAJAH|RAJAS|RAKED|RAKER|RAKES|RALEL|RALLY|RAMPS|RANCH|RANDS|RANDY|RANGE|RANGY|RANIK|RANKS|RANTS|RAPED|RAPER|RAPES|RAPID|RARER|RASAE|RASPS|RASPY|RATED|RATER|RATES|RATHA|RATHS|RATIO|RATTY|RAVED|RAVEL|RAVEN|RAVER|RAVES|RAWER|RAWLY|RAYED|RAYON|RAZED|RAZER|RAZES|RAZOR|REACH|REACT|READS|READY|REALM|REALS|REAMS|REAPS|REARM|REARS|REBAR|REBEL|REBID|REBOX|REBUS|REBUT|RECAP|RECTA|RECTO|RECUR|RECUT|REDID|REDIP|REDLY|REDOX|REDUX|REEDS|REEDY|REEFS|REEKS|REEKY|REELS|REEVE|REFER|REFIT|REFIX|REFLY|REFRY|REGAL|REGEN|REHAB|REIFY|REIGN|REINS|REJUV|RELAX|RELAY|RELET|RELIC|REMAN|REMAP|REMIT|REMIX|RENAL|RENDS|RENEW|RENSH|RENTE|RENTS|REPAY|REPEL|REPLY|REPRO|RERAN|RERUN|RESAW|RESAY|RESET|RESEW|RESIN|RESTS|RESUM|RETAN|RETCH|RETRO|RETRY|REUSE|REVEL|REVET|REVUE|REWED|RHEAS|RHEUM|RHINO|RHOAT|RHUMB|RHYME|RIALS|RIBBY|RICED|RICER|RICES|RIDER|RIDES|RIDGE|RIDGY|RIFER|RIFLE|RIFTS|RIGBY|RIGHT|RIGID|RIGOR|RIINI|RILED|RILES|RILLE|RILLS|RIMED|RIMER|RIMES|RINDS|RINGS|RINKS|RINSE|RIOTS|RIPEN|RIPER|RISEN|RISER|RISES|RISIK|RISKS|RISKY|RITES|RITZY|RIVAL|RIVED|RIVEN|RIVER|RIVES|RIVET|RIVYN|ROACH|ROADS|ROAMS|ROANS|ROARS|ROAST|ROBED|ROBES|ROBIN|ROBLE|ROBOT|ROBYN|ROCKS|ROCKY|RODEO|ROGER|ROGUE|ROIDS|ROILS|ROILY|ROLES|ROLLS|ROMAN|ROMPS|RONDO|ROODS|ROOFS|ROOKS|ROOKY|ROOMS|ROOMY|ROOST|ROOTS|ROOTY|ROPED|ROPER|ROPES|ROSES|ROSIN|ROTOR|ROUGE|ROUGH|ROUND|ROUSE|ROUST|ROUTE|ROUTS|ROVED|ROVER|ROVES|ROWAN|ROWDY|ROWED|ROWER|ROYAL|RUBES|RUBLE|RUCHE|RUDDY|RUDER|RUFFS|RUGBY|RUING|RUINS|RULED|RULER|RULES|RUMBA|RUMEN|RUMMY|RUMOR|RUMPS|RUNES|RUNGS|RUNIC|RUNNY|RUNTS|RUNTY|RUPEE|RURAL|RUSES|RUSKS|RUSSE|RUSTS|RUSTY|RUTTY|SABER|SABLE|SABRA|SABRE|SACKS|SADLY|SAFER|SAFES|SAGAS|SAGER|SAGES|SAHIB|SAHRA|SAILS|SAINT|SAIST|SAITH|SAKES|SALAD|SALES|SALLY|SALON|SALSA|SALTS|SALTY|SALVE|SALVO|SAMBA|SANDS|SANDY|SANER|SANYU|SAPPY|SARAN|SARBU|SARGE|SARIS|SASSY|SATED|SATES|SATIN|SATYR|SAUCE|SAUCY|SAUNA|SAUTE|SAVED|SAVER|SAVES|SAVOR|SAVVY|SAWED|SAWER|SAXES|SAYER|SCABS|SCADS|SCALD|SCALE|SCALP|SCALY|SCAMP|SCAMS|SCANS|SCANT|SCARE|SCARF|SCARP|SCARS|SCARY|SCATS|SCENE|SCENT|SCHMO|SCHWA|SCION|SCOFF|SCOIN|SCOLD|SCONE|SCOOP|SCOOT|SCOPE|SCOPS|SCORE|SCORN|SCOUR|SCOUT|SCOWL|SCOWS|SCRAM|SCRAP|SCREW|SCRIM|SCRIP|SCROD|SCRUB|SCRUM|SCUBA|SCUDI|SCUDO|SCUDS|SCUFF|SCULL|SCUMS|SCURF|SCUSE|SCUZZ|SEALS|SEAMS|SEAMY|SEARS|SEATS|SEBUM|SECCO|SECTS|SEDAN|SEDER|SEDGE|SEDGY|SEDUM|SEEDS|SEEDY|SEEKS|SEEMS|SEEPS|SEERS|SEEST|SEETH|SEGUE|SEIGE|SEINE|SEIZE|SELAH|SELAN|SELFS|SELLS|SEMEN|SEMIS|SENCI|SENDS|SENSE|SEORD|SEPAL|SEPIA|SEPOY|SEPTA|SERFS|SERGE|SERIF|SERUM|SERVE|SERVO|SETUP|SEVAN|SEVEN|SEVER|SEWED|SEWER|SEXED|SEXES|SHACK|SHADE|SHADS|SHADY|SHAFT|SHAGS|SHAHS|SHAKE|SHAKO|SHAKY|SHALE|SHALL|SHALT|SHAME|SHAMS|SHANK|SHAPE|SHARD|SHARE|SHARK|SHARP|SHAVE|SHAWL|SHAWM|SHAYS|SHEAF|SHEAR|SHEDS|SHEEN|SHEEP|SHEER|SHEET|SHEIK|SHELF|SHELL|SHERD|SHEWS|SHIED|SHIER|SHIES|SHIFT|SHIKI|SHILL|SHIMS|SHINE|SHINS|SHINY|SHIPS|SHIRE|SHIRK|SHIRR|SHIRT|SHISH|SHITS|SHLEP|SHMOO|SHNOR|SHOAL|SHOAN|SHOAT|SHOCK|SHOED|SHOER|SHOES|SHOJI|SHONE|SHOOK|SHOOS|SHOOT|SHOPS|SHORE|SHORN|SHORT|SHOTS|SHOUT|SHOVE|SHOWN|SHOWS|SHOWY|SHRED|SHREW|SHRUB|SHRUG|SHUCK|SHUNS|SHUNT|SHUSH|SHUTE|SHUTS|SHYER|SHYLY|SIBYL|SICKO|SICKS|SICLE|SIDED|SIDES|SIDLE|SIEGE|SIEVE|SIFTS|SIGHS|SIGHT|SIGIL|SIGMA|SIGNS|SILKS|SILKY|SILLS|SILLY|SILOS|SILTS|SILTY|SINCE|SINES|SINEW|SINGE|SINGS|SINKS|SINUS|SIRAN|SIRED|SIREE|SIREN|SIRES|SIRUP|SIRYN|SISAL|SISSY|SITAR|SITED|SITES|SITUS|SIXES|SIXTH|SIXTY|SIZED|SIZER|SIZES|SKATE|SKEET|SKEIN|SKEWS|SKIDS|SKIED|SKIER|SKIES|SKIFF|SKILL|SKIMP|SKIMS|SKINS|SKINT|SKIPS|SKIRT|SKITS|SKOAL|SKULK|SKULL|SKUNK|SKYED|SLABS|SLACK|SLAGS|SLAIN|SLAKE|SLAMS|SLANG|SLANT|SLAPS|SLASH|SLATE|SLATS|SLAVE|SLAWS|SLAYS|SLEDS|SLEEK|SLEEP|SLEET|SLEPT|SLEWS|SLICE|SLICK|SLIDE|SLIER|SLILY|SLIME|SLIMS|SLIMY|SLING|SLINK|SLIPS|SLITS|SLOBS|SLOES|SLOGS|SLOMO|SLOOP|SLOPE|SLOPS|SLOSH|SLOTH|SLOTS|SLOWS|SLUED|SLUES|SLUFF|SLUGS|SLUMP|SLUMS|SLUNG|SLUNK|SLURP|SLURS|SLUSH|SLUTS|SLYER|SLYLY|SMACK|SMALL|SMART|SMASH|SMEAR|SMELL|SMELT|SMILE|SMIRK|SMITE|SMITH|SMOCK|SMOGS|SMOKE|SMOKY|SMOTE|SMURF|SMUTS|SNACK|SNAER|SNAFU|SNAGS|SNAIL|SNAKE|SNAKY|SNAPS|SNARE|SNARF|SNARK|SNARL|SNEAK|SNEER|SNIDE|SNIFF|SNIPE|SNIPS|SNITS|SNOBS|SNOOD|SNOOK|SNOOP|SNOOT|SNORE|SNORT|SNOTS|SNOUT|SNOWS|SNOWY|SNUBS|SNUCK|SNUFF|SNUGS|SOAKS|SOAPS|SOAPY|SOARS|SOBER|SOCKO|SOCKS|SOCLE|SODAS|SOFAS|SOFTS|SOFTY|SOGGY|SOILS|SOKIS|SOLAR|SOLED|SOLES|SOLID|SOLON|SOLOS|SOLUM|SOLVE|SOMAS|SONAR|SONGS|SONIC|SONLY|SONNY|SOOTH|SOOTS|SOOTY|SOPPY|SORER|SORES|SORRY|SORTA|SORTS|SOULS|SOUND|SOUPS|SOUPY|SOURS|SOUSE|SOUTH|SOWED|SOWER|SOYAS|SPACE|SPACY|SPADE|SPAKE|SPANG|SPANK|SPANS|SPARE|SPARK|SPARS|SPASM|SPATE|SPATS|SPAWN|SPAYS|SPAZZ|SPEAK|SPEAR|SPECK|SPECS|SPEED|SPELL|SPELT|SPEND|SPENT|SPERM|SPEWS|SPICE|SPICS|SPICY|SPIED|SPIEL|SPIER|SPIES|SPIFF|SPIKE|SPIKY|SPILL|SPILT|SPINA|SPINE|SPINS|SPINY|SPIRE|SPITE|SPITS|SPITZ|SPIVS|SPLAT|SPLAY|SPLIT|SPOIL|SPOKE|SPOOF|SPOOK|SPOOL|SPOON|SPOOR|SPORE|SPORT|SPOTS|SPOUT|SPRAT|SPRAY|SPREE|SPRIG|SPRIT|SPROG|SPRUE|SPUDS|SPUED|SPUME|SPUMY|SPUNK|SPURN|SPURS|SPURT|SPUTA|SQUAB|SQUAD|SQUAT|SQUAW|SQUIB|SQUID|SRAAN|SSUGI|STABS|STACK|STAFF|STAGE|STAGS|STAGY|STAID|STAIN|STAIR|STAKE|STALE|STALK|STALL|STAMP|STAND|STANK|STAPH|STARE|STARK|STARS|START|STASH|STATE|STATS|STAVE|STAYS|STEAD|STEAK|STEAL|STEAM|STEED|STEEL|STEEP|STEER|STEIN|STELA|STELE|STEMS|STENO|STEPS|STERN|STETS|STEWS|STICK|STIED|STIES|STIFF|STILE|STILL|STILT|STING|STINK|STINT|STIRS|STOAE|STOAS|STOAT|STOCK|STOGY|STOIC|STOKE|STOLE|STOMA|STOMP|STONE|STONY|STOOD|STOOL|STOOP|STOPS|STORE|STORK|STORM|STORY|STOUP|STOUT|STOVE|STOWS|STRAP|STRAW|STRAY|STREP|STREW|STRIP|STROP|STRUM|STRUT|STUBS|STUCK|STUDS|STUDY|STUFF|STUMP|STUNG|STUNK|STUNS|STUNT|STURA|STYES|STYLE|STYLI|SUAVE|SUCKS|SUDSY|SUEDE|SUERS|SUETS|SUETY|SUGAR|SUING|SUITE|SUITS|SULFA|SULKS|SULKY|SULLY|SUMAC|SUMMA|SUMPS|SUNNY|SUNUP|SUPER|SUPES|SUPRA|SURAS|SURDS|SURER|SURFS|SURGE|SURLY|SUSHI|SUTRA|SVADH|SWABS|SWAGS|SWAIN|SWAMI|SWAMP|SWANK|SWANS|SWAPS|SWARD|SWARE|SWARF|SWARM|SWART|SWASH|SWATH|SWATS|SWAYS|SWEAR|SWEAT|SWEDE|SWEEP|SWEET|SWELL|SWEPT|SWIFT|SWIGS|SWILL|SWIMS|SWINE|SWING|SWIPE|SWIRL|SWISH|SWISS|SWIVE|SWOON|SWOOP|SWORD|SWORE|SWORN|SWUNG|SYLPH|SYNCH|SYNCS|SYNOD|SYRUP|TABBY|TABLE|TABOO|TABOR|TABUS|TACET|TACIT|TACKS|TACKY|TACOS|TACTS|TAELS|TAFFY|TAGUA|TAILS|TAINT|TAIPA|TAKEN|TAKER|TAKES|TALCS|TALES|TALKS|TALKY|TALLY|TALNA|TALON|TALUS|TAMED|TAMER|TAMES|TAMPS|TANGO|TANGS|TANGY|TANKS|TANSY|TAPED|TAPER|TAPES|TAPIR|TAPIS|TARDY|TARED|TARES|TARNS|TAROS|TAROT|TARPS|TARRY|TARTS|TASKS|TASTE|TASTY|TATER|TATTY|TAUNT|TAUPE|TAWNY|TAXED|TAXER|TAXES|TAXIS|TAXOL|TAXON|TEACH|TEAKS|TEALS|TEAMS|TEARS|TEARY|TEASE|TEATS|TECHS|TECHY|TECUM|TEDDY|TEEMS|TEENS|TEENY|TEETH|TEIRO|TELEX|TELGA|TELLS|TELLY|TEMPI|TEMPO|TEMPS|TEMPT|TENCH|TENDS|TENET|TENON|TENOR|TENSE|TENTH|TENTS|TEPEE|TEPID|TERCE|TERMS|TERNS|TERRA|TERRY|TERSE|TESLA|TESTS|TESTY|TETRA|TEXAS|TEXTS|THANE|THANK|THANX|THATS|THAWS|THEES|THEFT|THEIR|THEME|THENS|THERE|THERM|THESE|THETA|THEWS|THICK|THIEF|THIGH|THINE|THING|THINK|THINS|THIRD|THONG|THORN|THOSE|THOUS|THREE|THREW|THROB|THROE|THROW|THRUM|THUDS|THUGS|THUMB|THUMP|THUNK|THWAP|THYME|TIARA|TIBIA|TICKS|TIDAL|TIDED|TIDES|TIERS|TIFFS|TIGER|TIGHT|TIKES|TIKIS|TILDE|TILED|TILER|TILES|TILLS|TILTH|TILTS|TIMED|TIMER|TIMES|TIMID|TINES|TINGE|TINGS|TINNY|TINTS|TIPPY|TIPSY|TIRED|TIRES|TIROF|TIROS|TITAN|TITER|TITHE|TITLE|TITRE|TITTY|TIZZY|TKIEL|TLIIJ|TLOOE|TOADS|TOADY|TOAST|TODAY|TODDY|TOFFS|TOFFY|TOGAS|TOILE|TOILS|TOKED|TOKEN|TOKER|TOKES|TOLLS|TOMBS|TOMES|TOMMY|TONAL|TONED|TONER|TONES|TONGS|TONIC|TOOLS|TOONS|TOOTH|TOOTS|TOPAZ|TOPED|TOPER|TOPES|TOPIC|TOPOI|TOPOS|TOQUE|TORAH|TORCH|TORIC|TORSI|TORSO|TORTE|TORTS|TORUS|TOTAL|TOTED|TOTEM|TOTER|TOTES|TOTRS|TOTTY|TOUCH|TOUGH|TOURS|TOUTS|TOVES|TOWED|TOWEL|TOWER|TOWNS|TOXIC|TOXIN|TOYED|TOYER|TOYON|TRABE|TRACE|TRACK|TRACT|TRADE|TRAIL|TRAIM|TRAIN|TRAIT|TRAMP|TRAMS|TRANS|TRAPS|TRASH|TRAWL|TRAYS|TREAD|TREAP|TREAT|TREED|TREES|TREKS|TREND|TRESS|TREWS|TREYS|TRIAD|TRIAL|TRIBE|TRIBS|TRICE|TRICK|TRIED|TRIER|TRIES|TRIKE|TRILL|TRIMS|TRIOS|TRIPE|TRIPS|TRITE|TROLL|TROMP|TROOP|TROTH|TROTS|TROUT|TROVE|TROWS|TRUCE|TRUCK|TRUED|TRUER|TRUES|TRULY|TRUMP|TRUNK|TRUSS|TRUST|TRUTH|TRYST|TSARS|TUANS|TUBAL|TUBAS|TUBBY|TUBED|TUBER|TUBES|TUCKS|TUFAS|TUFTS|TUFTY|TULIP|TULLE|TUMMY|TUMOR|TUNAS|TUNED|TUNER|TUNES|TUNIC|TUNNY|TUPLE|TURBO|TURDS|TURDY|TURFS|TURFY|TURNS|TURPS|TUSKS|TUSKY|TUTOR|TUTTI|TUTUS|TUXES|TWAIN|TWANG|TWATS|TWEAK|TWEDH|TWEED|TWEET|TWERP|TWICE|TWIGS|TWILL|TWINE|TWINK|TWINS|TWINY|TWIRL|TWIRP|TWIST|TWITS|TWIXT|TYING|TYKES|TYPAL|TYPED|TYPES|TYPOS|TYRES|TYROS|TZARS|UDDER|UKASE|ULCER|ULNAR|ULNAS|ULTRA|UMBEL|UMBER|UMBRA|UMIAK|UMPED|UMPTY|UNAPT|UNARC|UNARM|UNARY|UNATE|UNBAN|UNBAR|UNBOX|UNCAP|UNCLE|UNCUT|UNDER|UNDID|UNDUE|UNFED|UNFIT|UNFIX|UNHIP|UNHIT|UNIFY|UNION|UNITE|UNITS|UNITY|UNJAM|UNLIT|UNMAN|UNMAP|UNMET|UNPEG|UNPIN|UNRIG|UNSAY|UNSEE|UNSET|UNSEW|UNSEX|UNTIE|UNTIL|UNWED|UNWON|UNZIP|UPEND|UPPED|UPPER|UPSET|URBAN|UREAS|URGED|URGER|URGES|URINE|USAGE|USERS|USHER|USING|USUAL|USURP|USURY|UTERI|UTERO|UTTER|UVULA|VACUA|VACUO|VAGUE|VAGUS|VAILS|VALES|VALET|VALID|VALOR|VALUE|VALVE|VAMPS|VANED|VANES|VAPES|VAPID|VAPOR|VARIA|VASES|VAULT|VAUNS|VAUNT|VEALS|VEEPS|VEERS|VEGAN|VEILA|VEILS|VEINS|VEINY|VELAR|VELDS|VELDT|VENAL|VENDS|VENOM|VENTS|VENUE|VERBS|VEREK|VERGE|VERIK|VERSA|VERSE|VERSO|VERST|VERVE|VESTS|VETCH|VEXED|VEXES|VIALS|VIAND|VIBES|VICAR|VICES|VIDEO|VIERS|VIEWS|VIGIL|VIGOR|VILER|VILLA|VILLE|VILLI|VINCA|VINED|VINES|VINYL|VIOLA|VIOLS|VIPER|VIRAL|VIREO|VIRES|VIRUS|VISAS|VISED|VISES|VISIT|VISOR|VISTA|VITAE|VITAL|VITAM|VITAS|VITRO|VIVAS|VIVID|VIVRE|VIXEN|VIZOR|VOCAB|VOCAL|VODKA|VOGUE|VOICE|VOIDS|VOILA|VOILE|VOLTS|VOMIT|VOTED|VOTER|VOTES|VOUCH|VOWED|VOWEL|VOWER|VOXEL|VROOM|VULVA|VURMA|VYING|WACKO|WACKY|WADED|WADER|WADES|WADIS|WAFER|WAFTS|WAGED|WAGER|WAGES|WAGON|WAHOO|WAIFS|WAILS|WAIST|WAITS|WAIVE|WAKED|WAKEN|WAKER|WAKES|WALED|WALES|WALKS|WALLS|WALTZ|WANDS|WANED|WANES|WANLY|WANNA|WANTA|WANTS|WARDS|WARES|WARMS|WARNS|WARPS|WARTS|WARTY|WASHY|WASNT|WASPS|WASPY|WASSA|WASTE|WATCH|WATER|WATSA|WATTS|WAVED|WAVER|WAVES|WAXED|WAXEN|WAXER|WAXES|WAZOO|WEALD|WEALS|WEANS|WEARS|WEARY|WEAVE|WEBBY|WEBER|WEDGE|WEDGY|WEEDS|WEEDY|WEEKS|WEENY|WEEPS|WEEPY|WEEST|WEFTS|WEIGH|WEIRD|WEIRS|WELCH|WELDS|WELLS|WELSH|WELTS|WENCH|WENDS|WESTS|WETLY|WHACK|WHALE|WHAMS|WHANG|WHARF|WHATS|WHEAL|WHEAT|WHEEE|WHEEL|WHELK|WHELM|WHELP|WHENS|WHERE|WHETS|WHEWS|WHEYS|WHICH|WHIFF|WHILE|WHIMS|WHINE|WHINY|WHIPS|WHIPT|WHIRL|WHIRR|WHIRS|WHISH|WHISK|WHIST|WHITE|WHITS|WHIZZ|WHOAS|WHOLE|WHOMP|WHOOO|WHOOP|WHOPS|WHORE|WHORL|WHOSE|WHOSO|WHUMP|WICKS|WIDEN|WIDER|WIDOW|WIDTH|WIELD|WIFEY|WIGHT|WILCO|WILDS|WILED|WILES|WILLS|WILTS|WIMPS|WIMPY|WINCE|WINCH|WINDS|WINDY|WINED|WINES|WINEY|WINGS|WINKS|WINOS|WIPED|WIPER|WIPES|WIRED|WIRER|WIRES|WISED|WISER|WISES|WISPS|WISPY|WISTS|WITCH|WITHS|WITTY|WIVES|WIZEN|WOKEN|WOLDS|WOMAN|WOMBS|WOMEN|WONKS|WONKY|WONTS|WOODS|WOODY|WOOED|WOOER|WOOFS|WOOLS|WOOLY|WOOSH|WOOZY|WORDS|WORDY|WORKS|WORLD|WORMS|WORMY|WORRY|WORSE|WORST|WORTH|WORTS|WOULD|WOUND|WOVEN|WOWED|WOWEE|WRACK|WRAPS|WRATH|WREAK|WRECK|WRENS|WREST|WRIER|WRING|WRIST|WRITE|WRITS|WRONG|WROTE|WROTH|WRUNG|WRYER|WRYLY|WURST|XENON|XEROX|XIBAR|XORED|XOSIZ|XYLEM|XZEAN|YACHT|YAHOO|YANKS|YARDS|YARNS|YAWED|YAWLS|YAWNS|YAWNY|YAWPS|YEARN|YEARS|YEAST|YECCH|YELLA|YELLS|YELPS|YENTA|YERBA|YESES|YIELD|YIKES|YIPES|YLOSH|YOBBO|YODEL|YOGAS|YOGIC|YOGIS|YOKED|YOKEL|YOKES|YOLKS|YOLKY|YORES|YOULL|YOUNG|YOURE|YOURN|YOURS|YOUSE|YOUTH|YOUVE|YOWLS|YOYOS|YSHAI|YUCCA|YUCKY|YUKKY|YULES|YUMMY|YURTS|ZALDI|ZANDS|ZAPPY|ZAYIN|ZEALS|ZEBRA|ZEBUS|ZEROS|ZESTS|ZESTY|ZETAS|ZILCH|ZILLS|ZINCS|ZINGS|ZINGY|ZIPPY|ZIPSY|ZLOTY|ZOHLU|ZOMBI|ZONAL|ZONED|ZONES|ZONKS|ZOOEY|ZOOKS|ZOOMS|ZOWIE|ZUKIR|ALLAY|CABAL| gosub DRWordle.UpdateWordBankCount return DRWordle.UpdateWordBankCount: pause .0001 gosub DRWordle.Echo %DRWordle._textColor._info --- Word bank created, recalculating size eval DRWordle._wordBankCount count("%DRWordle._wordBank","|") return DRWordle.InputCheck: if ("%1" = "help" or "%1" = "") then { debug 0 put #echo %DRWordle._textColor._info ********************************** put #echo %DRWordle._textColor._info ** By default will not do the put #echo %DRWordle._textColor._info ** inputs autonomously. Check put #echo %DRWordle._textColor._info ** configs at the top of file. put #echo %DRWordle._textColor._info ** put #echo %DRWordle._textColor._info ** To run, just be in a room put #echo %DRWordle._textColor._info ** with a time lock with a pass. put #echo %DRWordle._textColor._info ** put #echo %DRWordle._textColor._info ** Mods: put #echo %DRWordle._textColor._info ** .DRWordle debug - test case only put #echo %DRWordle._textColor._info ** .DRWordle solve - Attempts to put #echo %DRWordle._textColor._info ** solve one puzzle - see config put #echo %DRWordle._textColor._info ** put #echo %DRWordle._textColor._info ** type PROCESSLASTMOVE! to force processing put #echo %DRWordle._textColor._info ** Not recommended while doing the put #echo %DRWordle._textColor._info ** initial prune put #echo %DRWordle._textColor._info ********************************** goto DRWordle.Exit } if ("%1" = "debug") then { put #echo %DRWordle._textColor._info ********************************** put #echo %DRWordle._textColor._info ** Starting testcases put #echo %DRWordle._textColor._info ** use #parse NEXTCASE to progress put #echo %DRWordle._textColor._info ********************************** gosub DRWordle.TestCase.TestActions goto DRWordle.Exit } if ("%1" = "solve") then { gosub DRWordle.startPuzzle goto DRWordle.Exit } put #echo %DRWordle._textColor._warning No valid input detected. Run ".DRWordle help" without the quotes goto DRWordle.Emergency.Exit ############################################# CLEANING FUNCTIONS ############################# DRWordle.PostProcessing: #good, bad, positioning. This is for optimization on removal. if no change, don't check words against that condition. var DRWordle.PostProcessing.foundLetterChangeG 0 var DRWordle.PostProcessing.foundLetterChangeB 0 var DRWordle.PostProcessing.foundLetterChangeP 0 ############## BAD WORD MIX ############### # clean up bad letter mix. # Yes, I could (should?) make this a reusable function, but I'm leaving it as is to help with readibility later # I may remove the eval / comparison later too and just put the post processing change flag in the clean word section, but # I'm not realy a fan of turning local variables into globals gosub DRWordle.Echo %DRWordle._textColor._info ........starting bad word analysis eval DRWordle.PostProcessing.tmp count("%DRWordle._badLetters","|") gosub DRWordle.CheckDirtyWord bad eval DRWordle.PostProcessing.tmp2 count("%DRWordle._badLetters","|") # Any changes? If yes, remove words from word bank when pruning starts if (%DRWordle.PostProcessing.tmp <> %DRWordle.PostProcessing.tmp2) then var DRWordle.PostProcessing.foundLetterChangeB 1 ############## GOOD WORD MIX ############### # clean up good letter mix. Any changes? gosub DRWordle.Echo %DRWordle._textColor._info ........starting good word analysis eval DRWordle.PostProcessing.tmp count("%DRWordle._goodLetters","|") gosub DRWordle.CheckDirtyWord good eval DRWordle.PostProcessing.tmp2 count("%DRWordle._goodLetters","|") #Any changes? If yes, remove words from word bank when pruning starts if (%DRWordle.PostProcessing.tmp <> %DRWordle.PostProcessing.tmp2) then var DRWordle.PostProcessing.foundLetterChangeG 1 ############## UPDATE CHAR POS ############### # Changes to known char positions? gosub DRWordle.Echo %DRWordle._textColor._info ........starting known char position manipulation var DRWordle.PostProcessing.tmp %DRWordle._knownPositions gosub DRWordle.CheckKnownPositions if ("%DRWordle._knownPositions" <> "DRWordle.PostProcessing.tmp") then var DRWordle.PostProcessing.foundLetterChangeP 1 #Any changes? If yes, remove words from word bank when pruning starts if ("%DRWordle._knownPositions" <> "DRWordle.PostProcessing.tmp") then var DRWordle.PostProcessing.foundLetterChangeP 1 # #If yes, remove words from word bank when pruning starts # update known char position log ############## WORD BANK PRUNING ############### #start pruning, iff changes DRWordle.PostProcessing.startPruning: gosub DRWordle.Echo %DRWordle._textColor._info ........starting known char position analysis if ((%DRWordle.PostProcessing.foundLetterChangeP = 1) OR (%DRWordle.PostProcessing.foundLetterChangeB = 1) OR (%DRWordle.PostProcessing.foundLetterChangeG = 1)) then { gosub DRWordle.PruneWordBank %DRWordle.PostProcessing.foundLetterChangeP %DRWordle.PostProcessing.foundLetterChangeB %DRWordle.PostProcessing.foundLetterChangeG } if ("%1" = "debug") then goto RETURN DRWordle.automateGuess: pause %DRWordle._globalLongDelay var DRWordle.automateGuess.maxGuess %DRWordle._wordBankCount MATH DRWordle.automateGuess.maxGuess SUB 1 random 0 %DRWordle.automateGuess.maxGuess #saving this as a variable for debugging, and it looks like random 0 0 returns -1 if ("%r" = "-1") then { var DRWordle.automateGuess.word %DRWordle._wordBank(0) } else var DRWordle.automateGuess.word %DRWordle._wordBank(%r) if ("%DRWordle._recommendOnly" = "OFF") then { if ("%DRWordle.automateGuess.word" = "") then goto DRWordle.UNKONWN.WORD put whisp time lock %DRWordle.automateGuess.word } else { gosub DRWordle.TestCase.PrintStates gosub DRWordle.Echo %DRWordle._textColor._warning WAITING ON USER INPUT - Whisper time lock <guess> } pause 6000 goto DRWordle.Emergency.Exit RETURN: return DRWordle.CheckDirtyWord: # $1 = Bad or Good var DRWordle.CleanDirtyWord.variableBucket $1 #start cleaning var DRWordle.CleanDirtyWord.index 0 eval DRWordle.CleanDirtyWord.maxIndex count("%DRWordle._%DRWordle.CleanDirtyWord.variableBucketLettersDirty","|") DRWordle.CleanDirtyWord.loop: var DRWordle.CleanDirtyWord.loop.letter %DRWordle._%DRWordle.CleanDirtyWord.variableBucketLettersDirty(%DRWordle.CleanDirtyWord.index) if !matchre("%DRWordle._%DRWordle.CleanDirtyWord.variableBucketLetters","%DRWordle.CleanDirtyWord.loop.letter") then { if ("%DRWordle._%DRWordle.CleanDirtyWord.variableBucketLetters" = "") then { var DRWordle._%DRWordle.CleanDirtyWord.variableBucketLetters %DRWordle.CleanDirtyWord.loop.letter } else { var DRWordle._%DRWordle.CleanDirtyWord.variableBucketLetters %DRWordle.CleanDirtyWord.loop.letter|%DRWordle._%DRWordle.CleanDirtyWord.variableBucketLetters } } MATH DRWordle.CleanDirtyWord.index ADD 1 if (%DRWordle.CleanDirtyWord.index <= %DRWordle.CleanDirtyWord.maxIndex) then goto DRWordle.CleanDirtyWord.loop var DRWordle._%DRWordle.CleanDirtyWord.variableBucketLettersDirty return DRWordle.CheckKnownPositions: #ugly way to do this, but it's faster than a comparison. #may go back and fix it but it was frankly easier to do it this way with the actions since numbering matters. var DRWordle.CheckKnownPositions.index 2 # making sure there's no preceding space. # A little neurotic and somewhat unreasonable, but better safe than sorry. if ("%DRWordle._knownPosition1" = "") then var DRWordle._knownPositions _| else var DRWordle._knownPositions %DRWordle._knownPosition1| ## checks word against good letters, good positions ## DRWordle.CheckKnownPositions.Loop: if ("%DRWordle._knownPosition%DRWordle.CheckKnownPositions.index" = "") then var DRWordle._knownPositions %DRWordle._knownPositions_| else var DRWordle._knownPositions %DRWordle._knownPositions%DRWordle._knownPosition%DRWordle.CheckKnownPositions.index| MATH DRWordle.CheckKnownPositions.index ADD 1 if (%DRWordle.CheckKnownPositions.index <= 5) then goto DRWordle.CheckKnownPositions.Loop return DRWordle.PruneWordBank: # $1 = positioning changed # $2 = bad letters changed # $3 = good letters changed # ordered so that the largest number of potential changes (on average) go first # 0 = no, 1 = yes for all gosub DRWordle.Echo %DRWordle._textColor._warning --- Pruning Word Bank - this will take a few minutes, especially on the first Prune var DRWordle.PruneWordBank.startTime $gametime # put #echo red %DRWordle.PruneWordBank.startTime var DRWordle.PruneWordBank.startBankCount %DRWordle._wordBankCount pause %DRWordle._globalShortDelay var DRWordle.PruneWordBank.posCheck $1 var DRWordle.PruneWordBank.badCheck $2 var DRWordle.PruneWordBank.goodCheck $3 var DRWordle.PruneWordBank.counter 1 var DRWordle.PruneWordBank.index 0 var DRWordle.PruneWordBank.updatedWordBank pause %DRWordle._globalShortDelay DRWordle.PruneWordBank.IterateWords: # THIS STUPID LINE OF CODE # THIS RIGHT HERE # MADE SENSE IN DEBUGGING - SUPER SLOW IN REAL LIFE!!! # Like arizona, it'll remain as a monument to man's arrogance #pause %DRWordle._globalShortDelay #put #echo index: %DRWordle.PruneWordBank.index, wordbank: %DRWordle._wordBank eval DRWordle.PruneWordBank.IterateWords.word %DRWordle._wordBank(%DRWordle.PruneWordBank.index) if (("%DRWordle.PruneWordBank.IterateWords.word" = "") or (%DRWordle._wordBankCount < 0)) then { goto DRWordle.UNKONWN.WORD } #put #echo green word: %DRWordle.PruneWordBank.IterateWords.word (%DRWordle.PruneWordBank.index) #hack to stop infinite loop detection if (%DRWordle._infiniteLoopHack < %DRWordle.PruneWordBank.counter) then { gosub DRWordle.Echo %DRWordle._textColor._info --- Still processing pause %DRWordle._globalShortDelay var DRWordle.PruneWordBank.counter 1 } else MATH DRWordle.PruneWordBank.counter ADD 1 #check positioning DRWordle.PruneWordBank.IterateWords.Pos: if (%DRWordle.PruneWordBank.posCheck = 0) then goto DRWordle.PruneWordBank.IterateWords.Bad var DRWordle.PruneWordBank.IterateWords.Pos.index 0 DRWordle.PruneWordBank.IterateWords.Pos.Loop: var DRWordle.PruneWordBank.IterateWords.Pos.adjustedIndex %DRWordle.PruneWordBank.IterateWords.Pos.index MATH DRWordle.PruneWordBank.IterateWords.Pos.adjustedIndex ADD 1 var DRWordle.PruneWordBank.IterateWords.Pos.Loop.goodChar %DRWordle._knownPosition%DRWordle.PruneWordBank.IterateWords.Pos.adjustedIndex var DRWordle.PruneWordBank.IterateWords.Pos.Loop.goodCharBadPos %DRWordle._GoodLBadPosition%DRWordle.PruneWordBank.IterateWords.Pos.adjustedIndex # get the char to compare against eval DRWordle.PruneWordBank.IterateWords.Pos.Loop.wordChar substr(%DRWordle.PruneWordBank.IterateWords.word,%DRWordle.PruneWordBank.IterateWords.Pos.index,1) ## good char not in this position? ## if ("%DRWordle.PruneWordBank.IterateWords.Pos.Loop.wordChar" = "%DRWordle.PruneWordBank.IterateWords.Pos.Loop.goodCharBadPos") then { #gosub DRWordle.Echo green ---- removing word: %DRWordle.PruneWordBank.IterateWords.word because of a good letter in the wrong position (%DRWordle.PruneWordBank.IterateWords.Pos.adjustedIndex, "%DRWordle.PruneWordBank.IterateWords.Pos.Loop.wordChar"="%DRWordle.PruneWordBank.IterateWords.Pos.Loop.goodCharBadPos") (%DRWordle._GoodLBadPosition1%DRWordle._GoodLBadPosition2%DRWordle._GoodLBadPosition3%DRWordle._GoodLBadPosition4%DRWordle._GoodLBadPosition5) #pause 1.5 goto DRWordle.PruneWordBank.Remove } else { #gosub DRWordle.Echo pink ---- NOT removing word: %DRWordle.PruneWordBank.IterateWords.word because of a good letter in the wrong position (%DRWordle.PruneWordBank.IterateWords.Pos.adjustedIndex, "%DRWordle.PruneWordBank.IterateWords.Pos.Loop.wordChar"!="%DRWordle.PruneWordBank.IterateWords.Pos.Loop.goodCharBadPos") (%DRWordle._GoodLBadPosition1%DRWordle._GoodLBadPosition2%DRWordle._GoodLBadPosition3%DRWordle._GoodLBadPosition4%DRWordle._GoodLBadPosition5) #pause .5 } ## good char in this position? ## if (("%DRWordle._knownPosition%DRWordle.PruneWordBank.IterateWords.Pos.adjustedIndex" = "") or ("%DRWordle._knownPosition%DRWordle.PruneWordBank.IterateWords.Pos.adjustedIndex" = "_")) then { goto DRWordle.PruneWordBank.IterateWords.Pos.Next } if ("%DRWordle.PruneWordBank.IterateWords.Pos.Loop.wordChar" <> "%DRWordle.PruneWordBank.IterateWords.Pos.Loop.goodChar") then { #put #echo red Removing word - (pos2) good char does not match (i:%DRWordle.PruneWordBank.IterateWords.Pos.adjustedIndex, char:%DRWordle.PruneWordBank.IterateWords.Pos.Loop.goodChar, word:%DRWordle.PruneWordBank.IterateWords.word) goto DRWordle.PruneWordBank.Remove } DRWordle.PruneWordBank.IterateWords.Pos.Next: MATH DRWordle.PruneWordBank.IterateWords.Pos.index ADD 1 if (%DRWordle.PruneWordBank.IterateWords.Pos.index >= 5) then { #put #echo blue Skipping out of pruneword %DRWordle.PruneWordBank.IterateWords.Pos.index goto DRWordle.PruneWordBank.IterateWords.Good } goto DRWordle.PruneWordBank.IterateWords.Pos.Loop #check good letters, missing from word DRWordle.PruneWordBank.IterateWords.Good: # put #echo --- Pruning wordbank of words with good letters if (%DRWordle.PruneWordBank.goodCheck = 0) then goto DRWordle.PruneWordBank.IterateWords.Bad var DRWordle.PruneWordBank.IterateWords.Good.index 0 eval DRWordle.PruneWordBank.IterateWords.Good.max count("%DRWordle._goodLetters","|") DRWordle.PruneWordBank.IterateWords.Good.Loop: eval DRWordle.PruneWordBank.IterateWords.Good.letter %DRWordle._goodLetters(%DRWordle.PruneWordBank.IterateWords.Good.index) if (!matchre("%DRWordle.PruneWordBank.IterateWords.word","%DRWordle.PruneWordBank.IterateWords.Good.letter")) then { # put #echo orange Removing word - (good) (word: %DRWordle.PruneWordBank.IterateWords.word, letters:%DRWordle._goodLetters (testing:%DRWordle.PruneWordBank.IterateWords.Good.letter ) ) goto DRWordle.PruneWordBank.Remove } DRWordle.PruneWordBank.IterateWords.Good.Next: MATH DRWordle.PruneWordBank.IterateWords.Good.index ADD 1 if (%DRWordle.PruneWordBank.IterateWords.Good.index <= %DRWordle.PruneWordBank.IterateWords.Good.max) then goto DRWordle.PruneWordBank.IterateWords.Good.Loop goto DRWordle.PruneWordBank.IterateWords.Bad #check bad letters, included in word DRWordle.PruneWordBank.IterateWords.Bad: # put #echo --- Pruning wordbank of words with bad letters (%DRWordle._badLetters) if (%DRWordle.PruneWordBank.badCheck = 0) then goto DRWordle.PruneWordBank.IterateWords.Keep if (matchre("%DRWordle.PruneWordBank.IterateWords.word","%DRWordle._badLetters")) then { # put #echo orange Removing word - (bad) (word: %DRWordle.PruneWordBank.IterateWords.word, letters:%DRWordle._badLetters ) goto DRWordle.PruneWordBank.Remove } DRWordle.PruneWordBank.IterateWords.Keep: var DRWordle.PruneWordBank.updatedWordBank %DRWordle.PruneWordBank.IterateWords.word|%DRWordle.PruneWordBank.updatedWordBank DRWordle.PruneWordBank.IterateWords.Next: MATH DRWordle.PruneWordBank.index ADD 1 if (%DRWordle.PruneWordBank.index < %DRWordle._wordBankCount) then goto DRWordle.PruneWordBank.IterateWords goto DRWordle.PruneWordBank.Done DRWordle.PruneWordBank.Remove: ## rewriting to not remove, but append. Hoping this cuts down on processing time. ### keeping as legacy code ### replaced the replacere with a simple var command to build lists # #remove the word # eval DRWordle._wordBank replacere("%DRWordle._wordBank", "%DRWordle.PruneWordBank.IterateWords.word\|","") # #adjust the count # put #echo After .... %DRWordle._wordBank # MATH DRWordle.PruneWordBank.index SUB 1 # MATH DRWordle._wordBankCount SUB 1 # if (%DRWordle._wordBankCount <= 0) then { # goto DRWordle.UNKONWN.WORD # } goto DRWordle.PruneWordBank.IterateWords.Next DRWordle.PruneWordBank.Done: #pausing to let variables catch up, like gametime pause %DRWordle._globalShortDelay # Cleaning up some variables, move to a function due to duplictive code (TODO) var DRWordle._GoodLBadPosition1 . var DRWordle._GoodLBadPosition2 . var DRWordle._GoodLBadPosition3 . var DRWordle._GoodLBadPosition4 . var DRWordle._GoodLBadPosition5 . # Stats and other info var DRWordle.PruneWordBank.endTime $gametime MATH DRWordle.PruneWordBank.endTime SUB %DRWordle.PruneWordBank.startTime var DRWordle._wordBank %DRWordle.PruneWordBank.updatedWordBank gosub DRWordle.UpdateWordBankCount MATH DRWordle.PruneWordBank.endBankCount SET %DRWordle.PruneWordBank.startBankCount MATH DRWordle.PruneWordBank.endBankCount SUB %DRWordle._wordBankCount gosub DRWordle.Echo %DRWordle._textColor._info Prune complete. Finished in %DRWordle.PruneWordBank.endTimes and removed %DRWordle.PruneWordBank.endBankCount words, %DRWordle._wordBankCount remaining return ############################################# UTILITY FUNCTIONS ############################# DRWordle.Echo: put #echo $0 return DRWordle.NO.PASSES: put #echo %DRWordle._textColor._warning ----- ERROR ------ put #echo %DRWordle._textColor._warning - Out of Passes put #echo %DRWordle._textColor._warning ------------------- goto DRWordle.Emergency.Exit return DRWordle.UNKONWN.WORD: put #echo %DRWordle._textColor._warning ----- ERROR ------ put #echo %DRWordle._textColor._warning - Word not in list put #echo %DRWordle._textColor._warning - or bad wordbank put #echo %DRWordle._textColor._warning - Dumping state put #echo %DRWordle._textColor._warning ------------------- put #echo >ScriptLog red RPA FAIL gosub DRWordle.TestCase.PrintStates goto DRWordle.Emergency.Exit DRWordle.COMPLETE: put #echo >ScriptLog green RPA success goto DRWordle.Check.Repeat.Run DRWordle.Check.Repeat.Run: if (%DRWordle.useAllSlips = 1) then { put .drwordle %0 exit } goto DRWordle.Emergency.Exit DRWordle.Emergency.Exit: put #echo %DRWordle._textColor._warning ----- Hard Exiting ------ goto DRWordle.Exit ################################################################################################################### TBI #### #call with just a letter, feed in bad letters #### TEST CASES - IGNORE #### DRWordle.TestCase.TestActions: gosub DRWordle.Echo %DRWordle._textColor._info STARTING FIRST LINE #gosub DRWordle.TestCase.PrintStates gosub DRWordle.Echo red 0==================================================== gosub DRWordle.Echo %DRWordle._textColor._info | _A_ | *E* | +I+ | *O* | *U* | pause 1 put #parse +-----+-----+-----+-----+-----+ put #parse | 1 | 2 | 3 | 4 | 5 | put #parse +-----+-----+-----+-----+-----+ put #parse | _A_ | *E* | +I+ | *O* | *U* | put #parse | ___ | ___ | ___ | ___ | ___ | put #parse | ___ | ___ | ___ | ___ | ___ | put #parse | ___ | ___ | ___ | ___ | ___ | put #parse | ___ | ___ | ___ | ___ | ___ | put #parse | ___ | ___ | ___ | ___ | ___ | put #parse +-----+-----+-----+-----+-----+ pause %DRWordle._globalLongDelay gosub DRWordle.PostProcessing gosub DRWordle.TestCase.PrintStates waitfor NEXTCASE gosub DRWordle.Echo red 1==================================================== gosub DRWordle.Echo %DRWordle._textColor._info | *F* | +R+ | +I+ | *L* | _A_ | put #parse +-----+-----+-----+-----+-----+ put #parse | 1 | 2 | 3 | 4 | 5 | put #parse +-----+-----+-----+-----+-----+ put #parse | _A_ | *E* | +I+ | *O* | *U* | put #parse | *F* | +R+ | +I+ | *L* | _A_ | put #parse | ___ | ___ | ___ | ___ | ___ | put #parse | ___ | ___ | ___ | ___ | ___ | put #parse | ___ | ___ | ___ | ___ | ___ | put #parse | ___ | ___ | ___ | ___ | ___ | put #parse +-----+-----+-----+-----+-----+ pause %DRWordle._globalLongDelay gosub DRWordle.PostProcessing gosub DRWordle.TestCase.PrintStates waitfor NEXTCASE gosub DRWordle.Echo red 2==================================================== gosub DRWordle.Echo %DRWordle._textColor._info | _A_ | *T* | +I+ | *N* | _A_ | put #parse +-----+-----+-----+-----+-----+ put #parse | 1 | 2 | 3 | 4 | 5 | put #parse +-----+-----+-----+-----+-----+ put #parse | _A_ | *E* | +I+ | *O* | *U* | put #parse | *F* | +R+ | +I+ | *L* | _A_ | put #parse | _A_ | *T* | +I+ | *N* | _A_ | put #parse | ___ | ___ | ___ | ___ | ___ | put #parse | ___ | ___ | ___ | ___ | ___ | put #parse | ___ | ___ | ___ | ___ | ___ | put #parse +-----+-----+-----+-----+-----+ pause %DRWordle._globalLongDelay gosub DRWordle.PostProcessing gosub DRWordle.TestCase.PrintStates waitfor NEXTCASE gosub DRWordle.Echo red 3==================================================== gosub DRWordle.Echo %DRWordle._textColor._info | *C* | +R+ | +I+ | *M* | _A_ | put #parse +-----+-----+-----+-----+-----+ put #parse | 1 | 2 | 3 | 4 | 5 | put #parse +-----+-----+-----+-----+-----+ put #parse | _A_ | *E* | +I+ | *O* | *U* | put #parse | *F* | +R+ | +I+ | *L* | _A_ | put #parse | _A_ | *T* | +I+ | *N* | _A_ | put #parse | *C* | +R+ | +I+ | *M* | _A_ | put #parse | ___ | ___ | ___ | ___ | ___ | put #parse | ___ | ___ | ___ | ___ | ___ | put #parse +-----+-----+-----+-----+-----+ pause %DRWordle._globalLongDelay gosub DRWordle.PostProcessing gosub DRWordle.TestCase.PrintStates waitfor NEXTCASE gosub DRWordle.Echo red 3==================================================== gosub DRWordle.Echo %DRWordle._textColor._info | *G* | +R+ | +I+ | +A+ | *L* | put #parse +-----+-----+-----+-----+-----+ put #parse | 1 | 2 | 3 | 4 | 5 | put #parse +-----+-----+-----+-----+-----+ put #parse | _A_ | *E* | +I+ | *O* | *U* | put #parse | *F* | +R+ | +I+ | *L* | _A_ | put #parse | _A_ | *T* | +I+ | *N* | _A_ | put #parse | *C* | +R+ | +I+ | *M* | _A_ | put #parse | *G* | +R+ | +I+ | +A+ | *L* | put #parse | ___ | ___ | ___ | ___ | ___ | put #parse +-----+-----+-----+-----+-----+ pause %DRWordle._globalLongDelay gosub DRWordle.PostProcessing gosub DRWordle.TestCase.PrintStates waitfor NEXTCASE gosub DRWordle.Echo red 4==================================================== gosub DRWordle.Echo %DRWordle._textColor._info | +B+ | +R+ | +I+ | +A+ | +R+ | put #parse +-----+-----+-----+-----+-----+ put #parse | 1 | 2 | 3 | 4 | 5 | put #parse +-----+-----+-----+-----+-----+ put #parse | _A_ | *E* | *I* | +O+ | *U* | put #parse | *F* | +R+ | +I+ | *L* | _A_ | put #parse | _A_ | *T* | +I+ | *N* | _A_ | put #parse | *C* | +R+ | +I+ | *M* | _A_ | put #parse | *G* | +R+ | +I+ | +A+ | *L* | put #parse | +B+ | +R+ | +I+ | +A+ | +R+ | put #parse +-----+-----+-----+-----+-----+ pause %DRWordle._globalLongDelay gosub DRWordle.PostProcessing gosub DRWordle.TestCase.PrintStates waitfor NEXTCASE return DRWordle.TestCase.PrintStates: put #echo %DRWordle._textColor._info word bank count: %DRWordle._wordBankCount put #echo %DRWordle._textColor._info bad Letters: %DRWordle._badLetters put #echo %DRWordle._textColor._info dirty (bad) Letters: %DRWordle._badLettersDirty put #echo %DRWordle._textColor._info good Letters: %DRWordle._goodLetters put #echo %DRWordle._textColor._info dirty (good) Letters: %DRWordle._goodLettersDirty # put #echo %DRWordle._textColor._info remaining letters: %DRWordle._remainingLetters # put #echo %DRWordle._textColor._info remaining letters: NYI put #echo %DRWordle._textColor._info known positions: %DRWordle._knownPositions put #echo %DRWordle._textColor._info known position 1: %DRWordle._knownPosition1 put #echo %DRWordle._textColor._info known position 2: %DRWordle._knownPosition2 put #echo %DRWordle._textColor._info known position 3: %DRWordle._knownPosition3 put #echo %DRWordle._textColor._info known position 4: %DRWordle._knownPosition4 put #echo %DRWordle._textColor._info known position 5: %DRWordle._knownPosition5 put #echo %DRWordle._textColor._info Remaining Words: %DRWordle._wordBank return