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|CRWTH|SITAR|REBEC|KELSA|COBZA|ANGLE|GUIRO|TABLA|TZECE|SNICK|IAHJA|ESTOC|AVENE|ZUBKE|SUFIL|PUNKA|MADUN|KOMNO|KALAG|TELEK|ELMOD|KATAR|VIGIL|
## 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|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