Error processing request

Parameters

CONTENT_LENGTH0
REQUEST_METHODGET
REQUEST_URI/revision/Word+Chain?V=7
QUERY_STRINGV=7
CONTENT_TYPE
DOCUMENT_URI/revision/Word+Chain
DOCUMENT_ROOT/var/www/nikit/nikit/nginx/../docroot
SCGI1
SERVER_PROTOCOLHTTP/1.1
HTTPSon
REMOTE_ADDR172.69.7.192
REMOTE_PORT30392
SERVER_PORT4443
SERVER_NAMEwiki.tcl-lang.org
HTTP_HOSTwiki.tcl-lang.org
HTTP_CONNECTIONKeep-Alive
HTTP_ACCEPT_ENCODINGgzip, br
HTTP_X_FORWARDED_FOR13.59.100.42
HTTP_CF_RAY87efffcc584a615d-ORD
HTTP_X_FORWARDED_PROTOhttps
HTTP_CF_VISITOR{"scheme":"https"}
HTTP_ACCEPT*/*
HTTP_USER_AGENTMozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
HTTP_CF_CONNECTING_IP13.59.100.42
HTTP_CDN_LOOPcloudflare
HTTP_CF_IPCOUNTRYUS

Body


Error

Unknow state transition: LINE -> END

-code

1

-level

0

-errorstack

INNER {returnImm {Unknow state transition: LINE -> END} {}} CALL {my render_wikit {Word Chain} \[Keith\ Vetter\]\ 2006-10-12\ :\ Here's\ a\ little\ program\ to\ solve\nword\ chains--a\ list\ of\ words\ where\ each\ word\ differs\ from\ its\nneighbor\ by\ exactly\ one\ letter.\ An\ example\ of\ a\ word\ chain\nwould\ be\ ''warm\ -\ ward\ -\ card\ -\ cord\ -\ cold''.\n\nYou\ first\ enter\ a\ starting\ and\ ending\ word\ both\ of\ either\ three\ or\ four\nletters.\ Then\ this\ program\ will\ compute\ the\ shortest\ word\ chain\nleading\ from\ the\ starting\ word\ and\ leading\ to\ the\ ending\ word.\nBuilt\ into\ this\ program\ is\ a\ 500+\ 3-letter\ word\ list\ and\ a\ 2300+\ 4-letter\nword\ list.\n\nI'm\ a\ bit\ proud\ of\ my\ algorithm\ for\ determining\ all\ ''neighboring''\nwords\ for\ given\ word.\ I\ came\ up\ with\ a\ 1-liner\ using\ regular\nexpressions\ and\ \[lsearch\].\ For\ example,\ the\ neighbors\ of\ ''warm''\ncan\ be\ found\ with:\n\n======\n\ \ \ \ lsearch\ -all\ -regexp\ \$wordlist\ \"(.arm)|(w.rm)|(wa.m)|(war.)\"\n\nSee\ also\ \[The\ word-chain\ game\]\ for\ an\ abortive\ start\ at\ a\ similar\ idea.\n\n----\n======\n\ ##+##########################################################################\n\ #\n\ #\ WordChain.tcl\ --\ Computes\ word\ chains\ for\ 3\ &\ 4\ letter\ words\n\ #\ by\ Keith\ Vetter,\ Oct\ 12,\ 2006\ \n\ #\n\ \n\ package\ require\ Tk\n\ package\ require\ tile\n\ \n\ proc\ DoDisplay\ \{\}\ \{\n\ \ \ \ wm\ title\ .\ \"Word\ Chain\"\n\ \n\ \ \ \ label\ .title\ -text\ \"Word\ Chain\"\ -font\ \{Times\ 32\ bold\}\ -relief\ raised\ -fg\ blue\n\ \ \ \ frame\ .puzzle\ \n\ \ \ \ entry\ .start\ -textvariable\ W(start)\ -width\ 5\n\ \ \ \ label\ .arrow\ -text\ \">>\"\n\ \ \ \ entry\ .end\ -textvariable\ W(end)\ -width\ 5\n\ \n\ \ \ \ frame\ .answer\ -bd\ 2\ -relief\ ridge\n\ \ \ \ listbox\ .lb\ -yscrollcommand\ \".sb_y\ set\"\ -bd\ 0\ -listvariable\ W(answer)\ \\\n\ \ \ \ \ \ \ \ -exportselection\ 0\ -takefocus\ 0\ -font\ \{Courier\ 10\}\ -width\ 11\ -height\ 9\n\ \ \ \ scrollbar\ .sb_y\ -orient\ v\ -command\ \".lb\ yview\"\n\ \ \ \ pack\ .sb_y\ -in\ .answer\ -side\ right\ -fill\ y\n\ \ \ \ pack\ .lb\ -in\ .answer\ -side\ left\ -fill\ both\ -expand\ 1\n\ \n\ \ \ \ pack\ .answer\ -in\ .puzzle\ -side\ bottom\ -pady\ \{10\ 0\}\n\ \ \ \ pack\ .start\ .arrow\ .end\ -in\ .puzzle\ -side\ left\ -expand\ 1\n\ \n\ \ \ \ frame\ .buttons\n\ \ \ \ ::ttk::button\ .go\ -text\ \"Solve\"\ -command\ Solve\n\ \ \ \ ::ttk::button\ .rand\ -text\ \"Random\"\ -command\ Random\n\ \ \ \ ::ttk::button\ .about\ -text\ About\ -command\ About\n\ \ \ \ pack\ .go\ .rand\ -in\ .buttons\ -side\ top\ -padx\ 10\ -pady\ 5\n\ \ \ \ pack\ .about\ -side\ bottom\ -in\ .buttons\n\ \n\ \ \ \ grid\ .title\ -\ -pady\ 10\ -padx\ 10\ -ipadx\ 10\n\ \ \ \ grid\ .puzzle\ .buttons\ -sticky\ ns\ -pady\ \{0\ 10\}\n\ \n\ \ \ \ foreach\ i\ \[trace\ info\ variable\ ::W\]\ \{\ eval\ trace\ remove\ variable\ ::W\ \$i\ \}\n\ \ \ \ set\ ::W(solving)\ 0\n\ \ \ \ trace\ variable\ ::W\ w\ Tracer\n\ \}\n\ \n\ proc\ Chain\ \{start\ end\ \{progress\ \{\}\}\}\ \{\n\ \ \ \ if\ \{\$start\ eq\ \$end\}\ \{return\ \[list\ \$start\ \$end\]\}\n\ \n\ \ \ \ set\ wlen\ \[string\ length\ \$start\]\n\ \ \ \ \n\ \ \ \ QInit\n\ \ \ \ QPush\ \[list\ \$start\ -1\ 0\]\n\ \ \ \ QVisited\ \$start\n\ \n\ \ \ \ set\ cnt\ 0\n\ \ \ \ while\ \{1\}\ \{\n\ \ \ \ \ \ \ \ foreach\ \{id\ word\ .\ depth\}\ \[QPop\]\ break\n\ \ \ \ \ \ \ \ if\ \{\$id\ ==\ -1\}\ break\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \;#\ Failure,\ empty\ Q\n\ \n\ \ \ \ \ \ \ \ incr\ depth\n\ \ \ \ \ \ \ \ if\ \{(\[incr\ cnt\]\ %\ 100)\ ==\ 0\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ if\ \{\$progress\ ne\ \"\"\}\ \{\ \$progress\ \$cnt\ \$depth\ \}\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ foreach\ idx\ \[lsearch\ -all\ -regexp\ \$::WORDS(\$wlen)\ \[MakeRE\ \$word\]\]\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ set\ next\ \[lindex\ \$::WORDS(\$wlen)\ \$idx\]\n\ \ \ \ \ \ \ \ \ \ \ \ if\ \{\[QVisited\ \$next\]\}\ continue\ \ \ \ \ \ \;#\ Already\ done\ this\ word,\ skip\n\ \ \ \ \ \ \ \ \ \ \ \ QPush\ \[list\ \$next\ \$id\ \$depth\]\n\ \ \ \ \ \ \ \ \ \ \ \ if\ \{\$next\ eq\ \$end\}\ break\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ if\ \{\$next\ eq\ \$end\}\ break\n\ \ \ \ \}\n\ \ \ \ if\ \{\$id\ ==\ -1\}\ \{\ return\ \{\}\ \}\n\ \ \ \ return\ \[GetSolution\]\n\ \}\n\ proc\ Progress\ \{cnt\ depth\}\ \{\n\ \ \ \ lappend\ ::W(answer)\ \[format\ \"%2d\ %5d\"\ \$depth\ \$cnt\]\n\ \ \ \ .lb\ see\ end\n\ \ \ \ update\n\ \}\n\ proc\ MakeRE\ \{word\}\ \{\n\ \ \ \ set\ re\ \{\}\n\ \ \ \ for\ \{set\ i\ 0\}\ \{\$i\ <\ \[string\ length\ \$word\]\}\ \{incr\ i\}\ \{\n\ \ \ \ \ \ \ \ lappend\ re\ \"(\[string\ replace\ \$word\ \$i\ \$i\ .\])\"\n\ \ \ \ \}\n\ \ \ \ set\ re\ \[join\ \$re\ \"|\"\]\n\ \ \ \ return\ \$re\n\ \}\n\ \n\ proc\ QInit\ \{\}\ \{\n\ \ \ \ unset\ -nocomplain\ ::Q\n\ \ \ \ set\ ::Q(head)\ 0\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \;#\ Head:\ 1\ ahead\ of\ first\ item\n\ \ \ \ set\ ::Q(tail)\ 0\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \;#\ Tail:\ last\ unviewed\ item\n\ \}\n\ proc\ QPush\ \{token\}\ \{\n\ \ \ \ set\ ::Q(\$::Q(head))\ \$token\n\ \ \ \ incr\ ::Q(head)\n\ \}\n\ proc\ QPop\ \{\}\ \{\n\ \ \ \ if\ \{\$::Q(head)\ ==\ \$::Q(tail)\}\ \{\ return\ -1\}\ \ \;#\ Empty\ Q\n\ \ \ \ set\ id\ \$::Q(tail)\n\ \ \ \ incr\ ::Q(tail)\n\ \ \ \ return\ \[concat\ \$id\ \$::Q(\$id)\]\n\ \}\n\ proc\ QVisited\ \{word\}\ \{\n\ \ \ \ if\ \{\[info\ exists\ ::Q(v,\$word)\]\}\ \{\ return\ 1\ \}\n\ \ \ \ set\ ::Q(v,\$word)\ 1\n\ \ \ \ return\ 0\n\ \}\n\ \n\ proc\ GetSolution\ \{\}\ \{\n\ \ \ \ set\ id\ \[expr\ \{\$::Q(head)\ -\ 1\}\]\ \ \ \ \ \ \ \ \ \ \ \ \ \ \;#\ Last\ item\ in\ Q\n\ \ \ \ set\ chain\ \{\}\n\ \ \ \ while\ \{\$id\ !=\ -1\}\ \{\n\ \ \ \ \ \ \ \ foreach\ \{word\ id\}\ \$::Q(\$id)\ break\n\ \ \ \ \ \ \ \ set\ chain\ \[concat\ \$word\ \$chain\]\n\ \ \ \ \}\n\ \ \ \ return\ \$chain\n\ \}\n\ proc\ Shuffle\ \{\ alist\ \}\ \{\n\ \ \ \ set\ len\ \[llength\ \$alist\]\n\ \ \ \ set\ len2\ \$len\n\ \ \ \ for\ \{set\ i\ 0\}\ \{\$i\ <\ \$len-1\}\ \{incr\ i\}\ \{\n\ \ \ \ \ \ \ \ set\ n\ \[expr\ \{int(\$i\ +\ \$len2\ *\ rand())\}\]\n\ \ \ \ \ \ \ \ incr\ len2\ -1\n\ \n\ \ \ \ \ \ \ \ #\ Swap\ elements\ at\ i\ &\ n\n\ \ \ \ \ \ \ \ set\ temp\ \[lindex\ \$alist\ \$i\]\n\ \ \ \ \ \ \ \ lset\ alist\ \$i\ \[lindex\ \$alist\ \$n\]\n\ \ \ \ \ \ \ \ lset\ alist\ \$n\ \$temp\n\ \ \ \ \}\n\ \ \ \ return\ \$alist\n\ \}\n\ \n\ proc\ Solve\ \{\}\ \{\n\ \ \ \ if\ \{\$::W(solving)\}\ return\n\n\ \ \ \ set\ ::WORDS(3)\ \[Shuffle\ \$::WORDS(3)\]\n\ \ \ \ set\ ::WORDS(4)\ \[Shuffle\ \$::WORDS(4)\]\n\n\ \ \ \ set\ ::W(solving)\ 1\n\ \ \ \ set\ ::W(answer)\ \"Solving...\"\n\ \ \ \ set\ answer\ \[Chain\ \$::W(start)\ \$::W(end)\ Progress\]\n\ \ \ \ if\ \{\$answer\ eq\ \"\"\}\ \{set\ answer\ impossible\}\n\ \ \ \ set\ ::W(answer)\ \$answer\n\ \n\ \ \ \ set\ ::W(solving)\ 0\n\ \}\n\ proc\ Random\ \{\}\ \{\n\ \ \ \ if\ \{\$::W(solving)\}\ return\n\ \ \ \ set\ wlen\ \[expr\ \{rand()\ >\ .5\ ?\ 4\ :\ 3\}\]\n\ \ \ \ set\ llen\ \[llength\ \$::WORDS(\$wlen)\]\n\ \ \ \ set\ ::W(start)\ \[lindex\ \$::WORDS(\$wlen)\ \[expr\ \{int(rand()\ *\ \$llen)\}\]\]\n\ \ \ \ set\ ::W(end)\ \[lindex\ \$::WORDS(\$wlen)\ \[expr\ \{int(rand()\ *\ \$llen)\}\]\]\n\ \ \ \ set\ ::W(answer)\ \"\"\n\ \}\n\ proc\ Tracer\ \{var1\ var2\ op\}\ \{\n\ \ \ \ if\ \{\$::W(solving)\}\ return\n\ \ \ \ set\ status\ disabled\n\ \ \ \ while\ \{1\}\ \{\n\ \ \ \ \ \ \ \ set\ wlen\ \[string\ length\ \$::W(start)\]\n\ \ \ \ \ \ \ \ if\ \{\$wlen\ !=\ \[string\ length\ \$::W(end)\]\}\ break\n\ \ \ \ \ \ \ \ if\ \{!\ \[info\ exists\ ::WORDS(\$wlen)\]\}\ break\n\ \ \ \ \ \ \ \ if\ \{\[lsearch\ -exact\ \$::WORDS(\$wlen)\ \$::W(start)\]\ ==\ -1\}\ break\n\ \ \ \ \ \ \ \ if\ \{\[lsearch\ -exact\ \$::WORDS(\$wlen)\ \$::W(end)\]\ ==\ -1\}\ break\n\ \ \ \ \ \ \ \ set\ status\ normal\n\ \ \ \ \ \ \ \ break\n\ \ \ \ \}\n\ \ \ \ .go\ config\ -state\ \$status\n\ \}\n\ proc\ About\ \{\}\ \{\n\ \ \ \ set\ msg\ \"Word\ Chain\\nBy\ Keith\ Vetter,\ Oct\ 2006\"\n\ \ \ \ tk_messageBox\ -title\ \"About\"\ -message\ \$msg\n\ \}\n\ ################################################################\n\ set\ WORDS(3)\ \{\n\ \ \ \ ace\ act\ add\ ade\ ado\ ads\ adz\ aft\ age\ ago\ aha\ aid\ ail\ aim\ air\ alb\ ale\ all\ alp\n\ \ \ \ amp\ and\ ant\ any\ ape\ apt\ arc\ are\ ark\ arm\ art\ ash\ ask\ asp\ ass\ ate\ auf\ aux\ awe\n\ \ \ \ awl\ awn\ axe\ aye\ baa\ bad\ bag\ bah\ ban\ bar\ bat\ bay\ bed\ bee\ beg\ bet\ bib\ bid\ big\n\ \ \ \ bin\ bit\ boa\ bob\ bog\ boo\ bop\ bow\ box\ boy\ bra\ bud\ bug\ bum\ bun\ bus\ but\ buy\ bye\n\ \ \ \ cab\ cad\ cam\ can\ cap\ car\ cat\ caw\ cay\ cee\ chi\ cob\ cod\ cog\ col\ con\ coo\ cop\ cot\n\ \ \ \ cow\ coy\ cry\ cub\ cud\ cue\ cup\ cur\ cut\ dab\ dad\ dam\ day\ dee\ den\ dew\ did\ die\ dig\n\ \ \ \ dim\ din\ dip\ doc\ doe\ dog\ don\ dot\ dry\ dub\ dud\ due\ dug\ dun\ duo\ dye\ ear\ eat\ ebb\n\ \ \ \ eel\ egg\ ego\ eke\ elf\ elk\ ell\ elm\ emu\ end\ eon\ era\ ere\ erg\ err\ eta\ eve\ ewe\ eye\n\ \ \ \ fad\ fag\ fan\ far\ fat\ fax\ fay\ fed\ fee\ fen\ few\ fey\ fez\ fib\ fie\ fig\ fin\ fir\ fit\n\ \ \ \ fix\ flu\ fly\ fob\ foe\ fog\ fop\ for\ fox\ fro\ fry\ fun\ fur\ gab\ gad\ gag\ gal\ gam\ gap\n\ \ \ \ gar\ gas\ gay\ gee\ gel\ gem\ get\ gig\ gin\ gnu\ gob\ god\ got\ gum\ gun\ gut\ guy\ gym\ gyp\n\ \ \ \ had\ hag\ hah\ ham\ has\ hat\ haw\ hay\ hem\ hen\ hep\ her\ hew\ hex\ hey\ hid\ hie\ him\ hip\n\ \ \ \ his\ hit\ hob\ hod\ hoe\ hog\ hoi\ hop\ hot\ how\ hub\ hue\ hug\ huh\ hum\ hut\ ice\ icy\ ifs\n\ \ \ \ ilk\ ill\ imp\ ink\ inn\ ins\ ion\ ire\ irk\ its\ ivy\ jab\ jag\ jam\ jar\ jaw\ jay\ jet\ jib\n\ \ \ \ jig\ job\ jog\ jot\ joy\ jug\ jus\ jut\ keg\ ken\ key\ kid\ kin\ kip\ kit\ lab\ lad\ lag\ lam\n\ \ \ \ lap\ law\ lax\ lay\ lea\ led\ lee\ leg\ lei\ let\ lib\ lid\ lie\ lip\ lit\ lob\ log\ loo\ lop\n\ \ \ \ lot\ low\ lox\ lug\ lye\ mad\ man\ map\ mar\ mat\ maw\ max\ may\ men\ met\ mew\ mid\ mil\ min\n\ \ \ \ mix\ mob\ mod\ mom\ moo\ mop\ mow\ mud\ mug\ mum\ nab\ nag\ nap\ nay\ nee\ net\ new\ nib\ nil\n\ \ \ \ nip\ nit\ nix\ nod\ non\ nor\ not\ now\ nth\ nub\ nun\ nut\ oaf\ oak\ oar\ oat\ obi\ odd\ ode\n\ \ \ \ off\ oft\ ohm\ oil\ old\ ole\ one\ opt\ orb\ ore\ ort\ our\ out\ ova\ owe\ owl\ own\ pad\ pal\n\ \ \ \ pan\ pap\ par\ pat\ paw\ pay\ pea\ pee\ peg\ pen\ pep\ per\ pet\ pew\ phi\ pie\ pig\ pin\ pip\n\ \ \ \ pit\ pix\ ply\ pod\ poi\ pop\ pot\ pow\ pox\ pry\ psi\ pub\ pug\ pun\ pup\ pus\ put\ rag\ rah\n\ \ \ \ ram\ ran\ rap\ rat\ raw\ ray\ red\ ref\ rep\ ret\ rev\ rex\ rho\ rib\ rid\ rig\ rim\ rip\ rob\n\ \ \ \ roc\ rod\ roe\ rot\ row\ rub\ rue\ rug\ rum\ run\ rut\ rye\ sac\ sad\ sag\ sap\ sat\ saw\ sax\n\ \ \ \ say\ sea\ see\ seq\ set\ sew\ sex\ she\ shy\ sic\ sin\ sip\ sir\ sis\ sit\ six\ ski\ sky\ sly\n\ \ \ \ sob\ sod\ sol\ son\ sop\ sot\ sow\ soy\ spa\ spy\ sty\ sub\ sue\ sum\ sun\ sup\ tab\ tad\ tag\n\ \ \ \ tam\ tan\ tao\ tap\ tar\ tat\ tau\ tax\ tea\ ted\ tee\ ten\ the\ thy\ tic\ tie\ tin\ tip\ tit\n\ \ \ \ toe\ tog\ tom\ ton\ too\ top\ tor\ tot\ tow\ toy\ try\ tub\ tug\ tun\ tux\ two\ ump\ ups\ urn\n\ \ \ \ use\ van\ vat\ vee\ vet\ vex\ via\ vie\ vim\ viz\ vow\ wad\ wag\ wan\ war\ was\ wax\ way\ web\n\ \ \ \ wed\ wee\ wet\ who\ why\ wig\ win\ wit\ woe\ won\ woo\ wow\ wry\ yak\ yam\ yap\ yaw\ yea\ yen\n\ \ \ \ yes\ yet\ yew\ yip\ yon\ you\ zag\ zap\ zed\ zee\ zip\ zoo\}\n\ set\ WORDS(4)\ \{\n\ \ \ \ abbe\ abed\ abet\ able\ ably\ abut\ aced\ aces\ ache\ achy\ acid\ acme\ acne\ acre\ acts\n\ \ \ \ acyl\ adds\ aero\ afar\ agar\ aged\ ages\ agog\ ague\ ahem\ ahoy\ aide\ aids\ ails\ aims\n\ \ \ \ airs\ airy\ ajar\ akin\ alai\ alar\ alas\ alba\ albs\ alee\ ales\ alga\ alia\ alit\ ally\n\ \ \ \ alms\ aloe\ alps\ also\ alto\ alum\ amah\ ambo\ amen\ amid\ ammo\ amok\ amps\ anal\ anew\n\ \ \ \ ankh\ anon\ ante\ ants\ anus\ aped\ apes\ apex\ apse\ aqua\ arch\ arcs\ area\ ares\ aria\n\ \ \ \ arid\ arks\ arms\ army\ arts\ arty\ arum\ ashy\ asks\ asps\ assn\ atom\ atop\ aula\ auld\n\ \ \ \ aunt\ aura\ auto\ avec\ aver\ avid\ avis\ avow\ away\ awed\ awes\ awls\ awns\ awry\ axed\n\ \ \ \ axes\ axil\ axis\ axle\ axon\ ayah\ ayes\ baas\ babe\ baby\ back\ bade\ bags\ bail\ bait\n\ \ \ \ bake\ bald\ bale\ balk\ ball\ balm\ band\ bane\ bang\ bank\ bans\ barb\ bard\ bare\ bark\n\ \ \ \ barn\ bars\ base\ bash\ bask\ bass\ bate\ bath\ bats\ batt\ baud\ bawd\ bawl\ bays\ bead\n\ \ \ \ beak\ beam\ bean\ bear\ beat\ beau\ beck\ beds\ beef\ been\ beep\ beer\ bees\ beet\ begs\n\ \ \ \ bell\ belt\ bema\ bend\ bent\ berg\ best\ beta\ bets\ bevy\ bias\ bibs\ bide\ bids\ bier\n\ \ \ \ bike\ bile\ bilk\ bill\ bind\ bins\ bird\ bite\ bits\ blab\ bled\ blew\ blip\ blob\ bloc\n\ \ \ \ blot\ blow\ blue\ blur\ boar\ boas\ boat\ bobs\ bock\ bode\ body\ bogs\ bogy\ boil\ bola\n\ \ \ \ bold\ bole\ boll\ bolo\ bolt\ bomb\ bona\ bond\ bone\ bong\ bony\ book\ boom\ boon\ boor\n\ \ \ \ boos\ boot\ bops\ bore\ born\ bosh\ boss\ both\ bout\ bowl\ bows\ boxy\ brad\ brae\ brag\n\ \ \ \ bran\ bras\ brat\ bray\ bred\ brew\ brig\ brim\ brow\ brut\ bubo\ buck\ buds\ buff\ bugs\n\ \ \ \ bulb\ bulk\ bull\ bump\ bums\ bung\ bunk\ buns\ bunt\ buoy\ burg\ burl\ burn\ burp\ burr\n\ \ \ \ bury\ bush\ buss\ bust\ busy\ butt\ buys\ buzz\ byes\ byte\ cabs\ cads\ cafe\ cage\ cake\n\ \ \ \ calf\ call\ calm\ came\ camp\ cams\ cane\ cans\ cant\ cape\ caps\ card\ care\ carp\ cars\n\ \ \ \ cart\ case\ cash\ cask\ cast\ cats\ cava\ cave\ cavy\ caws\ cays\ cede\ cell\ cent\ chap\n\ \ \ \ char\ chat\ chef\ chew\ chic\ chin\ chip\ chit\ chop\ chow\ chub\ chug\ chum\ ciao\ cite\n\ \ \ \ city\ clad\ clam\ clan\ clap\ claw\ clay\ clef\ clew\ clip\ clod\ clog\ clop\ clot\ cloy\n\ \ \ \ club\ clue\ coal\ coat\ coax\ cobs\ coca\ cock\ coco\ coda\ code\ cods\ coed\ cogs\ coif\n\ \ \ \ coil\ coin\ coke\ cola\ cold\ colt\ coma\ comb\ come\ cone\ conk\ conn\ cons\ cony\ cook\n\ \ \ \ cool\ coon\ coop\ coos\ coot\ cope\ cops\ copy\ cord\ core\ cork\ corn\ cost\ cote\ cots\n\ \ \ \ coup\ cove\ cowl\ cows\ cozy\ crab\ crag\ cram\ crap\ craw\ crew\ crib\ crop\ crow\ crux\n\ \ \ \ cube\ cubs\ cuds\ cued\ cues\ cuff\ cull\ cult\ cups\ curb\ curd\ cure\ curl\ curs\ curt\n\ \ \ \ cusp\ cuss\ cute\ cuts\ cyan\ cyst\ czar\ dabs\ dado\ dads\ daft\ dais\ dale\ dame\ damn\n\ \ \ \ damp\ dams\ dank\ dare\ dark\ darn\ dart\ dash\ data\ date\ daub\ dawn\ days\ daze\ dead\n\ \ \ \ deaf\ deal\ dean\ dear\ debt\ deck\ deed\ deem\ deep\ deer\ deft\ defy\ deja\ deli\ dell\n\ \ \ \ demo\ dens\ dent\ deny\ desk\ dewy\ dhow\ dial\ dice\ dick\ died\ diem\ dies\ diet\ digs\n\ \ \ \ dike\ dill\ dime\ dims\ dine\ ding\ dins\ dint\ dips\ dire\ dirk\ dirt\ disc\ dish\ disk\n\ \ \ \ diva\ dive\ dock\ docs\ dodo\ doer\ does\ doff\ doge\ dogs\ dole\ doll\ dolt\ dome\ done\n\ \ \ \ dong\ dons\ doom\ door\ dope\ dorm\ dory\ dose\ dost\ dote\ doth\ dots\ dour\ dove\ down\n\ \ \ \ doze\ dozy\ drab\ drag\ dram\ draw\ dray\ drew\ drip\ drop\ drub\ drug\ drum\ dual\ dubs\n\ \ \ \ duck\ duct\ dude\ duds\ duel\ dues\ duet\ dugs\ duke\ dull\ duly\ dumb\ dump\ dune\ dung\n\ \ \ \ dunk\ duns\ duos\ dupe\ dusk\ dust\ duty\ dyad\ dyed\ dyer\ dyes\ dyne\ each\ earl\ earn\n\ \ \ \ ears\ ease\ east\ easy\ eats\ eave\ ebbs\ echo\ ecru\ eddy\ edge\ edgy\ edit\ eels\ egad\n\ \ \ \ eggs\ egos\ eked\ ekes\ elan\ elks\ ells\ elms\ else\ emir\ emit\ emus\ ends\ envy\ eons\n\ \ \ \ epee\ epic\ eras\ ergo\ ergs\ errs\ espy\ etch\ even\ ever\ eves\ evil\ ewer\ ewes\ exam\n\ \ \ \ exec\ exes\ exit\ eyed\ face\ fact\ fade\ fads\ fags\ fail\ fair\ fake\ fall\ fame\ fang\n\ \ \ \ fans\ fare\ farm\ faro\ fast\ fate\ fats\ faun\ faux\ fawn\ fays\ faze\ fear\ feat\ feed\n\ \ \ \ feel\ fees\ fell\ felt\ fend\ fens\ fern\ fete\ feud\ fiat\ fibs\ fife\ figs\ file\ fill\n\ \ \ \ film\ find\ fine\ fink\ fins\ fire\ firm\ firs\ fish\ fist\ fits\ five\ fizz\ flag\ flak\n\ \ \ \ flap\ flat\ flaw\ flax\ flay\ flea\ fled\ flee\ flew\ flex\ flip\ flit\ floc\ floe\ flog\n\ \ \ \ flop\ flow\ flub\ flue\ flux\ foal\ foam\ fobs\ foci\ foes\ fogs\ fogy\ foil\ fold\ folk\n\ \ \ \ fond\ font\ food\ fool\ foot\ fops\ ford\ fore\ fork\ form\ fort\ foul\ four\ fowl\ foxy\n\ \ \ \ frau\ fray\ free\ fret\ frog\ from\ fuel\ full\ fume\ fumy\ fund\ funk\ furl\ furs\ fury\n\ \ \ \ fuse\ fuss\ fuzz\ gabs\ gads\ gaff\ gage\ gags\ gain\ gait\ gala\ gale\ gall\ gals\ game\n\ \ \ \ gams\ gamy\ gang\ gape\ gaps\ garb\ gars\ gash\ gasp\ gate\ gaud\ gave\ gawk\ gays\ gaze\n\ \ \ \ gear\ geek\ geld\ gels\ gems\ gene\ gent\ germ\ gets\ gibe\ gift\ gigs\ gild\ gill\ gilt\n\ \ \ \ gins\ gird\ girl\ girt\ gist\ give\ glad\ glee\ glen\ glib\ glob\ glow\ glue\ glum\ glut\n\ \ \ \ gnat\ gnaw\ gnus\ goad\ goal\ goat\ gobs\ gods\ goes\ gogo\ gold\ golf\ gone\ gong\ good\n\ \ \ \ goof\ gook\ goon\ gore\ gory\ gosh\ gout\ gown\ grab\ grad\ gram\ gray\ grew\ grey\ grid\n\ \ \ \ grim\ grin\ grip\ grit\ grog\ grot\ grow\ grub\ gulf\ gull\ gulp\ gums\ gunk\ guns\ guru\n\ \ \ \ gush\ gust\ guts\ guys\ gyms\ gyps\ gyre\ gyro\ hack\ haft\ hags\ hail\ hair\ hake\ hale\n\ \ \ \ half\ hall\ halo\ halt\ hams\ hand\ hang\ hank\ hard\ hare\ hark\ harm\ harp\ hart\ hash\n\ \ \ \ hasp\ hast\ hate\ hath\ hats\ haul\ have\ hawk\ haws\ hays\ haze\ hazy\ head\ heal\ heap\n\ \ \ \ hear\ heat\ heck\ heed\ heel\ heft\ heir\ held\ hell\ helm\ help\ hemp\ hems\ hens\ herb\n\ \ \ \ herd\ here\ hero\ hers\ hewn\ hews\ hick\ hide\ hied\ hies\ high\ hike\ hill\ hilt\ hind\n\ \ \ \ hint\ hips\ hire\ hiss\ hits\ hive\ hoax\ hobo\ hobs\ hock\ hods\ hoed\ hoer\ hoes\ hogs\n\ \ \ \ hold\ hole\ holy\ home\ homo\ hone\ honk\ hood\ hoof\ hook\ hoop\ hoot\ hope\ hops\ horn\n\ \ \ \ hors\ hose\ host\ hour\ hove\ howl\ hubs\ huck\ hued\ hues\ huff\ huge\ hugs\ hula\ hulk\n\ \ \ \ hull\ hump\ hums\ hung\ hunk\ hunt\ hurl\ hurt\ hush\ husk\ huts\ hymn\ hypo\ iamb\ ibex\n\ \ \ \ ibid\ ibis\ iced\ ices\ icon\ idea\ ides\ idle\ idly\ idol\ iffy\ ills\ imam\ imps\ inch\n\ \ \ \ info\ inks\ inky\ inns\ into\ ions\ iota\ ipso\ ires\ iris\ irks\ iron\ isle\ itch\ item\n\ \ \ \ jabs\ jack\ jade\ jags\ jail\ jake\ jamb\ jams\ jape\ jars\ jaws\ jays\ jazz\ jean\ jeep\n\ \ \ \ jeer\ jell\ jerk\ jess\ jest\ jets\ jibe\ jibs\ jiff\ jigs\ jilt\ jinn\ jinx\ jive\ jobs\n\ \ \ \ jock\ jogs\ john\ joie\ join\ joke\ jolt\ josh\ joss\ jots\ jour\ jowl\ joys\ judo\ jugs\n\ \ \ \ jump\ junk\ jure\ jury\ just\ jute\ juts\ kale\ kava\ kayo\ keel\ keen\ keep\ kegs\ kelp\n\ \ \ \ kens\ kepi\ kept\ keys\ khan\ kick\ kids\ kill\ kiln\ kilo\ kilt\ kind\ kine\ king\ kink\n\ \ \ \ kips\ kirk\ kiss\ kite\ kith\ kits\ kiwi\ knee\ knew\ knit\ knob\ knot\ know\ kola\ kung\n\ \ \ \ labs\ lace\ lack\ lacy\ lade\ lads\ lady\ lags\ laid\ lain\ lair\ lake\ laky\ lama\ lamb\n\ \ \ \ lame\ lamp\ land\ lane\ lank\ laps\ lard\ lark\ lash\ lass\ last\ late\ lath\ laud\ lava\n\ \ \ \ lave\ lawn\ laws\ lays\ laze\ lazy\ lead\ leaf\ leak\ lean\ leap\ leas\ leek\ leer\ lees\n\ \ \ \ left\ legs\ leis\ lend\ lens\ lent\ less\ lest\ lets\ levy\ lewd\ liar\ libs\ lice\ lice\n\ \ \ \ lick\ lids\ lied\ lief\ lien\ lies\ lieu\ life\ lift\ like\ lilt\ lily\ limb\ lime\ limn\n\ \ \ \ limp\ limy\ line\ ling\ link\ lint\ lion\ lips\ lisp\ list\ live\ load\ loaf\ loam\ loan\n\ \ \ \ lobe\ lobs\ loch\ loci\ lock\ loco\ lode\ loft\ loge\ logs\ logy\ loin\ loll\ lone\ long\n\ \ \ \ look\ loom\ loon\ loop\ loot\ lope\ lops\ lord\ lore\ lose\ loss\ lost\ lots\ loud\ lout\n\ \ \ \ love\ lows\ lube\ luck\ luff\ lugs\ lull\ lump\ lung\ lure\ lurk\ lush\ lust\ lute\ lyes\n\ \ \ \ lynx\ lyre\ mace\ made\ magi\ maid\ mail\ maim\ main\ make\ male\ mall\ malt\ mama\ mane\n\ \ \ \ mans\ many\ maps\ mare\ mark\ marl\ mars\ mart\ mash\ mask\ mass\ mast\ mate\ math\ mats\n\ \ \ \ maul\ maws\ maze\ mazy\ mead\ meal\ mean\ meat\ meed\ meek\ meet\ meld\ melt\ memo\ mend\n\ \ \ \ menu\ mere\ mesa\ mesh\ mess\ mete\ mewl\ mews\ mica\ mice\ midi\ mien\ miff\ migs\ mike\n\ \ \ \ mild\ mile\ milk\ mill\ mils\ milt\ mime\ mind\ mine\ mini\ mink\ mins\ mint\ minx\ mire\n\ \ \ \ miry\ miss\ mist\ mite\ mitt\ moan\ moat\ mobs\ mock\ mode\ moil\ mold\ mole\ moll\ molt\n\ \ \ \ moms\ monk\ mono\ mood\ moon\ moor\ moos\ moot\ mope\ mops\ more\ morn\ moss\ most\ mote\n\ \ \ \ moth\ move\ mown\ mows\ much\ muck\ muff\ mugs\ mule\ mull\ mums\ murk\ muse\ mush\ musk\n\ \ \ \ muss\ must\ mute\ mutt\ myna\ myth\ nabs\ nags\ nail\ name\ nape\ naps\ nard\ nary\ nave\n\ \ \ \ navy\ nays\ neap\ near\ neat\ nebs\ neck\ need\ neon\ nest\ nets\ news\ newt\ next\ nibs\n\ \ \ \ nice\ nick\ nigh\ nine\ nips\ nits\ node\ nods\ noel\ nolo\ none\ nons\ nook\ noon\ nope\n\ \ \ \ norm\ nose\ nosy\ note\ noun\ nova\ nubs\ nude\ nuke\ null\ numb\ nuns\ nuts\ oafs\ oaks\n\ \ \ \ oars\ oath\ oats\ obey\ oboe\ odds\ odes\ odor\ offs\ ogle\ ogre\ ohms\ oils\ oily\ oink\n\ \ \ \ okay\ okra\ oleo\ olio\ omen\ omit\ once\ ones\ only\ onto\ onus\ onyx\ ooze\ oozy\ opal\n\ \ \ \ open\ opts\ opus\ oral\ orbs\ ores\ orgy\ orts\ otic\ ouch\ ours\ oust\ outs\ ouzo\ oval\n\ \ \ \ oven\ over\ ovum\ owed\ owes\ owls\ owns\ oxen\ pace\ pack\ pact\ pads\ page\ paid\ pail\n\ \ \ \ pain\ pair\ pale\ pall\ palm\ pals\ pane\ pang\ pans\ pant\ papa\ pare\ park\ pars\ part\n\ \ \ \ pass\ past\ pate\ path\ pats\ pave\ pawl\ pawn\ paws\ pays\ peak\ peal\ pear\ peas\ peat\n\ \ \ \ peck\ peek\ peel\ peen\ peep\ peer\ pees\ pegs\ pelf\ pelt\ pend\ pens\ pent\ peon\ peps\n\ \ \ \ perk\ perm\ pert\ peso\ pest\ pets\ pews\ pica\ pick\ pied\ pier\ pies\ pigs\ pike\ pile\n\ \ \ \ pill\ pimp\ pine\ ping\ pink\ pins\ pint\ pipe\ pips\ pita\ pith\ pits\ pity\ pixy\ plan\n\ \ \ \ plat\ play\ plea\ pled\ plod\ plop\ plot\ plow\ ploy\ plug\ plum\ plus\ pock\ pods\ poem\n\ \ \ \ poet\ poke\ poky\ pole\ poll\ polo\ poly\ pomp\ pond\ pony\ pooh\ pool\ poop\ poor\ pope\n\ \ \ \ pops\ pore\ pork\ port\ pose\ posh\ post\ posy\ pots\ pour\ pout\ pows\ pram\ pray\ prep\n\ \ \ \ prey\ prig\ prim\ prix\ prod\ prof\ prom\ prop\ prow\ pubs\ puce\ puck\ puff\ pugs\ puke\n\ \ \ \ pull\ pulp\ puma\ pump\ punk\ puns\ punt\ puny\ pupa\ pups\ pure\ purl\ purr\ push\ puss\n\ \ \ \ puts\ putt\ pyre\ quad\ quay\ quid\ quip\ quit\ quiz\ race\ rack\ racy\ raft\ raga\ rage\n\ \ \ \ rags\ raid\ rail\ rain\ raja\ rake\ ramp\ rams\ rang\ rank\ rant\ rape\ raps\ rapt\ rare\n\ \ \ \ rash\ rasp\ rate\ rats\ rave\ rays\ raze\ razz\ read\ real\ ream\ reap\ rear\ redo\ reds\n\ \ \ \ reed\ reef\ reek\ reel\ refs\ rein\ rely\ rend\ rent\ rest\ rets\ revs\ rhea\ ribs\ rice\n\ \ \ \ rich\ rick\ ride\ rids\ rife\ riff\ rift\ rigs\ rile\ rill\ rime\ rims\ rind\ ring\ rink\n\ \ \ \ riot\ ripe\ rips\ rise\ risk\ rite\ rive\ road\ roam\ roan\ roar\ robe\ robs\ rock\ rocs\n\ \ \ \ rode\ rods\ roes\ roil\ role\ roll\ romp\ rood\ roof\ rook\ room\ root\ rope\ rose\ rosy\n\ \ \ \ rote\ rots\ rout\ rove\ rows\ rube\ rubs\ ruby\ rude\ rued\ rues\ ruff\ rugs\ ruin\ rule\n\ \ \ \ rump\ rums\ rune\ rung\ runs\ runt\ ruse\ rush\ rusk\ rust\ ruts\ ryes\ sack\ sacs\ safe\n\ \ \ \ saga\ sage\ sago\ sags\ said\ sail\ sake\ sale\ salt\ same\ sand\ sane\ sang\ sank\ sans\n\ \ \ \ saps\ sari\ sash\ sass\ sate\ save\ sawn\ saws\ says\ scab\ scam\ scan\ scar\ scat\ scow\n\ \ \ \ scud\ scum\ seal\ seam\ sear\ seas\ seat\ sect\ seed\ seek\ seem\ seen\ seep\ seer\ sees\n\ \ \ \ self\ sell\ semi\ send\ sent\ sera\ sere\ serf\ seta\ sets\ sewn\ sews\ sexy\ shad\ shag\n\ \ \ \ shah\ sham\ shaw\ shay\ shed\ shim\ shin\ ship\ shiv\ shod\ shoe\ shoo\ shop\ shot\ show\n\ \ \ \ shun\ shut\ sick\ side\ sift\ sigh\ sign\ silk\ sill\ silo\ silt\ sine\ sing\ sink\ sins\n\ \ \ \ sips\ sire\ sirs\ site\ sits\ size\ skew\ skid\ skim\ skin\ skip\ skis\ skit\ slab\ slag\n\ \ \ \ slam\ slap\ slat\ slaw\ slay\ sled\ slew\ slid\ slim\ slip\ slit\ slob\ sloe\ slog\ slop\n\ \ \ \ slot\ slow\ slue\ slug\ slum\ slur\ slut\ smog\ smug\ smut\ snag\ snap\ snip\ snob\ snot\n\ \ \ \ snow\ snub\ snug\ soak\ soap\ soar\ sobs\ sock\ soda\ sods\ sofa\ soft\ soil\ sold\ sole\n\ \ \ \ solo\ sols\ some\ song\ sons\ soon\ soot\ sops\ sore\ sort\ sots\ soul\ soup\ sour\ sown\n\ \ \ \ sows\ soya\ span\ spar\ spas\ spat\ spay\ spec\ sped\ spew\ spin\ spit\ spot\ spry\ spud\n\ \ \ \ spun\ spur\ stab\ stag\ star\ stay\ stem\ step\ stet\ stew\ stir\ stop\ stow\ stub\ stud\n\ \ \ \ stun\ subs\ such\ suck\ suds\ sued\ sues\ suet\ suey\ suit\ sulk\ sums\ sung\ sunk\ suns\n\ \ \ \ sups\ sure\ surf\ swab\ swag\ swam\ swan\ swap\ swat\ sway\ swig\ swim\ swum\ sync\ tabs\n\ \ \ \ tabu\ tack\ tact\ tads\ taft\ tags\ tail\ take\ talc\ tale\ talk\ tall\ tame\ tamp\ tams\n\ \ \ \ tang\ tank\ tans\ tape\ taps\ tare\ tarn\ taro\ tarp\ tars\ tart\ task\ tats\ taut\ taxi\n\ \ \ \ teak\ teal\ team\ tear\ teas\ teat\ tech\ teds\ teed\ teem\ teen\ tees\ tell\ temp\ tend\n\ \ \ \ tens\ tent\ term\ tern\ test\ text\ than\ that\ thaw\ thee\ them\ then\ they\ thin\ this\n\ \ \ \ thou\ thud\ thug\ thus\ tick\ tics\ tide\ tidy\ tied\ tier\ ties\ tiff\ tile\ till\ tilt\n\ \ \ \ time\ tine\ tins\ tint\ tiny\ tips\ tire\ tits\ toad\ toed\ toes\ tofu\ toga\ togs\ toil\n\ \ \ \ toke\ told\ toll\ tomb\ tome\ toms\ tone\ tong\ tonk\ tons\ took\ tool\ toot\ tope\ tops\n\ \ \ \ tore\ torn\ tort\ toss\ tote\ tots\ tour\ tout\ town\ tows\ toys\ tram\ trap\ tray\ tree\n\ \ \ \ trek\ trig\ trim\ trio\ trip\ trod\ trot\ troy\ true\ tsar\ tuba\ tube\ tubs\ tuck\ tufa\n\ \ \ \ tuff\ tuft\ tugs\ tuna\ tune\ tung\ tuns\ turf\ turn\ tusk\ tutu\ twig\ twin\ twit\ twos\n\ \ \ \ tyke\ type\ typo\ tyro\ ugly\ ulna\ umps\ undo\ unit\ unto\ upon\ urea\ urge\ uric\ urns\n\ \ \ \ used\ user\ uses\ vade\ vain\ vale\ vamp\ vane\ vans\ vary\ vase\ vast\ vats\ veal\ veer\n\ \ \ \ vees\ veil\ vein\ vela\ vend\ vent\ verb\ very\ vest\ veto\ vets\ vial\ vice\ vied\ vies\n\ \ \ \ view\ vile\ vine\ viol\ visa\ vise\ vita\ viva\ vive\ vivo\ void\ vole\ volt\ vote\ vows\n\ \ \ \ wade\ wadi\ wads\ waft\ wage\ wags\ waif\ wail\ wait\ wake\ walk\ wall\ wand\ wane\ want\n\ \ \ \ ward\ ware\ warm\ warn\ warp\ wars\ wart\ wary\ wash\ wasp\ watt\ wave\ wavy\ waxy\ ways\n\ \ \ \ weak\ weal\ wean\ wear\ webs\ weds\ weed\ week\ weep\ weft\ weir\ weld\ well\ welt\ wend\n\ \ \ \ went\ wept\ were\ wert\ west\ wets\ wham\ what\ when\ whet\ whew\ whey\ whim\ whip\ whir\n\ \ \ \ whit\ whiz\ whoa\ whom\ whys\ wick\ wide\ wife\ wigs\ wild\ wile\ will\ wilt\ wily\ wind\n\ \ \ \ wine\ wing\ wink\ wins\ winy\ wipe\ wire\ wiry\ wise\ wish\ wisp\ with\ wits\ wive\ woad\n\ \ \ \ woes\ woke\ wold\ wolf\ womb\ wont\ wood\ woof\ wool\ woos\ word\ wore\ work\ worm\ worn\n\ \ \ \ wove\ wows\ wrap\ wren\ writ\ yaks\ yams\ yang\ yank\ yaps\ yard\ yarn\ yawl\ yawn\ yawp\n\ \ \ \ yaws\ yeah\ year\ yegg\ yell\ yelp\ yens\ yews\ yips\ yoga\ yogi\ yoke\ yolk\ yore\ your\n\ \ \ \ yowl\ yule\ yurt\ zany\ zaps\ zeal\ zebu\ zero\ zest\ zeta\ zinc\ zing\ zips\ zone\ zoom\}\n\ \n\ set\ start\ amen\n\ set\ end\ quay\n\ \n\ DoDisplay\n\ Random\n\ return\n======\n\n----\n\[http://img25.imageshack.us/img25/2392/tclwikiwordchainpngth7.png\]\n\n<<categories>>\ Games\ |\ Tcl/Tk\ Games\ |\ Application regexp2} CALL {my render {Word Chain} \[Keith\ Vetter\]\ 2006-10-12\ :\ Here's\ a\ little\ program\ to\ solve\nword\ chains--a\ list\ of\ words\ where\ each\ word\ differs\ from\ its\nneighbor\ by\ exactly\ one\ letter.\ An\ example\ of\ a\ word\ chain\nwould\ be\ ''warm\ -\ ward\ -\ card\ -\ cord\ -\ cold''.\n\nYou\ first\ enter\ a\ starting\ and\ ending\ word\ both\ of\ either\ three\ or\ four\nletters.\ Then\ this\ program\ will\ compute\ the\ shortest\ word\ chain\nleading\ from\ the\ starting\ word\ and\ leading\ to\ the\ ending\ word.\nBuilt\ into\ this\ program\ is\ a\ 500+\ 3-letter\ word\ list\ and\ a\ 2300+\ 4-letter\nword\ list.\n\nI'm\ a\ bit\ proud\ of\ my\ algorithm\ for\ determining\ all\ ''neighboring''\nwords\ for\ given\ word.\ I\ came\ up\ with\ a\ 1-liner\ using\ regular\nexpressions\ and\ \[lsearch\].\ For\ example,\ the\ neighbors\ of\ ''warm''\ncan\ be\ found\ with:\n\n======\n\ \ \ \ lsearch\ -all\ -regexp\ \$wordlist\ \"(.arm)|(w.rm)|(wa.m)|(war.)\"\n\nSee\ also\ \[The\ word-chain\ game\]\ for\ an\ abortive\ start\ at\ a\ similar\ idea.\n\n----\n======\n\ ##+##########################################################################\n\ #\n\ #\ WordChain.tcl\ --\ Computes\ word\ chains\ for\ 3\ &\ 4\ letter\ words\n\ #\ by\ Keith\ Vetter,\ Oct\ 12,\ 2006\ \n\ #\n\ \n\ package\ require\ Tk\n\ package\ require\ tile\n\ \n\ proc\ DoDisplay\ \{\}\ \{\n\ \ \ \ wm\ title\ .\ \"Word\ Chain\"\n\ \n\ \ \ \ label\ .title\ -text\ \"Word\ Chain\"\ -font\ \{Times\ 32\ bold\}\ -relief\ raised\ -fg\ blue\n\ \ \ \ frame\ .puzzle\ \n\ \ \ \ entry\ .start\ -textvariable\ W(start)\ -width\ 5\n\ \ \ \ label\ .arrow\ -text\ \">>\"\n\ \ \ \ entry\ .end\ -textvariable\ W(end)\ -width\ 5\n\ \n\ \ \ \ frame\ .answer\ -bd\ 2\ -relief\ ridge\n\ \ \ \ listbox\ .lb\ -yscrollcommand\ \".sb_y\ set\"\ -bd\ 0\ -listvariable\ W(answer)\ \\\n\ \ \ \ \ \ \ \ -exportselection\ 0\ -takefocus\ 0\ -font\ \{Courier\ 10\}\ -width\ 11\ -height\ 9\n\ \ \ \ scrollbar\ .sb_y\ -orient\ v\ -command\ \".lb\ yview\"\n\ \ \ \ pack\ .sb_y\ -in\ .answer\ -side\ right\ -fill\ y\n\ \ \ \ pack\ .lb\ -in\ .answer\ -side\ left\ -fill\ both\ -expand\ 1\n\ \n\ \ \ \ pack\ .answer\ -in\ .puzzle\ -side\ bottom\ -pady\ \{10\ 0\}\n\ \ \ \ pack\ .start\ .arrow\ .end\ -in\ .puzzle\ -side\ left\ -expand\ 1\n\ \n\ \ \ \ frame\ .buttons\n\ \ \ \ ::ttk::button\ .go\ -text\ \"Solve\"\ -command\ Solve\n\ \ \ \ ::ttk::button\ .rand\ -text\ \"Random\"\ -command\ Random\n\ \ \ \ ::ttk::button\ .about\ -text\ About\ -command\ About\n\ \ \ \ pack\ .go\ .rand\ -in\ .buttons\ -side\ top\ -padx\ 10\ -pady\ 5\n\ \ \ \ pack\ .about\ -side\ bottom\ -in\ .buttons\n\ \n\ \ \ \ grid\ .title\ -\ -pady\ 10\ -padx\ 10\ -ipadx\ 10\n\ \ \ \ grid\ .puzzle\ .buttons\ -sticky\ ns\ -pady\ \{0\ 10\}\n\ \n\ \ \ \ foreach\ i\ \[trace\ info\ variable\ ::W\]\ \{\ eval\ trace\ remove\ variable\ ::W\ \$i\ \}\n\ \ \ \ set\ ::W(solving)\ 0\n\ \ \ \ trace\ variable\ ::W\ w\ Tracer\n\ \}\n\ \n\ proc\ Chain\ \{start\ end\ \{progress\ \{\}\}\}\ \{\n\ \ \ \ if\ \{\$start\ eq\ \$end\}\ \{return\ \[list\ \$start\ \$end\]\}\n\ \n\ \ \ \ set\ wlen\ \[string\ length\ \$start\]\n\ \ \ \ \n\ \ \ \ QInit\n\ \ \ \ QPush\ \[list\ \$start\ -1\ 0\]\n\ \ \ \ QVisited\ \$start\n\ \n\ \ \ \ set\ cnt\ 0\n\ \ \ \ while\ \{1\}\ \{\n\ \ \ \ \ \ \ \ foreach\ \{id\ word\ .\ depth\}\ \[QPop\]\ break\n\ \ \ \ \ \ \ \ if\ \{\$id\ ==\ -1\}\ break\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \;#\ Failure,\ empty\ Q\n\ \n\ \ \ \ \ \ \ \ incr\ depth\n\ \ \ \ \ \ \ \ if\ \{(\[incr\ cnt\]\ %\ 100)\ ==\ 0\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ if\ \{\$progress\ ne\ \"\"\}\ \{\ \$progress\ \$cnt\ \$depth\ \}\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ foreach\ idx\ \[lsearch\ -all\ -regexp\ \$::WORDS(\$wlen)\ \[MakeRE\ \$word\]\]\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ set\ next\ \[lindex\ \$::WORDS(\$wlen)\ \$idx\]\n\ \ \ \ \ \ \ \ \ \ \ \ if\ \{\[QVisited\ \$next\]\}\ continue\ \ \ \ \ \ \;#\ Already\ done\ this\ word,\ skip\n\ \ \ \ \ \ \ \ \ \ \ \ QPush\ \[list\ \$next\ \$id\ \$depth\]\n\ \ \ \ \ \ \ \ \ \ \ \ if\ \{\$next\ eq\ \$end\}\ break\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ if\ \{\$next\ eq\ \$end\}\ break\n\ \ \ \ \}\n\ \ \ \ if\ \{\$id\ ==\ -1\}\ \{\ return\ \{\}\ \}\n\ \ \ \ return\ \[GetSolution\]\n\ \}\n\ proc\ Progress\ \{cnt\ depth\}\ \{\n\ \ \ \ lappend\ ::W(answer)\ \[format\ \"%2d\ %5d\"\ \$depth\ \$cnt\]\n\ \ \ \ .lb\ see\ end\n\ \ \ \ update\n\ \}\n\ proc\ MakeRE\ \{word\}\ \{\n\ \ \ \ set\ re\ \{\}\n\ \ \ \ for\ \{set\ i\ 0\}\ \{\$i\ <\ \[string\ length\ \$word\]\}\ \{incr\ i\}\ \{\n\ \ \ \ \ \ \ \ lappend\ re\ \"(\[string\ replace\ \$word\ \$i\ \$i\ .\])\"\n\ \ \ \ \}\n\ \ \ \ set\ re\ \[join\ \$re\ \"|\"\]\n\ \ \ \ return\ \$re\n\ \}\n\ \n\ proc\ QInit\ \{\}\ \{\n\ \ \ \ unset\ -nocomplain\ ::Q\n\ \ \ \ set\ ::Q(head)\ 0\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \;#\ Head:\ 1\ ahead\ of\ first\ item\n\ \ \ \ set\ ::Q(tail)\ 0\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \;#\ Tail:\ last\ unviewed\ item\n\ \}\n\ proc\ QPush\ \{token\}\ \{\n\ \ \ \ set\ ::Q(\$::Q(head))\ \$token\n\ \ \ \ incr\ ::Q(head)\n\ \}\n\ proc\ QPop\ \{\}\ \{\n\ \ \ \ if\ \{\$::Q(head)\ ==\ \$::Q(tail)\}\ \{\ return\ -1\}\ \ \;#\ Empty\ Q\n\ \ \ \ set\ id\ \$::Q(tail)\n\ \ \ \ incr\ ::Q(tail)\n\ \ \ \ return\ \[concat\ \$id\ \$::Q(\$id)\]\n\ \}\n\ proc\ QVisited\ \{word\}\ \{\n\ \ \ \ if\ \{\[info\ exists\ ::Q(v,\$word)\]\}\ \{\ return\ 1\ \}\n\ \ \ \ set\ ::Q(v,\$word)\ 1\n\ \ \ \ return\ 0\n\ \}\n\ \n\ proc\ GetSolution\ \{\}\ \{\n\ \ \ \ set\ id\ \[expr\ \{\$::Q(head)\ -\ 1\}\]\ \ \ \ \ \ \ \ \ \ \ \ \ \ \;#\ Last\ item\ in\ Q\n\ \ \ \ set\ chain\ \{\}\n\ \ \ \ while\ \{\$id\ !=\ -1\}\ \{\n\ \ \ \ \ \ \ \ foreach\ \{word\ id\}\ \$::Q(\$id)\ break\n\ \ \ \ \ \ \ \ set\ chain\ \[concat\ \$word\ \$chain\]\n\ \ \ \ \}\n\ \ \ \ return\ \$chain\n\ \}\n\ proc\ Shuffle\ \{\ alist\ \}\ \{\n\ \ \ \ set\ len\ \[llength\ \$alist\]\n\ \ \ \ set\ len2\ \$len\n\ \ \ \ for\ \{set\ i\ 0\}\ \{\$i\ <\ \$len-1\}\ \{incr\ i\}\ \{\n\ \ \ \ \ \ \ \ set\ n\ \[expr\ \{int(\$i\ +\ \$len2\ *\ rand())\}\]\n\ \ \ \ \ \ \ \ incr\ len2\ -1\n\ \n\ \ \ \ \ \ \ \ #\ Swap\ elements\ at\ i\ &\ n\n\ \ \ \ \ \ \ \ set\ temp\ \[lindex\ \$alist\ \$i\]\n\ \ \ \ \ \ \ \ lset\ alist\ \$i\ \[lindex\ \$alist\ \$n\]\n\ \ \ \ \ \ \ \ lset\ alist\ \$n\ \$temp\n\ \ \ \ \}\n\ \ \ \ return\ \$alist\n\ \}\n\ \n\ proc\ Solve\ \{\}\ \{\n\ \ \ \ if\ \{\$::W(solving)\}\ return\n\n\ \ \ \ set\ ::WORDS(3)\ \[Shuffle\ \$::WORDS(3)\]\n\ \ \ \ set\ ::WORDS(4)\ \[Shuffle\ \$::WORDS(4)\]\n\n\ \ \ \ set\ ::W(solving)\ 1\n\ \ \ \ set\ ::W(answer)\ \"Solving...\"\n\ \ \ \ set\ answer\ \[Chain\ \$::W(start)\ \$::W(end)\ Progress\]\n\ \ \ \ if\ \{\$answer\ eq\ \"\"\}\ \{set\ answer\ impossible\}\n\ \ \ \ set\ ::W(answer)\ \$answer\n\ \n\ \ \ \ set\ ::W(solving)\ 0\n\ \}\n\ proc\ Random\ \{\}\ \{\n\ \ \ \ if\ \{\$::W(solving)\}\ return\n\ \ \ \ set\ wlen\ \[expr\ \{rand()\ >\ .5\ ?\ 4\ :\ 3\}\]\n\ \ \ \ set\ llen\ \[llength\ \$::WORDS(\$wlen)\]\n\ \ \ \ set\ ::W(start)\ \[lindex\ \$::WORDS(\$wlen)\ \[expr\ \{int(rand()\ *\ \$llen)\}\]\]\n\ \ \ \ set\ ::W(end)\ \[lindex\ \$::WORDS(\$wlen)\ \[expr\ \{int(rand()\ *\ \$llen)\}\]\]\n\ \ \ \ set\ ::W(answer)\ \"\"\n\ \}\n\ proc\ Tracer\ \{var1\ var2\ op\}\ \{\n\ \ \ \ if\ \{\$::W(solving)\}\ return\n\ \ \ \ set\ status\ disabled\n\ \ \ \ while\ \{1\}\ \{\n\ \ \ \ \ \ \ \ set\ wlen\ \[string\ length\ \$::W(start)\]\n\ \ \ \ \ \ \ \ if\ \{\$wlen\ !=\ \[string\ length\ \$::W(end)\]\}\ break\n\ \ \ \ \ \ \ \ if\ \{!\ \[info\ exists\ ::WORDS(\$wlen)\]\}\ break\n\ \ \ \ \ \ \ \ if\ \{\[lsearch\ -exact\ \$::WORDS(\$wlen)\ \$::W(start)\]\ ==\ -1\}\ break\n\ \ \ \ \ \ \ \ if\ \{\[lsearch\ -exact\ \$::WORDS(\$wlen)\ \$::W(end)\]\ ==\ -1\}\ break\n\ \ \ \ \ \ \ \ set\ status\ normal\n\ \ \ \ \ \ \ \ break\n\ \ \ \ \}\n\ \ \ \ .go\ config\ -state\ \$status\n\ \}\n\ proc\ About\ \{\}\ \{\n\ \ \ \ set\ msg\ \"Word\ Chain\\nBy\ Keith\ Vetter,\ Oct\ 2006\"\n\ \ \ \ tk_messageBox\ -title\ \"About\"\ -message\ \$msg\n\ \}\n\ ################################################################\n\ set\ WORDS(3)\ \{\n\ \ \ \ ace\ act\ add\ ade\ ado\ ads\ adz\ aft\ age\ ago\ aha\ aid\ ail\ aim\ air\ alb\ ale\ all\ alp\n\ \ \ \ amp\ and\ ant\ any\ ape\ apt\ arc\ are\ ark\ arm\ art\ ash\ ask\ asp\ ass\ ate\ auf\ aux\ awe\n\ \ \ \ awl\ awn\ axe\ aye\ baa\ bad\ bag\ bah\ ban\ bar\ bat\ bay\ bed\ bee\ beg\ bet\ bib\ bid\ big\n\ \ \ \ bin\ bit\ boa\ bob\ bog\ boo\ bop\ bow\ box\ boy\ bra\ bud\ bug\ bum\ bun\ bus\ but\ buy\ bye\n\ \ \ \ cab\ cad\ cam\ can\ cap\ car\ cat\ caw\ cay\ cee\ chi\ cob\ cod\ cog\ col\ con\ coo\ cop\ cot\n\ \ \ \ cow\ coy\ cry\ cub\ cud\ cue\ cup\ cur\ cut\ dab\ dad\ dam\ day\ dee\ den\ dew\ did\ die\ dig\n\ \ \ \ dim\ din\ dip\ doc\ doe\ dog\ don\ dot\ dry\ dub\ dud\ due\ dug\ dun\ duo\ dye\ ear\ eat\ ebb\n\ \ \ \ eel\ egg\ ego\ eke\ elf\ elk\ ell\ elm\ emu\ end\ eon\ era\ ere\ erg\ err\ eta\ eve\ ewe\ eye\n\ \ \ \ fad\ fag\ fan\ far\ fat\ fax\ fay\ fed\ fee\ fen\ few\ fey\ fez\ fib\ fie\ fig\ fin\ fir\ fit\n\ \ \ \ fix\ flu\ fly\ fob\ foe\ fog\ fop\ for\ fox\ fro\ fry\ fun\ fur\ gab\ gad\ gag\ gal\ gam\ gap\n\ \ \ \ gar\ gas\ gay\ gee\ gel\ gem\ get\ gig\ gin\ gnu\ gob\ god\ got\ gum\ gun\ gut\ guy\ gym\ gyp\n\ \ \ \ had\ hag\ hah\ ham\ has\ hat\ haw\ hay\ hem\ hen\ hep\ her\ hew\ hex\ hey\ hid\ hie\ him\ hip\n\ \ \ \ his\ hit\ hob\ hod\ hoe\ hog\ hoi\ hop\ hot\ how\ hub\ hue\ hug\ huh\ hum\ hut\ ice\ icy\ ifs\n\ \ \ \ ilk\ ill\ imp\ ink\ inn\ ins\ ion\ ire\ irk\ its\ ivy\ jab\ jag\ jam\ jar\ jaw\ jay\ jet\ jib\n\ \ \ \ jig\ job\ jog\ jot\ joy\ jug\ jus\ jut\ keg\ ken\ key\ kid\ kin\ kip\ kit\ lab\ lad\ lag\ lam\n\ \ \ \ lap\ law\ lax\ lay\ lea\ led\ lee\ leg\ lei\ let\ lib\ lid\ lie\ lip\ lit\ lob\ log\ loo\ lop\n\ \ \ \ lot\ low\ lox\ lug\ lye\ mad\ man\ map\ mar\ mat\ maw\ max\ may\ men\ met\ mew\ mid\ mil\ min\n\ \ \ \ mix\ mob\ mod\ mom\ moo\ mop\ mow\ mud\ mug\ mum\ nab\ nag\ nap\ nay\ nee\ net\ new\ nib\ nil\n\ \ \ \ nip\ nit\ nix\ nod\ non\ nor\ not\ now\ nth\ nub\ nun\ nut\ oaf\ oak\ oar\ oat\ obi\ odd\ ode\n\ \ \ \ off\ oft\ ohm\ oil\ old\ ole\ one\ opt\ orb\ ore\ ort\ our\ out\ ova\ owe\ owl\ own\ pad\ pal\n\ \ \ \ pan\ pap\ par\ pat\ paw\ pay\ pea\ pee\ peg\ pen\ pep\ per\ pet\ pew\ phi\ pie\ pig\ pin\ pip\n\ \ \ \ pit\ pix\ ply\ pod\ poi\ pop\ pot\ pow\ pox\ pry\ psi\ pub\ pug\ pun\ pup\ pus\ put\ rag\ rah\n\ \ \ \ ram\ ran\ rap\ rat\ raw\ ray\ red\ ref\ rep\ ret\ rev\ rex\ rho\ rib\ rid\ rig\ rim\ rip\ rob\n\ \ \ \ roc\ rod\ roe\ rot\ row\ rub\ rue\ rug\ rum\ run\ rut\ rye\ sac\ sad\ sag\ sap\ sat\ saw\ sax\n\ \ \ \ say\ sea\ see\ seq\ set\ sew\ sex\ she\ shy\ sic\ sin\ sip\ sir\ sis\ sit\ six\ ski\ sky\ sly\n\ \ \ \ sob\ sod\ sol\ son\ sop\ sot\ sow\ soy\ spa\ spy\ sty\ sub\ sue\ sum\ sun\ sup\ tab\ tad\ tag\n\ \ \ \ tam\ tan\ tao\ tap\ tar\ tat\ tau\ tax\ tea\ ted\ tee\ ten\ the\ thy\ tic\ tie\ tin\ tip\ tit\n\ \ \ \ toe\ tog\ tom\ ton\ too\ top\ tor\ tot\ tow\ toy\ try\ tub\ tug\ tun\ tux\ two\ ump\ ups\ urn\n\ \ \ \ use\ van\ vat\ vee\ vet\ vex\ via\ vie\ vim\ viz\ vow\ wad\ wag\ wan\ war\ was\ wax\ way\ web\n\ \ \ \ wed\ wee\ wet\ who\ why\ wig\ win\ wit\ woe\ won\ woo\ wow\ wry\ yak\ yam\ yap\ yaw\ yea\ yen\n\ \ \ \ yes\ yet\ yew\ yip\ yon\ you\ zag\ zap\ zed\ zee\ zip\ zoo\}\n\ set\ WORDS(4)\ \{\n\ \ \ \ abbe\ abed\ abet\ able\ ably\ abut\ aced\ aces\ ache\ achy\ acid\ acme\ acne\ acre\ acts\n\ \ \ \ acyl\ adds\ aero\ afar\ agar\ aged\ ages\ agog\ ague\ ahem\ ahoy\ aide\ aids\ ails\ aims\n\ \ \ \ airs\ airy\ ajar\ akin\ alai\ alar\ alas\ alba\ albs\ alee\ ales\ alga\ alia\ alit\ ally\n\ \ \ \ alms\ aloe\ alps\ also\ alto\ alum\ amah\ ambo\ amen\ amid\ ammo\ amok\ amps\ anal\ anew\n\ \ \ \ ankh\ anon\ ante\ ants\ anus\ aped\ apes\ apex\ apse\ aqua\ arch\ arcs\ area\ ares\ aria\n\ \ \ \ arid\ arks\ arms\ army\ arts\ arty\ arum\ ashy\ asks\ asps\ assn\ atom\ atop\ aula\ auld\n\ \ \ \ aunt\ aura\ auto\ avec\ aver\ avid\ avis\ avow\ away\ awed\ awes\ awls\ awns\ awry\ axed\n\ \ \ \ axes\ axil\ axis\ axle\ axon\ ayah\ ayes\ baas\ babe\ baby\ back\ bade\ bags\ bail\ bait\n\ \ \ \ bake\ bald\ bale\ balk\ ball\ balm\ band\ bane\ bang\ bank\ bans\ barb\ bard\ bare\ bark\n\ \ \ \ barn\ bars\ base\ bash\ bask\ bass\ bate\ bath\ bats\ batt\ baud\ bawd\ bawl\ bays\ bead\n\ \ \ \ beak\ beam\ bean\ bear\ beat\ beau\ beck\ beds\ beef\ been\ beep\ beer\ bees\ beet\ begs\n\ \ \ \ bell\ belt\ bema\ bend\ bent\ berg\ best\ beta\ bets\ bevy\ bias\ bibs\ bide\ bids\ bier\n\ \ \ \ bike\ bile\ bilk\ bill\ bind\ bins\ bird\ bite\ bits\ blab\ bled\ blew\ blip\ blob\ bloc\n\ \ \ \ blot\ blow\ blue\ blur\ boar\ boas\ boat\ bobs\ bock\ bode\ body\ bogs\ bogy\ boil\ bola\n\ \ \ \ bold\ bole\ boll\ bolo\ bolt\ bomb\ bona\ bond\ bone\ bong\ bony\ book\ boom\ boon\ boor\n\ \ \ \ boos\ boot\ bops\ bore\ born\ bosh\ boss\ both\ bout\ bowl\ bows\ boxy\ brad\ brae\ brag\n\ \ \ \ bran\ bras\ brat\ bray\ bred\ brew\ brig\ brim\ brow\ brut\ bubo\ buck\ buds\ buff\ bugs\n\ \ \ \ bulb\ bulk\ bull\ bump\ bums\ bung\ bunk\ buns\ bunt\ buoy\ burg\ burl\ burn\ burp\ burr\n\ \ \ \ bury\ bush\ buss\ bust\ busy\ butt\ buys\ buzz\ byes\ byte\ cabs\ cads\ cafe\ cage\ cake\n\ \ \ \ calf\ call\ calm\ came\ camp\ cams\ cane\ cans\ cant\ cape\ caps\ card\ care\ carp\ cars\n\ \ \ \ cart\ case\ cash\ cask\ cast\ cats\ cava\ cave\ cavy\ caws\ cays\ cede\ cell\ cent\ chap\n\ \ \ \ char\ chat\ chef\ chew\ chic\ chin\ chip\ chit\ chop\ chow\ chub\ chug\ chum\ ciao\ cite\n\ \ \ \ city\ clad\ clam\ clan\ clap\ claw\ clay\ clef\ clew\ clip\ clod\ clog\ clop\ clot\ cloy\n\ \ \ \ club\ clue\ coal\ coat\ coax\ cobs\ coca\ cock\ coco\ coda\ code\ cods\ coed\ cogs\ coif\n\ \ \ \ coil\ coin\ coke\ cola\ cold\ colt\ coma\ comb\ come\ cone\ conk\ conn\ cons\ cony\ cook\n\ \ \ \ cool\ coon\ coop\ coos\ coot\ cope\ cops\ copy\ cord\ core\ cork\ corn\ cost\ cote\ cots\n\ \ \ \ coup\ cove\ cowl\ cows\ cozy\ crab\ crag\ cram\ crap\ craw\ crew\ crib\ crop\ crow\ crux\n\ \ \ \ cube\ cubs\ cuds\ cued\ cues\ cuff\ cull\ cult\ cups\ curb\ curd\ cure\ curl\ curs\ curt\n\ \ \ \ cusp\ cuss\ cute\ cuts\ cyan\ cyst\ czar\ dabs\ dado\ dads\ daft\ dais\ dale\ dame\ damn\n\ \ \ \ damp\ dams\ dank\ dare\ dark\ darn\ dart\ dash\ data\ date\ daub\ dawn\ days\ daze\ dead\n\ \ \ \ deaf\ deal\ dean\ dear\ debt\ deck\ deed\ deem\ deep\ deer\ deft\ defy\ deja\ deli\ dell\n\ \ \ \ demo\ dens\ dent\ deny\ desk\ dewy\ dhow\ dial\ dice\ dick\ died\ diem\ dies\ diet\ digs\n\ \ \ \ dike\ dill\ dime\ dims\ dine\ ding\ dins\ dint\ dips\ dire\ dirk\ dirt\ disc\ dish\ disk\n\ \ \ \ diva\ dive\ dock\ docs\ dodo\ doer\ does\ doff\ doge\ dogs\ dole\ doll\ dolt\ dome\ done\n\ \ \ \ dong\ dons\ doom\ door\ dope\ dorm\ dory\ dose\ dost\ dote\ doth\ dots\ dour\ dove\ down\n\ \ \ \ doze\ dozy\ drab\ drag\ dram\ draw\ dray\ drew\ drip\ drop\ drub\ drug\ drum\ dual\ dubs\n\ \ \ \ duck\ duct\ dude\ duds\ duel\ dues\ duet\ dugs\ duke\ dull\ duly\ dumb\ dump\ dune\ dung\n\ \ \ \ dunk\ duns\ duos\ dupe\ dusk\ dust\ duty\ dyad\ dyed\ dyer\ dyes\ dyne\ each\ earl\ earn\n\ \ \ \ ears\ ease\ east\ easy\ eats\ eave\ ebbs\ echo\ ecru\ eddy\ edge\ edgy\ edit\ eels\ egad\n\ \ \ \ eggs\ egos\ eked\ ekes\ elan\ elks\ ells\ elms\ else\ emir\ emit\ emus\ ends\ envy\ eons\n\ \ \ \ epee\ epic\ eras\ ergo\ ergs\ errs\ espy\ etch\ even\ ever\ eves\ evil\ ewer\ ewes\ exam\n\ \ \ \ exec\ exes\ exit\ eyed\ face\ fact\ fade\ fads\ fags\ fail\ fair\ fake\ fall\ fame\ fang\n\ \ \ \ fans\ fare\ farm\ faro\ fast\ fate\ fats\ faun\ faux\ fawn\ fays\ faze\ fear\ feat\ feed\n\ \ \ \ feel\ fees\ fell\ felt\ fend\ fens\ fern\ fete\ feud\ fiat\ fibs\ fife\ figs\ file\ fill\n\ \ \ \ film\ find\ fine\ fink\ fins\ fire\ firm\ firs\ fish\ fist\ fits\ five\ fizz\ flag\ flak\n\ \ \ \ flap\ flat\ flaw\ flax\ flay\ flea\ fled\ flee\ flew\ flex\ flip\ flit\ floc\ floe\ flog\n\ \ \ \ flop\ flow\ flub\ flue\ flux\ foal\ foam\ fobs\ foci\ foes\ fogs\ fogy\ foil\ fold\ folk\n\ \ \ \ fond\ font\ food\ fool\ foot\ fops\ ford\ fore\ fork\ form\ fort\ foul\ four\ fowl\ foxy\n\ \ \ \ frau\ fray\ free\ fret\ frog\ from\ fuel\ full\ fume\ fumy\ fund\ funk\ furl\ furs\ fury\n\ \ \ \ fuse\ fuss\ fuzz\ gabs\ gads\ gaff\ gage\ gags\ gain\ gait\ gala\ gale\ gall\ gals\ game\n\ \ \ \ gams\ gamy\ gang\ gape\ gaps\ garb\ gars\ gash\ gasp\ gate\ gaud\ gave\ gawk\ gays\ gaze\n\ \ \ \ gear\ geek\ geld\ gels\ gems\ gene\ gent\ germ\ gets\ gibe\ gift\ gigs\ gild\ gill\ gilt\n\ \ \ \ gins\ gird\ girl\ girt\ gist\ give\ glad\ glee\ glen\ glib\ glob\ glow\ glue\ glum\ glut\n\ \ \ \ gnat\ gnaw\ gnus\ goad\ goal\ goat\ gobs\ gods\ goes\ gogo\ gold\ golf\ gone\ gong\ good\n\ \ \ \ goof\ gook\ goon\ gore\ gory\ gosh\ gout\ gown\ grab\ grad\ gram\ gray\ grew\ grey\ grid\n\ \ \ \ grim\ grin\ grip\ grit\ grog\ grot\ grow\ grub\ gulf\ gull\ gulp\ gums\ gunk\ guns\ guru\n\ \ \ \ gush\ gust\ guts\ guys\ gyms\ gyps\ gyre\ gyro\ hack\ haft\ hags\ hail\ hair\ hake\ hale\n\ \ \ \ half\ hall\ halo\ halt\ hams\ hand\ hang\ hank\ hard\ hare\ hark\ harm\ harp\ hart\ hash\n\ \ \ \ hasp\ hast\ hate\ hath\ hats\ haul\ have\ hawk\ haws\ hays\ haze\ hazy\ head\ heal\ heap\n\ \ \ \ hear\ heat\ heck\ heed\ heel\ heft\ heir\ held\ hell\ helm\ help\ hemp\ hems\ hens\ herb\n\ \ \ \ herd\ here\ hero\ hers\ hewn\ hews\ hick\ hide\ hied\ hies\ high\ hike\ hill\ hilt\ hind\n\ \ \ \ hint\ hips\ hire\ hiss\ hits\ hive\ hoax\ hobo\ hobs\ hock\ hods\ hoed\ hoer\ hoes\ hogs\n\ \ \ \ hold\ hole\ holy\ home\ homo\ hone\ honk\ hood\ hoof\ hook\ hoop\ hoot\ hope\ hops\ horn\n\ \ \ \ hors\ hose\ host\ hour\ hove\ howl\ hubs\ huck\ hued\ hues\ huff\ huge\ hugs\ hula\ hulk\n\ \ \ \ hull\ hump\ hums\ hung\ hunk\ hunt\ hurl\ hurt\ hush\ husk\ huts\ hymn\ hypo\ iamb\ ibex\n\ \ \ \ ibid\ ibis\ iced\ ices\ icon\ idea\ ides\ idle\ idly\ idol\ iffy\ ills\ imam\ imps\ inch\n\ \ \ \ info\ inks\ inky\ inns\ into\ ions\ iota\ ipso\ ires\ iris\ irks\ iron\ isle\ itch\ item\n\ \ \ \ jabs\ jack\ jade\ jags\ jail\ jake\ jamb\ jams\ jape\ jars\ jaws\ jays\ jazz\ jean\ jeep\n\ \ \ \ jeer\ jell\ jerk\ jess\ jest\ jets\ jibe\ jibs\ jiff\ jigs\ jilt\ jinn\ jinx\ jive\ jobs\n\ \ \ \ jock\ jogs\ john\ joie\ join\ joke\ jolt\ josh\ joss\ jots\ jour\ jowl\ joys\ judo\ jugs\n\ \ \ \ jump\ junk\ jure\ jury\ just\ jute\ juts\ kale\ kava\ kayo\ keel\ keen\ keep\ kegs\ kelp\n\ \ \ \ kens\ kepi\ kept\ keys\ khan\ kick\ kids\ kill\ kiln\ kilo\ kilt\ kind\ kine\ king\ kink\n\ \ \ \ kips\ kirk\ kiss\ kite\ kith\ kits\ kiwi\ knee\ knew\ knit\ knob\ knot\ know\ kola\ kung\n\ \ \ \ labs\ lace\ lack\ lacy\ lade\ lads\ lady\ lags\ laid\ lain\ lair\ lake\ laky\ lama\ lamb\n\ \ \ \ lame\ lamp\ land\ lane\ lank\ laps\ lard\ lark\ lash\ lass\ last\ late\ lath\ laud\ lava\n\ \ \ \ lave\ lawn\ laws\ lays\ laze\ lazy\ lead\ leaf\ leak\ lean\ leap\ leas\ leek\ leer\ lees\n\ \ \ \ left\ legs\ leis\ lend\ lens\ lent\ less\ lest\ lets\ levy\ lewd\ liar\ libs\ lice\ lice\n\ \ \ \ lick\ lids\ lied\ lief\ lien\ lies\ lieu\ life\ lift\ like\ lilt\ lily\ limb\ lime\ limn\n\ \ \ \ limp\ limy\ line\ ling\ link\ lint\ lion\ lips\ lisp\ list\ live\ load\ loaf\ loam\ loan\n\ \ \ \ lobe\ lobs\ loch\ loci\ lock\ loco\ lode\ loft\ loge\ logs\ logy\ loin\ loll\ lone\ long\n\ \ \ \ look\ loom\ loon\ loop\ loot\ lope\ lops\ lord\ lore\ lose\ loss\ lost\ lots\ loud\ lout\n\ \ \ \ love\ lows\ lube\ luck\ luff\ lugs\ lull\ lump\ lung\ lure\ lurk\ lush\ lust\ lute\ lyes\n\ \ \ \ lynx\ lyre\ mace\ made\ magi\ maid\ mail\ maim\ main\ make\ male\ mall\ malt\ mama\ mane\n\ \ \ \ mans\ many\ maps\ mare\ mark\ marl\ mars\ mart\ mash\ mask\ mass\ mast\ mate\ math\ mats\n\ \ \ \ maul\ maws\ maze\ mazy\ mead\ meal\ mean\ meat\ meed\ meek\ meet\ meld\ melt\ memo\ mend\n\ \ \ \ menu\ mere\ mesa\ mesh\ mess\ mete\ mewl\ mews\ mica\ mice\ midi\ mien\ miff\ migs\ mike\n\ \ \ \ mild\ mile\ milk\ mill\ mils\ milt\ mime\ mind\ mine\ mini\ mink\ mins\ mint\ minx\ mire\n\ \ \ \ miry\ miss\ mist\ mite\ mitt\ moan\ moat\ mobs\ mock\ mode\ moil\ mold\ mole\ moll\ molt\n\ \ \ \ moms\ monk\ mono\ mood\ moon\ moor\ moos\ moot\ mope\ mops\ more\ morn\ moss\ most\ mote\n\ \ \ \ moth\ move\ mown\ mows\ much\ muck\ muff\ mugs\ mule\ mull\ mums\ murk\ muse\ mush\ musk\n\ \ \ \ muss\ must\ mute\ mutt\ myna\ myth\ nabs\ nags\ nail\ name\ nape\ naps\ nard\ nary\ nave\n\ \ \ \ navy\ nays\ neap\ near\ neat\ nebs\ neck\ need\ neon\ nest\ nets\ news\ newt\ next\ nibs\n\ \ \ \ nice\ nick\ nigh\ nine\ nips\ nits\ node\ nods\ noel\ nolo\ none\ nons\ nook\ noon\ nope\n\ \ \ \ norm\ nose\ nosy\ note\ noun\ nova\ nubs\ nude\ nuke\ null\ numb\ nuns\ nuts\ oafs\ oaks\n\ \ \ \ oars\ oath\ oats\ obey\ oboe\ odds\ odes\ odor\ offs\ ogle\ ogre\ ohms\ oils\ oily\ oink\n\ \ \ \ okay\ okra\ oleo\ olio\ omen\ omit\ once\ ones\ only\ onto\ onus\ onyx\ ooze\ oozy\ opal\n\ \ \ \ open\ opts\ opus\ oral\ orbs\ ores\ orgy\ orts\ otic\ ouch\ ours\ oust\ outs\ ouzo\ oval\n\ \ \ \ oven\ over\ ovum\ owed\ owes\ owls\ owns\ oxen\ pace\ pack\ pact\ pads\ page\ paid\ pail\n\ \ \ \ pain\ pair\ pale\ pall\ palm\ pals\ pane\ pang\ pans\ pant\ papa\ pare\ park\ pars\ part\n\ \ \ \ pass\ past\ pate\ path\ pats\ pave\ pawl\ pawn\ paws\ pays\ peak\ peal\ pear\ peas\ peat\n\ \ \ \ peck\ peek\ peel\ peen\ peep\ peer\ pees\ pegs\ pelf\ pelt\ pend\ pens\ pent\ peon\ peps\n\ \ \ \ perk\ perm\ pert\ peso\ pest\ pets\ pews\ pica\ pick\ pied\ pier\ pies\ pigs\ pike\ pile\n\ \ \ \ pill\ pimp\ pine\ ping\ pink\ pins\ pint\ pipe\ pips\ pita\ pith\ pits\ pity\ pixy\ plan\n\ \ \ \ plat\ play\ plea\ pled\ plod\ plop\ plot\ plow\ ploy\ plug\ plum\ plus\ pock\ pods\ poem\n\ \ \ \ poet\ poke\ poky\ pole\ poll\ polo\ poly\ pomp\ pond\ pony\ pooh\ pool\ poop\ poor\ pope\n\ \ \ \ pops\ pore\ pork\ port\ pose\ posh\ post\ posy\ pots\ pour\ pout\ pows\ pram\ pray\ prep\n\ \ \ \ prey\ prig\ prim\ prix\ prod\ prof\ prom\ prop\ prow\ pubs\ puce\ puck\ puff\ pugs\ puke\n\ \ \ \ pull\ pulp\ puma\ pump\ punk\ puns\ punt\ puny\ pupa\ pups\ pure\ purl\ purr\ push\ puss\n\ \ \ \ puts\ putt\ pyre\ quad\ quay\ quid\ quip\ quit\ quiz\ race\ rack\ racy\ raft\ raga\ rage\n\ \ \ \ rags\ raid\ rail\ rain\ raja\ rake\ ramp\ rams\ rang\ rank\ rant\ rape\ raps\ rapt\ rare\n\ \ \ \ rash\ rasp\ rate\ rats\ rave\ rays\ raze\ razz\ read\ real\ ream\ reap\ rear\ redo\ reds\n\ \ \ \ reed\ reef\ reek\ reel\ refs\ rein\ rely\ rend\ rent\ rest\ rets\ revs\ rhea\ ribs\ rice\n\ \ \ \ rich\ rick\ ride\ rids\ rife\ riff\ rift\ rigs\ rile\ rill\ rime\ rims\ rind\ ring\ rink\n\ \ \ \ riot\ ripe\ rips\ rise\ risk\ rite\ rive\ road\ roam\ roan\ roar\ robe\ robs\ rock\ rocs\n\ \ \ \ rode\ rods\ roes\ roil\ role\ roll\ romp\ rood\ roof\ rook\ room\ root\ rope\ rose\ rosy\n\ \ \ \ rote\ rots\ rout\ rove\ rows\ rube\ rubs\ ruby\ rude\ rued\ rues\ ruff\ rugs\ ruin\ rule\n\ \ \ \ rump\ rums\ rune\ rung\ runs\ runt\ ruse\ rush\ rusk\ rust\ ruts\ ryes\ sack\ sacs\ safe\n\ \ \ \ saga\ sage\ sago\ sags\ said\ sail\ sake\ sale\ salt\ same\ sand\ sane\ sang\ sank\ sans\n\ \ \ \ saps\ sari\ sash\ sass\ sate\ save\ sawn\ saws\ says\ scab\ scam\ scan\ scar\ scat\ scow\n\ \ \ \ scud\ scum\ seal\ seam\ sear\ seas\ seat\ sect\ seed\ seek\ seem\ seen\ seep\ seer\ sees\n\ \ \ \ self\ sell\ semi\ send\ sent\ sera\ sere\ serf\ seta\ sets\ sewn\ sews\ sexy\ shad\ shag\n\ \ \ \ shah\ sham\ shaw\ shay\ shed\ shim\ shin\ ship\ shiv\ shod\ shoe\ shoo\ shop\ shot\ show\n\ \ \ \ shun\ shut\ sick\ side\ sift\ sigh\ sign\ silk\ sill\ silo\ silt\ sine\ sing\ sink\ sins\n\ \ \ \ sips\ sire\ sirs\ site\ sits\ size\ skew\ skid\ skim\ skin\ skip\ skis\ skit\ slab\ slag\n\ \ \ \ slam\ slap\ slat\ slaw\ slay\ sled\ slew\ slid\ slim\ slip\ slit\ slob\ sloe\ slog\ slop\n\ \ \ \ slot\ slow\ slue\ slug\ slum\ slur\ slut\ smog\ smug\ smut\ snag\ snap\ snip\ snob\ snot\n\ \ \ \ snow\ snub\ snug\ soak\ soap\ soar\ sobs\ sock\ soda\ sods\ sofa\ soft\ soil\ sold\ sole\n\ \ \ \ solo\ sols\ some\ song\ sons\ soon\ soot\ sops\ sore\ sort\ sots\ soul\ soup\ sour\ sown\n\ \ \ \ sows\ soya\ span\ spar\ spas\ spat\ spay\ spec\ sped\ spew\ spin\ spit\ spot\ spry\ spud\n\ \ \ \ spun\ spur\ stab\ stag\ star\ stay\ stem\ step\ stet\ stew\ stir\ stop\ stow\ stub\ stud\n\ \ \ \ stun\ subs\ such\ suck\ suds\ sued\ sues\ suet\ suey\ suit\ sulk\ sums\ sung\ sunk\ suns\n\ \ \ \ sups\ sure\ surf\ swab\ swag\ swam\ swan\ swap\ swat\ sway\ swig\ swim\ swum\ sync\ tabs\n\ \ \ \ tabu\ tack\ tact\ tads\ taft\ tags\ tail\ take\ talc\ tale\ talk\ tall\ tame\ tamp\ tams\n\ \ \ \ tang\ tank\ tans\ tape\ taps\ tare\ tarn\ taro\ tarp\ tars\ tart\ task\ tats\ taut\ taxi\n\ \ \ \ teak\ teal\ team\ tear\ teas\ teat\ tech\ teds\ teed\ teem\ teen\ tees\ tell\ temp\ tend\n\ \ \ \ tens\ tent\ term\ tern\ test\ text\ than\ that\ thaw\ thee\ them\ then\ they\ thin\ this\n\ \ \ \ thou\ thud\ thug\ thus\ tick\ tics\ tide\ tidy\ tied\ tier\ ties\ tiff\ tile\ till\ tilt\n\ \ \ \ time\ tine\ tins\ tint\ tiny\ tips\ tire\ tits\ toad\ toed\ toes\ tofu\ toga\ togs\ toil\n\ \ \ \ toke\ told\ toll\ tomb\ tome\ toms\ tone\ tong\ tonk\ tons\ took\ tool\ toot\ tope\ tops\n\ \ \ \ tore\ torn\ tort\ toss\ tote\ tots\ tour\ tout\ town\ tows\ toys\ tram\ trap\ tray\ tree\n\ \ \ \ trek\ trig\ trim\ trio\ trip\ trod\ trot\ troy\ true\ tsar\ tuba\ tube\ tubs\ tuck\ tufa\n\ \ \ \ tuff\ tuft\ tugs\ tuna\ tune\ tung\ tuns\ turf\ turn\ tusk\ tutu\ twig\ twin\ twit\ twos\n\ \ \ \ tyke\ type\ typo\ tyro\ ugly\ ulna\ umps\ undo\ unit\ unto\ upon\ urea\ urge\ uric\ urns\n\ \ \ \ used\ user\ uses\ vade\ vain\ vale\ vamp\ vane\ vans\ vary\ vase\ vast\ vats\ veal\ veer\n\ \ \ \ vees\ veil\ vein\ vela\ vend\ vent\ verb\ very\ vest\ veto\ vets\ vial\ vice\ vied\ vies\n\ \ \ \ view\ vile\ vine\ viol\ visa\ vise\ vita\ viva\ vive\ vivo\ void\ vole\ volt\ vote\ vows\n\ \ \ \ wade\ wadi\ wads\ waft\ wage\ wags\ waif\ wail\ wait\ wake\ walk\ wall\ wand\ wane\ want\n\ \ \ \ ward\ ware\ warm\ warn\ warp\ wars\ wart\ wary\ wash\ wasp\ watt\ wave\ wavy\ waxy\ ways\n\ \ \ \ weak\ weal\ wean\ wear\ webs\ weds\ weed\ week\ weep\ weft\ weir\ weld\ well\ welt\ wend\n\ \ \ \ went\ wept\ were\ wert\ west\ wets\ wham\ what\ when\ whet\ whew\ whey\ whim\ whip\ whir\n\ \ \ \ whit\ whiz\ whoa\ whom\ whys\ wick\ wide\ wife\ wigs\ wild\ wile\ will\ wilt\ wily\ wind\n\ \ \ \ wine\ wing\ wink\ wins\ winy\ wipe\ wire\ wiry\ wise\ wish\ wisp\ with\ wits\ wive\ woad\n\ \ \ \ woes\ woke\ wold\ wolf\ womb\ wont\ wood\ woof\ wool\ woos\ word\ wore\ work\ worm\ worn\n\ \ \ \ wove\ wows\ wrap\ wren\ writ\ yaks\ yams\ yang\ yank\ yaps\ yard\ yarn\ yawl\ yawn\ yawp\n\ \ \ \ yaws\ yeah\ year\ yegg\ yell\ yelp\ yens\ yews\ yips\ yoga\ yogi\ yoke\ yolk\ yore\ your\n\ \ \ \ yowl\ yule\ yurt\ zany\ zaps\ zeal\ zebu\ zero\ zest\ zeta\ zinc\ zing\ zips\ zone\ zoom\}\n\ \n\ set\ start\ amen\n\ set\ end\ quay\n\ \n\ DoDisplay\n\ Random\n\ return\n======\n\n----\n\[http://img25.imageshack.us/img25/2392/tclwikiwordchainpngth7.png\]\n\n<<categories>>\ Games\ |\ Tcl/Tk\ Games\ |\ Application} CALL {my revision {Word Chain}} CALL {::oo::Obj5962375 process revision/Word+Chain} CALL {::oo::Obj5962373 process}

-errorcode

NONE

-errorinfo

Unknow state transition: LINE -> END
    while executing
"error $msg"
    (class "::Wiki" method "render_wikit" line 6)
    invoked from within
"my render_$default_markup $N $C $mkup_rendering_engine"
    (class "::Wiki" method "render" line 8)
    invoked from within
"my render $name $C"
    (class "::Wiki" method "revision" line 31)
    invoked from within
"my revision $page"
    (class "::Wiki" method "process" line 56)
    invoked from within
"$server process [string trim $uri /]"

-errorline

4