[comp.sources.games] v11i059: jotto - plays the jotto word game, Part01/01

billr@saab.CNA.TEK.COM (Bill Randle) (11/17/90)

Submitted-by: George L Sicherman <gls@odyssey.att.COM>
Posting-number: Volume 11, Issue 59
Archive-name: jotto/Part01

# This is a shell archive.  Delete everything before this line.
#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 1 (of 1)."
# Contents:  README MANIFEST Makefile answer.c isis.c jotto.6 jotto.c
#   jotto.d jotto.h jsumm.c legal.c load.c ord.c subs.c
# Wrapped by billr@saab on Fri Nov 16 10:02:36 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'README' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'README'\"
else
echo shar: Extracting \"'README'\" \(352 characters\)
sed "s/^X//" >'README' <<'END_OF_FILE'
XJotto plays the word game of Jotto with you.  You and the program
Xeach secretly choose a common English word of five different letters.
XThe players take turns guessing words of five different letters.
XEach guess (if wrong) is answered by the number of letters in the guess
Xthat occur in the secret word.  The winner is the first player to guess
Xright.
END_OF_FILE
if test 352 -ne `wc -c <'README'`; then
    echo shar: \"'README'\" unpacked with wrong size!
fi
# end of 'README'
fi
if test -f 'MANIFEST' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'MANIFEST'\"
else
echo shar: Extracting \"'MANIFEST'\" \(548 characters\)
sed "s/^X//" >'MANIFEST' <<'END_OF_FILE'
X   File Name		Archive #	Description
X-----------------------------------------------------------
X MANIFEST                   1	This shipping list
X Makefile                   1	
X README                     1	
X answer.c                   1	
X isis.c                     1	
X jotto.6                    1	
X jotto.c                    1	
X jotto.d                    1	
X jotto.h                    1	
X jsumm.c                    1	
X legal.c                    1	
X load.c                     1	
X ord.c                      1	
X subs.c                     1	
END_OF_FILE
if test 548 -ne `wc -c <'MANIFEST'`; then
    echo shar: \"'MANIFEST'\" unpacked with wrong size!
fi
# end of 'MANIFEST'
fi
if test -f 'Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Makefile'\"
else
echo shar: Extracting \"'Makefile'\" \(930 characters\)
sed "s/^X//" >'Makefile' <<'END_OF_FILE'
X#
X#	Makefile for Jotto.
X#
X
X#
X#	The following two lines define the installation paths
X#	for the program, the dictionary, and the man page.
X#
X
XBINDEST = jotto
XDICDEST = jotto.d
XMANDEST = jotto.6
X
XSOURCES = Makefile jotto.6 jotto.h \
X answer.c isis.c jsumm.c legal.c load.c ord.c subs.c jotto.c jotto.d
XOBJECTS = answer.o isis.o jsumm.o legal.o load.o ord.o subs.o jotto.o
Xjotto: $(OBJECTS)
X	cc $(OBJECTS) -o jotto
Xisis.o: jotto.h
Xjsumm.o: jotto.h
Xlegal.o: jotto.h
Xload.o: jotto.h
Xsubs.o: jotto.h
Xjotto.o: jotto.h
X	cc $(CFLAGS) -c -DDICT=\"$(DICDEST)\" jotto.c
Xshar: jotto.shar
Xjotto.shar: $(SOURCES)
X	shar $(SOURCES) > jotto.shar
Xinstall: jotto jotto.d jotto.6
X	if test $(BINDEST) != jotto; then cp jotto $(BINDEST); fi
X	if test $(DICDEST) != jotto.d; then cp jotto.d $(DICDEST); fi
X	if test $(MANDEST) != jotto.6; then \
X        echo .ds Bd $(BINDEST) > $(MANDEST); \
X        cat jotto.6 >> $(MANDEST); fi
Xclean:
X	rm -f *.o *.shar
END_OF_FILE
if test 930 -ne `wc -c <'Makefile'`; then
    echo shar: \"'Makefile'\" unpacked with wrong size!
fi
# end of 'Makefile'
fi
if test -f 'answer.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'answer.c'\"
else
echo shar: Extracting \"'answer.c'\" \(106 characters\)
sed "s/^X//" >'answer.c' <<'END_OF_FILE'
X/*
X *	answer
X */
X
Xanswer(w, n)
Xchar *w;
Xint n;
X{
X	printf(" %s has %d letter%s\n", w, n, n==1? "": "s");
X}
END_OF_FILE
if test 106 -ne `wc -c <'answer.c'`; then
    echo shar: \"'answer.c'\" unpacked with wrong size!
fi
# end of 'answer.c'
fi
if test -f 'isis.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'isis.c'\"
else
echo shar: Extracting \"'isis.c'\" \(444 characters\)
sed "s/^X//" >'isis.c' <<'END_OF_FILE'
X/*
X *	isis
X */
X
X#include "jotto.h"
X
Xisis(guess, array, alen)
Xchar	*guess, *array[];
Xint alen;
X{
X	int	count[WORDLEN+1];
X	int i, retval, lim;
X	static int start = 0;
X
X	lim = alen<64? alen: 64;
X	for (i=0; i<=WORDLEN; i++) count[i] = 0;
X	for (i=0; i<lim; i++) {
X		start += 29;
X		if (start >= alen) start %= alen;
X		count[inter(guess, array[start])]++;
X	}
X	retval = 0;
X	for (i=0; i<=WORDLEN; i++) retval -= count[i]*blog(count[i]);
X	return retval;
X}
END_OF_FILE
if test 444 -ne `wc -c <'isis.c'`; then
    echo shar: \"'isis.c'\" unpacked with wrong size!
fi
# end of 'isis.c'
fi
if test -f 'jotto.6' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'jotto.6'\"
else
echo shar: Extracting \"'jotto.6'\" \(1072 characters\)
sed "s/^X//" >'jotto.6' <<'END_OF_FILE'
X.if '\*(Bd'' .ds Bd jotto
X.ie t \{.ds Q ``
X.ds U ''\}
X.el \{.ds Q ""
X.ds U ""\}
X.de QU
X\\$3\\*Q\\$1\\*U\\$2
X..
X.TH jotto 6 "" "local"
X.SH NAME
Xjotto \- word guessing game
X.SH SYNOPSIS
X.B \*(Bd
X.\" [ -d ]
X.SH DESCRIPTION
X.I Jotto
Xplays the word game of Jotto with you.
XYou and the program each secretly choose a common English word
Xof five different letters.
XPlurals in
X.QU s
Xare not allowed.
XThe players take turns guessing words of five different letters,
Xwith plurals being allowed.
XEach guess (if wrong) is answered by the number of letters in the guess
Xthat occur in the secret word.
XThe winner is the first player to guess right.
X.SH FILES
Xjotto.d \- dictionary for Jotto
X.SH BUGS
X.IR Jotto 's
Xdictionary is not perfect.
XIf you invent a word, the program will believe you and lose,
Xand shame on you.
XIf you use a good word that is not in the dictionary,
Xcomplain to your games administrator, and in the meantime please
Xdo not use it again.
XIf the program uses a word that you never heard of,
Xit's your bad luck.
X.SH AUTHOR
XCol. G. L. Sicherman  (gls@odyssey.att.com)
END_OF_FILE
if test 1072 -ne `wc -c <'jotto.6'`; then
    echo shar: \"'jotto.6'\" unpacked with wrong size!
fi
# end of 'jotto.6'
fi
if test -f 'jotto.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'jotto.c'\"
else
echo shar: Extracting \"'jotto.c'\" \(6590 characters\)
sed "s/^X//" >'jotto.c' <<'END_OF_FILE'
X/*
X *	Jotto.  G. L. Sicherman.  1990.
X *	Translated to C from UNIX f77.
X *	The UNIX f77 was ported from the original CDC FORTRAN IV
X *	and COMPASS, which goes back to around 1975.
X *
X *	You may use this program and modify it as you like,
X *	so long as you leave this message as it is and don't
X *	try to make money off the program.
X */
X
X#include <ctype.h>
X#include <stdio.h>
X/*
X *	The usual string incompatibility.
X *	In SYSV, index() is an unrelated function in libPW.
X */
X#ifdef BSD
X#include <strings.h>
X#define	strchr index
X#else
X#include <string.h>
X#endif
X#include "jotto.h"
X
X#ifndef	DICT
X#define	DICT	"jotto.d"
X#endif
X
Xchar	*bad[DICTLEN];			/* words eliminated by one answer */
Xint	diagn = 0;
Xchar	dict[DICTLEN][WORDLEN*2+1];	/* all the words */
Xchar	*good[DICTLEN];			/* words not eliminated */
Xint	gy[MAXGUESS];
Xchar	*iguess[MAXGUESS];
Xint	ndict;
Xint	ngood, nbad;
XFILE	*tape4;				/* Yep - it's CDC FORTRAN, all right */
Xchar	uguess[MAXGUESS][WORDLEN+1];
Xint	uguessc, iresp[MAXGUESS];
X
Xextern	char	*getlogin();
Xextern	int	legal();
Xextern	char	*ord();
Xextern	long	time();
X
Xmain(argc, argv)
Xint argc;
Xchar **argv;
X{
X	char	**use;		/* whichever we're using */
X	int	num;
X	int	igs;
X	int	*nuse;
X	char	mult[WORDLEN*10+1];
X	char	*foundpan;
X	int	guess;
X	int	ustart;
X	char	*login;
X	char	*pop;
X	int	wins[2];
X	int	over;
X	char	*you, *getword();
X	char	*mine;
X	char	*old;
X	char	*a;
X	long	best;
X	int	which;
X	int	iguessc;
X	int	i, n, i0;
X
X	while (--argc) {
X		if ('-'==**++argv) switch(*++*argv) {
X		case 'd':		/* undocumented debugging option */
X			diagn = 1;
X			break;
X		default:
X			;
X		}
X		else break;
X	}
X	printf(" Jotto 3.0\n");
X	for (i=0; i<2; i++) wins[i]=0;
X	tape4 = fopen(DICT, "r");
X	if (!tape4) {
X		printf("\nCannot read dictionary - aborted\n");
X		exit(1);
X	}
X	login = getlogin();
X	load();
X	srand(time((long *)0));
X	ustart = rand(0) >= 16384;
X	do {	/* loop over games */
X		printf("\n Think of a word of %d different letters.\n",
X			WORDLEN);
X/*
X *		Pick a word.
X */
X		mine = &dict[which=rand()%ndict][WORDLEN];
X		if (diagn) printf("l %5d\n", ndict);
X/*
X *		Copy all the words into the good list
X *		while the user is thinking.
X */
X		for (i=0; i<ndict; i++) good[i] = dict[i];
X		ngood = ndict;
X		nbad=0;
X		while (!yes(" Ready? ")) ;
X/*
X *		Pick a place in the dictionary to start guessing.
X */
X		do guess = rand()%ndict;
X		while (guess == which);	/* don't guess our own word! */
X		printf(" Type a carriage-return for a list of my answers.\n");
X		iguessc = uguessc = 0;
X		foundpan = (char *)NULL;
X		for (over=0; !over; ) {
X/*
X *			Loop over turns.
X */
X			if (ustart && uguessc==0) goto getguess;
X/*
X *			our turn to guess.
X */
X			if (foundpan) {
X/*
X *				Multiple anagrams!
X */
X				foundpan += WORDLEN;
X				if (*foundpan) {
X					old = foundpan;
X					goto doguess;
X				}
X				/* otherwise we're stuck */
X				goto giveup;
X			}
X			best = -999999;
X			use = good;
X			if (!*(nuse = &ngood)) {
X				if (!*(nuse = &nbad)) goto giveup;
X				use = bad;
X			}
X			if (*nuse == 1) old = &use[0][WORDLEN];
X			else for (igs=0; igs<50; igs++) {
X				if ((guess += 31) >= ndict) guess -= ndict;
X	/*
X	 *			Get the guess.
X	 */
X				a = &dict[guess][WORDLEN];
X				if ((i=isis(a,use,*nuse)) >= best) {
X					best = i;
X					old = a;
X				}
X				if (diagn && igs<10)
X					printf(" ?g %s %7d\n", a, i);
X				if (best >= -1) break;
X			}
X			if (diagn && *nuse <= 10) {
X				for (i=0; i<*nuse; i++)
X				printf(" i %.*s\n", WORDLEN, use[i]+WORDLEN);
X			}
X			if (diagn) printf("%dg%d\n", igs, best);
Xdoguess:
X			printf("\n My %d%s guess is: %.*s.\n",
X				iguessc+1, ord(iguessc+1), WORDLEN, old);
X			num = getnum(" How many letters? ");
X			iguess[iguessc] = old;
X			gy[iguessc++] = num;
X			if (num == WORDLEN) {
X				if (yes(" Is that your word? ")) {
X					printf("\n Your word is: %s\n", old);
X					printf(" My word was: %s\n", mine);
X					wins[0]++;
X					over = 1;
X					break;
X				}
X				if (!foundpan) {
X					getmult(old-WORDLEN, mult);
X					foundpan = mult;
X				}
X			}
X			else revise(old, num);
X/*
X *		Time for the user's guess.
X */
Xgetguess:
X			do {
X				printf("\n What is your %d%s guess? ",
X					uguessc+1, ord(uguessc+1));
X				you = getword();
X				if (strlen(you)==0) {
X					jsumm();
X					continue;
X				}
X			} while (!legal(you));
X			strcpy(uguess[uguessc] , you);
X			iresp[uguessc++] = i = inter(mine, you);
X			if (!strcmp(mine, you)) {
X				printf(" ...you win.\n");
X				goto beg;
X			}
X			answer(you, i);
X			continue;
Xgiveup:
X			printf("\n\n I give up.\n");
Xbeg:
X			printf(" What was your word? ");
X			pop = getword();
X			if (!legal(pop)) {
X				printf("\n \"%s\" is not a legal word.\n", pop);
X				wins[0]++;
X				over = 1;
X				break;
X			}
X/*
X *		Check his answers.
X */
X			for (i0 = 0; i0 < iguessc; i0++) {
X				if (inter(iguess[i0],pop) != gy[i0]) {
X					printf(
X			"\n You cheated\n You said \"%s\" had %d letters\n",
X						iguess[i0], gy[i0]);
X					wins[0]++;
X					over = 1;
X					break;
X				}
X				if (!strcmp(iguess[i0],pop)) {
X					printf(
X				" You cheated\n You said \"%s\" was not your word\n",
X						iguess[i0]);
X					wins[0]++;
X					over = 1;
X					break;
X				}
X			}
X			if (over) break;
X			wins[1]++;
X			printf(" My word was: %s\n", mine);
X			over = 1;
X		}
X	} while (yes(" Another game? "));
X	printf("\n Final score\n %-8.8s %2d\n computer %2d\n",
X		login, wins[1], wins[0]);
X	exit(0);
X}
X
Xint
Xyes(prompt)
Xchar *prompt;
X{
X	char *i, inline[80+1];
X
X	printf(prompt);
X	if (!gets(inline)) {
X		printf("ERROR reading your answer\n");
X		return 0;
X	}
X	for (i=inline; *i && isspace(*i); i++) ;
X	return *i == 'y' || *i == 'Y';
X}
X
Xchar *
Xgetword()
X{
X	static char wline[80];
X	char *w, *ww;
X
X	if (!gets(wline)) {
X		printf("ERROR reading your answer\n");
X		return (char *)0;
X	}
X	for (w=wline; *w && isspace(*w); w++) ;
X	for (ww=w; !isspace(*ww); ww++) ;
X	*ww = '\0';
X	for (ww=w; *ww; ww++) if (isupper(*ww)) *ww=tolower(*ww);
X	return w;
X}
X
Xint
Xgetnum(pr)
Xchar *pr;
X{
X	char *n, nline[80+1];
X	do {
X		printf(pr);
X		if (!gets(nline)) return -1;
X		if (n = strchr(nline, '\n')) *n = 0;
X		for (n=nline; *n && isspace(*n); n++) ;
X	} while (!isdigit(*n));
X	return atoi(n);
X}
X
Xgetmult(want, hold)
Xchar *want, *hold;
X{
X	char mline[80+1];
X	rewind(tape4);
X	while (fgets(mline, 80, tape4)) if (!strncmp(want,mline,WORDLEN)) {
X		*(strchr(mline,'\n')) = '\0';
X		strcpy(hold, mline+WORDLEN);
X		return;
X	}
X}
X
Xrevise(word, num)
Xchar *word;
Xint num;
X/*
X *.... revise candidate lists. 
X */
X{
X	int n;
X
X	for (n=0; n<nbad; n++)
X		if (inter(bad[n], word) != num)
X			bad[n--] = bad[--nbad];
X	for (n=0; n<ngood; n++)
X		if (inter(good[n], word) != num) {
X			bad[nbad++] = good[n];	
X			good[n--] = good[--ngood];
X		}
X	if (diagn) printf(" w%5d%5d\n", ngood, nbad);
X}
END_OF_FILE
if test 6590 -ne `wc -c <'jotto.c'`; then
    echo shar: \"'jotto.c'\" unpacked with wrong size!
fi
# end of 'jotto.c'
fi
if test -f 'jotto.d' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'jotto.d'\"
else
echo shar: Extracting \"'jotto.d'\" \(16549 characters\)
sed "s/^X//" >'jotto.d' <<'END_OF_FILE'
Xabcehbeach
Xabcelcable
Xabcerbrace
Xabchtbatch
Xabcincabin
Xabcisbasic
Xabcklblack
Xabclnblanc
Xabcnobacon
Xabcorcarobcobra
Xabcrtbract
Xabcsuscuba
Xabdegbadge
Xabdeiabide
Xabdelblade
Xabdeoabodeadobe
Xabderbeardbreaddebar
Xabdeybayedbeady
Xabdirbraidrabid
Xabdlnbland
Xabdlybaldy
Xabdnrbrand
Xabdnybandy
Xabdorboardbroad
Xabdwybawdy
Xabeflfable
Xabeglgable
Xabegnbegan
Xabegrbarge
Xabehtbathe
Xabeklbleak
Xabekrbrakebreak
Xabelmambleblame
Xabelrblare
Xabelssable
Xabeltbleattable
Xabelzblaze
Xabemnbeman
Xabemramberbream
Xabemymaybe
Xabeovabove
Xabertbater
Xabervbrave
Xaberzzebra
Xabestbastebeast
Xabesuabuse
Xabeuxbeaux
Xabhithabit
Xabhrsbrash
Xabiktbatik
Xabilsbasil
Xabinrbrain
Xabinsbasin
Xabiotbiota
Xabjnobanjo
Xabklnblank
Xabklybalky
Xablmualbum
Xablmybalmy
Xablorlobar
Xablotbloat
Xablrwbrawl
Xablstblast
Xablwybylaw
Xabmruumbra
Xabnorbaron
Xabnotbaton
Xabnrtbrant
Xabnruurban
Xabortabort
Xaborvbravo
Xaborxborax
Xaboryboyar
Xabostboast
Xabotuabout
Xabouybayou
Xacdeldecal
Xacdendance
Xacdercaredcedarcadre
Xacdetcadet
Xacdeydecay
Xacdhrchard
Xacdiracrid
Xacditdicta
Xacdlsscald
Xacdnycandy
Xacdtuducat
Xacefhchafe
Xacefrfarce
Xaceftfacet
Xacegrgrace
Xacegycagey
Xacehlleach
Xacehpcheappeach
Xacehrreach
Xacehschase
Xacehtcheatteach
Xacekrcreak
Xacelmcamel
Xacelncleanlance
Xacelpplace
Xacelrclear
Xacelsscale
Xaceltcleateclat
Xacelvcalve
Xacemocameo
Xacemrcream
Xacenocanoeocean
Xacenppecan
Xacenrcarnecrane
Xacentenact
Xaceprcaper
Xacepsspace
Xacersscare
Xacertcratecaretcatertracecarte
Xacervcarvecrave
Xacerzcraze
Xacestcaste
Xacesucausesauce
Xacetuacute
Xacetxexact
Xacfklflack
Xacflofocal
Xacfnrfranc
Xacfnyfancy
Xacfotfacto
Xacfrsscarf
Xacfrtcraft
Xacgimmagic
Xacgircigar
Xacglnclang
Xacgorcargo
Xachinchainchina
Xachirchair
Xachklchalk
Xachksshack
Xachkwwhack
Xachlrlarch
Xachlsclash
Xachltlatch
Xachmomacho
Xachmpchamp
Xachmrcharmmarch
Xachmschasm
Xachmtmatch
Xachnrranch
Xachntchant
Xachoppoach
Xachorroach
Xachoschaos
Xachovhavoc
Xachprparch
Xachptpatch
Xachrscrash
Xachrtchart
Xachtwwatch
Xachtyyacht
Xacilmclaim
Xacilvcavil
Xacimnmanic
Xacinppanic
Xacinrcairn
Xacintantic
Xaciruauriccuria
Xacirvvicar
Xacklnclank
Xacklocloak
Xacklsslack
Xacklucaulk
Xackmssmack
Xacknrcrank
Xacknssnack
Xackorcroak
Xackququack
Xackrttrack
Xackrwwrack
Xackststack
Xacktytacky
Xackwywacky
Xaclmpclamp
Xaclorcarolcoral
Xaclotoctal
Xaclovvocal
Xaclozcolza
Xaclpsclaspscalp
Xaclrwcrawl
Xacmormacro
Xacmprcramp
Xacmpsscamp
Xacmrsscram
Xacmsusumac
Xacnoracorn
Xacnotcanto
Xacnstscant
Xacoprcopra
Xacortactor
Xacostcoast
Xacprsscrap
Xacpsuscaup
Xacrsyscary
Xacryzcrazy
Xacsuysaucy
Xadeglglade
Xadegrgrade
Xadegsdegas
Xadehrheard
Xadehsshade
Xadehtdeath
Xadehyheady
Xadeilideal
Xadeimamidemedia
Xadeisaside
Xadeiuadieu
Xadeknkneadnaked
Xadekrdrake
Xadelmmedal
Xadelnladen
Xadelppedalplead
Xadelralder
Xadeltdealtdelta
Xadelydelay
Xademnamend
Xademrdream
Xadenoanode
Xadenssedan
Xadeoradore
Xadeprdrapepadre
Xadepsspade
Xadeptadept
Xadertdatertradetread
Xaderyready
Xadeststead
Xadfrtdraft
Xadfrufraud
Xadfrwdwarf
Xadglngland
Xadgmodogma
Xadgnrgrand
Xadgruguard
Xadguygaudy
Xadhipaphid
Xadhnyhandy
Xadhorhoard
Xadhrsshard
Xadhryhardyhydra
Xadhsyshady
Xadilpplaid
Xadilttidal
Xadilvvalid
Xadimtadmit
Xadimxadmix
Xadinrdrainnadir
Xadinvdivan
Xadioppodia
Xadiorradio
Xadiouaudio
Xadiovavoid
Xadiprrapid
Xadirttriad
Xadirxradix
Xadirydairydiary
Xadiststaid
Xadisydaisy
Xadituaudit
Xaditvdavit
Xadknrdrank
Xadlmomodal
Xadlnonodal
Xadloualoud
Xadlrwdrawl
Xadltuadult
Xadmnomonad
Xadmtudatum
Xadnoradornradon
Xadnrwdrawn
Xadnryrandy
Xadnststand
Xadnsysandy
Xadntudaunt
Xadoptadopt
Xadotytoadytoday
Xadqsusquad
Xadrtytardy
Xaefhssheaf
Xaefirafire
Xaefklflake
Xaefkrfreak
Xaeflmflame
Xaeflrflare
Xaeflsfalse
Xaefltfetal
Xaeflyleafy
Xaefmrframe
Xaefovfovea
Xaefrwwafer
Xaefryfaery
Xaefstfeast
Xaegilagile
Xaegimimage
Xaegisaegis
Xaeglmgleam
Xaeglnangelangleglean
Xaeglrglarelagerlargeregal
Xaeglvgavel
Xaeglzglaze
Xaegmnmange
Xaegmoomega
Xaegnoagone
Xaegnrangerrange
Xaegntagent
Xaegprgrape
Xaegrtgrategreat
Xaegruargueauger
Xaegrvgrave
Xaegrzgraze
Xaegststage
Xaegsuusage
Xaeguvvague
Xaeguzgauze
Xaehksshake
Xaehlpaleph
Xaehlsleashshale
Xaehltlathe
Xaehlvhalve
Xaehlwwhale
Xaehlzhazel
Xaehmrharem
Xaehmsshame
Xaehnsashen
Xaehntneath
Xaehnvhaven
Xaehnyhyena
Xaehpsphaseshape
Xaehrsshareshear
Xaehrtearthhaterheart
Xaehsthaste
Xaehsvshave
Xaehtwwheat
Xaehvyheavy
Xaeiklalike
Xaeilnalien
Xaeilsaisle
Xaeilvalive
Xaeinsanise
Xaeinvnaive
Xaeipssepia
Xaeirsariseraise
Xaeirtirate
Xaeitvvitae
Xaeivwwaive
Xaeklnankle
Xaeklsslake
Xaeklyleaky
Xaeknooaken
Xaeknssnakesneak
Xaeknttaken
Xaeknwwaken
Xaekowawoke
Xaekpsspeak
Xaekpypeaky
Xaekququake
Xaekrwwreak
Xaekstskatestakesteak
Xaekswaskew
Xaektwtweak
Xaelmpamplemaple
Xaelmrrealm
Xaelmtmetal
Xaelmymealy
Xaelnoalone
Xaelnppanelpenalplane
Xaelnrlearnrenal
Xaelnvnavelvenal
Xaelprpearl
Xaelpslapsesepal
Xaelptleaptpetalplatepleat
Xaelquequal
Xaelrtalertalterlater
Xaelrvravel
Xaelrxrelax
Xaelryrelay
Xaelstleastslatestalesteal
Xaelsvsalveslave
Xaeltvvalet
Xaeltxexaltlatex
Xaeluvvalue
Xaemnrreman
Xaemnsmanse
Xaemntmeant
Xaemrsmasersmear
Xaemrtmater
Xaemststeam
Xaemsuamuse
Xaemsyseamy
Xaemtymeaty
Xaemuvmauve
Xaenotatone
Xaenpsaspen
Xaenrssnare
Xaenrvraven
Xaenryyearn
Xaenwxwaxen
Xaeopropera
Xaeorsarose
Xaeortorate
Xaeotvovate
Xaeprsparsesparespear
Xaeprtpatertaper
Xaepstpasteseptaspate
Xaepsupause
Xaerstasterstare
Xaersvversa
Xaerswswear
Xaertvavert
Xaertwwater
Xaertxextra
Xaeruzazure
Xaerwyweary
Xaestusaute
Xaestvstave
Xaestwsweatwaste
Xaestyyeast
Xaesuvsuave
Xafglufugal
Xafgrtgraft
Xafhitfaith
Xafhlsflash
Xafhrwwharf
Xafhstshaft
Xafilnfinal
Xafilrflairfrail
Xafinrinfra
Xafintfaint
Xafiryfairy
Xafklnflank
Xafklsflask
Xafklyflaky
Xafknrfrank
Xafkrtkraft
Xaflorflora
Xaflotaloftfloat
Xaflsusulfa
Xafltufault
Xafluwawful
Xafmoyfoamy
Xafnsusnafu
Xaforyforay
Xaghlulaugh
Xaghnohogan
Xaghnsgnash
Xaghoyhoagy
Xaghprgraph
Xagilnalign
Xagilrgrail
Xagimngamin
Xagimoamigo
Xagimssigma
Xaginrgrain
Xagintgiant
Xagkwygawky
Xaglnoalong
Xaglnrgnarl
Xaglnsslang
Xaglotgloat
Xagmnoamong
Xagmtugamut
Xagnorargongroanorgan
Xagnottango
Xagnouguano
Xagnoyagony
Xagnrtgrant
Xagnryangryrangy
Xagnstangst
Xagntugaunt
Xagntytangy
Xagortargotgatorgroat
Xagprsgrasp
Xagrsusugar
Xagrvygravy
Xagstystagy
Xahikuhaiku
Xahiryhairy
Xahknsshank
Xahkntthank
Xahkosshako
Xahkrsshark
Xahksyshaky
Xahlosshoal
Xahlotloath
Xahlpyphyla
Xahlswshawl
Xahmnuhuman
Xahmnymynah
Xahmrsmarsh
Xahntuhaunt
Xahorttorah
Xahprssharp
Xahpststaph
Xahqsuquash
Xahrsttrash
Xahrtwwrath
Xahstwswath
Xahstyhasty
Xailnpplain
Xailnsslainsnail
Xailnvanvil
Xailnyinlay
Xailovviola
Xailququail
Xailrttrailtrial
Xailrvrival
Xailtvvital
Xailtylaity
Xaimnoamino
Xaimoxaxiom
Xaimprprima
Xaimswswami
Xaimtyamity
Xainoppiano
Xainptpaintinapt
Xainrttrain
Xainryrainy
Xainstsaintsatinstain
Xainswswain
Xaintwtwain
Xaioptpatio
Xaiortratio
Xaiprttapir
Xaipsttapis
Xaiqsuquasi
Xairststair
Xaistvvista
Xaistwwaist
Xajmormajor
Xajntujunta
Xaklnpplank
Xaklnylanky
Xakloppolka
Xaklststalk
Xakltytalky
Xaknprprank
Xaknrssnark
Xaknststank
Xaknswswank
Xakprsspark
Xakqruquark
Xakrststark
Xakrtukraut
Xalmormolarmoral
Xalmossomal
Xalmoyloamy
Xalmpsplasmpsalm
Xalmpyamply
Xalmququalm
Xalmrumural
Xalmrymylar
Xalnossalon
Xalnottalontonal
Xalnptplant
Xalnrssnarl
Xalnrulunar
Xalnstslant
Xaloprpolar
Xalorssolar
Xaloryroyal
Xalosvsalvo
Xalpstsplat
Xalpsypalsysplay
Xalpuylayup
Xalrtuultra
Xalrtwtrawl
Xalstulatustalus
Xalstysalty
Xaltuvvault
Xaltwzwaltz
Xamnormanor
Xamnosmason
Xamnowwoman
Xamortamort
Xamorymayor
Xamprttramp
Xampststamp
Xampswswamp
Xamrstsmart
Xamrswswarm
Xamstymayst
Xanoprapron
Xanorsarsonsonar
Xanpswspawn
Xanpsypansy
Xanptypanty
Xanruyunary
Xanstynastytansy
Xantwytawny
Xaopsysoapy
Xaoptztopaz
Xaoqtuquota
Xaorstroast
Xaorvyovary
Xaosvysavoy
Xaprststrap
Xaprsusupra
Xaprsyspray
Xaprtyparty
Xapstypasty
Xaqrtuquart
Xaqstusquat
Xaqsuwsquaw
Xarstwstrawswart
Xarstysatyrstray
Xartwywarty
Xbcehlbelch
Xbcehnbench
Xbceipbicep
Xbchirbirch
Xbchitbitch
Xbchnubunch
Xbchotbotch
Xbchtubutch
Xbcikrbrick
Xbcilmclimb
Xbciorboric
Xbckloblock
Xbcmrucrumb
Xbcrsuscrub
Xbdegubudgedebug
Xbdeimbedim
Xbdeirbride
Xbdeitdebit
Xbdelnblend
Xbderyderby
Xbdetudebut
Xbdilnblind
Xbdilubuild
Xbdlnoblond
Xbdnoubound
Xbdnuybundy
Xbdotudoubt
Xbefgobefog
Xbefirbrief
Xbefitbefit
Xbegilbilge
Xbeginbeginbeingbinge
Xbegloglobe
Xbeglubuglebulge
Xbegnubegun
Xbegoybogey
Xbehrtberth
Xbeimuimbue
Xbeinrbrine
Xbeiowbowie
Xbeirttribe
Xbejotobjet
Xbeklobloke
Xbekorbroke
Xbelnonoble
Xbelowbelowbowelelbow
Xbelryberyl
Xbelstblest
Xbeltubluet
Xbemruumber
Xbenorborne
Xbenoyebony
Xbenozbonze
Xbeoprprobe
Xbeorssober
Xbeotubuteo
Xbertubruterebutburet
Xberuybuyer
Xbghoubough
Xbginobingo
Xbginrbring
Xbgiotbigot
Xbgmougumbo
Xbgosubogus
Xbhirtbirth
Xbhlsublush
Xbhmtuthumb
Xbhortbroththrob
Xbhrsubrushshrub
Xbhsuybushy
Xbiklnblink
Xbiknrbrink
Xbikrsbrisk
Xbilmolimbo
Xbilmpblimp
Xbilorbroil
Xbilsysibyl
Xbiltubuilt
Xbiltzblitz
Xbinorrobin
Xbinosbison
Xbinrybriny
Xbiortorbit
Xbirtubruit
Xbjmoujumbo
Xbkluybulky
Xblmpuplumb
Xblnowblown
Xblntublunt
Xblrtublurt
Xblruyburly
Xbltuybutyl
Xbmouxbuxom
Xbnorubourn
Xbnorwbrown
Xbnosubonus
Xbnrtuburntbrunt
Xbrstuburst
Xcdehichide
Xcdeimmedic
Xcdeircidercrieddicerriced
Xcdeitedict
Xcdelodolce
Xcdenudunce
Xcdeorcredodecor
Xcdeoudouce
Xcderucrudecured
Xcderydecry
Xcdhilchild
Xcdhitditch
Xcdhorchord
Xcdilulucid
Xcdlosscold
Xcdloucloudcould
Xcdorwcrowd
Xcefhichieffiche
Xcefhtfetch
Xcefklfleck
Xcefltcleft
Xceforforce
Xcegkogecko
Xcehimchime
Xcehinnichechine
Xcehitethic
Xcehivchive
Xcehkochoke
Xcehktketch
Xcehopepoch
Xcehorchore
Xcehoschose
Xcehprperch
Xcehrtretchchert
Xcehstchest
Xcehtuchute
Xcehtvvetch
Xcehvychevy
Xceijujuice
Xceilmclime
Xceilrrelic
Xceilsslice
Xceimnmince
Xceimrcrime
Xceinssince
Xceinwwince
Xceiovvoice
Xceiprprice
Xceipsspice
Xceirucurie
Xceitvcivetevict
Xceitwtwice
Xceklrclerk
Xcekpsspeck
Xcekrwwreck
Xcelnoclone
Xcelnuuncle
Xcelosclose
Xcelovclove
Xcelrucruellucreulcer
Xcemotcomet
Xcemrymercy
Xcemtutecum
Xcenorcrone
Xcenouounce
Xcenovcoven
Xcenoyconey
Xcenozcozen
Xcenstscent
Xceopsscope
Xceopucoupe
Xceorsscore
Xceorvcover
Xceostcoset
Xceotvcovet
Xceprtcrept
Xcerstcrest
Xcersucurse
Xcerswscrew
Xcertutruce
Xceruvcurve
Xcfhilfilch
Xcfhinfinch
Xcfiklflick
Xcfkloflock
Xcfkorfrock
Xcfortcroft
Xcfosufocus
Xcghoucough
Xcgilncling
Xcgilologic
Xcglnuclung
Xchiknchink
Xchiktthick
Xchilmmilch
Xchilzzilch
Xchimoohmic
Xchinppinch
Xchinwwinch
Xchiorchoir
Xchiprchirp
Xchiptpitch
Xchitwwitch
Xchknuchunk
Xchkosshock
Xchksushuck
Xchlmumulch
Xchlnulunch
Xchlnylynch
Xchlotcloth
Xchlrulurch
Xchmnumunch
Xchmopchomp
Xchmpuchump
Xchnotnotch
Xchnpupunch
Xchnruchurn
Xchoprporch
Xchopupouch
Xchorttorch
Xchotutouch
Xchouvvouch
Xchpsypsych
Xchrsucrush
Xcijuyjuicy
Xciklnclink
Xciklsslick
Xciknssnick
Xcikprprick
Xcikpypicky
Xcikququick
Xcikrttrick
Xcikststick
Xcilrylyric
Xcimnucumin
Xcimormicro
Xcimprcrimp
Xcimrsscrim
Xcimsumusic
Xcinosscionsonic
Xcinottonic
Xcinruincurrunic
Xcintutunic
Xcioptoptictopic
Xciorucurio
Xcioststoic
Xciotxtoxic
Xciprscrisp
Xcipsyspicy
Xciptytypic
Xcjnoujunco
Xcklpupluck
Xckluylucky
Xckoryrocky
Xckoststock
Xckrtutruck
Xckstustuck
Xclmopclomp
Xclmpuclump
Xclmtumulct
Xclnowclown
Xclosulocus
Xcloswscowl
Xclotuclout
Xcmprucrump
Xcnorsscorn
Xcnorwcrown
Xcnorycornycrony
Xcnotucount
Xcoprscorps
Xcopuycoypu
Xcorsuscour
Xcortucourt
Xcorwycowry
Xcostuscout
Xcprtycrypt
Xcrstucrust
Xdefgufudge
Xdefilfield
Xdefinfiend
Xdefirfried
Xdefitfetid
Xdefiydeifyedify
Xdeghohodge
Xdegilglide
Xdegimmidge
Xdegindeign
Xdegirdirgeridge
Xdegiuguide
Xdegjujudge
Xdeglolodge
Xdegluglued
Xdegmudegum
Xdegnunudge
Xdegoppodge
Xdehisshied
Xdehorhorde
Xdehptdepth
Xdehrsshred
Xdeiksskied
Xdeilssidleslide
Xdeilttilde
Xdeilvdevil
Xdeilwwield
Xdeilyyield
Xdeimtdemit
Xdeinwwiden
Xdeinxindex
Xdeiovvideo
Xdeioxoxide
Xdeiprpride
Xdeipttepid
Xdeirttried
Xdeirvdrive
Xdeirwweird
Xdeitydeitydiety
Xdelmomodel
Xdelnoolden
Xdelowdowel
Xdeloyyodel
Xdelsudulse
Xdeltvveldt
Xdeltwdwelt
Xdemnodemon
Xdemrudemur
Xdenordrone
Xdenowendow
Xdenozdozen
Xdenpsspend
Xdenpuupend
Xdenrttrend
Xdenruunder
Xdeoptdepot
Xdeorvdrove
Xdeosudouse
Xdfilufluid
Xdfirtdrift
Xdfjorfjord
Xdfnoufound
Xdghoudough
Xdgiluguild
Xdginodingo
Xdginrgrind
Xdginydingydying
Xdgorugourd
Xdhimuhumid
Xdhirtthird
Xdhitwwidth
Xdhnouhound
Xdhoryhydro
Xdhowyhowdy
Xdiknrdrink
Xdilossolid
Xdilrulurid
Xdimouodium
Xdimstmidst
Xdinwywindy
Xdiqsusquid
Xdirtydirty
Xdiyzzdizzy
Xdknrudrunk
Xdksuydusky
Xdlmoumould
Xdlorwworld
Xdlouwwould
Xdmnoumound
Xdmpuydumpy
Xdnopupound
Xdnoruround
Xdnorwdrown
Xdnosusound
Xdnosysynod
Xdnouwwound
Xdopruproud
Xdorswsword
Xdorwydowryrowdywordy
Xdstuydustystudy
Xefginfeign
Xefgirgrief
Xefgorforge
Xefhitthief
Xefhlsfleshshelf
Xefhrsfresh
Xefhtyhefty
Xefiknknife
Xefilnelfin
Xefilrflierrifle
Xefiltfilet
Xefinrinfer
Xefintfeint
Xefirsserif
Xefiryfiery
Xefklufluke
Xeflnofelon
Xeflryflyer
Xefltuflute
Xefltylefty
Xefmrufemur
Xefnorfreon
Xefnotoften
Xefortforte
Xeforyfoyer
Xeforzfroze
Xefruzfurze
Xefstufetus
Xeghinhinge
Xeghiteight
Xeghiwweigh
Xegiluguile
Xegimrgrime
Xeginrreign
Xeginssinge
Xeginttinge
Xeginvgiven
Xegiprgripe
Xegirttiger
Xegisuguise
Xeglnulunge
Xeglovglove
Xeglruluger
Xeglsugules
Xegluygluey
Xegmnognome
Xegnsugenus
Xegoprgrope
Xegorsgorse
Xegoruroguerouge
Xegorvgrove
Xegouvvogue
Xegprupurge
Xegrsusurge
Xegstuguest
Xehikssheik
Xehiltlithe
Xehilwwhile
Xehilxhelix
Xehinsshine
Xehintthine
Xehinwwhine
Xehirsshire
Xehirttheir
Xehitwwhitewithe
Xehklwwhelk
Xehlmwwhelm
Xehlothotel
Xehlovhovel
Xehlowwhole
Xehlpwwhelp
Xehlswwelsh
Xehltyethyl
Xehmnyhymen
Xehmrurheum
Xehmryrhyme
Xehnopphone
Xehnorheron
Xehnosshone
Xehnoyhoney
Xehnryhenry
Xehorshorseshore
Xehortother
Xehorvhover
Xehorwwhore
Xehostethosthose
Xehosuhouse
Xehosvshove
Xehoswwhose
Xehrsuusher
Xehrswshrew
Xehrtwthrew
Xehrtzhertz
Xeiklnliken
Xeikpsspike
Xeilmpimpel
Xeilmsslimesmile
Xeilmuileum
Xeilntinlet
Xeilovolive
Xeilprperil
Xeilpxpixel
Xeilrvlivervilerlivre
Xeilststile
Xeiltuutile
Xeimormoire
Xeimovmovie
Xeimprprime
Xeimrsmiser
Xeimrtmeritmitreremittimer
Xeimtssmite
Xeinosnoise
Xeinprripen
Xeinpssnipespine
Xeinptinept
Xeinrsresinrinserisensiren
Xeinrtinertinter
Xeinruinureurine
Xeinrvriven
Xeinstinsetstein
Xeinswsinewswine
Xeintuunite
Xeintwtwine
Xeinvxvixen
Xeiopspoise
Xeiorsosier
Xeipquequippique
Xeiprsspire
Xeiprtpetritripe
Xeiprzprize
Xeipstspite
Xeipswswipe
Xeiptypiety
Xeiqtuquietquite
Xeirtvrivet
Xeirtwwrite
Xeistusuite
Xeistxexist
Xejkryjerky
Xejloujoule
Xejlpujulep
Xejnoyenjoy
Xeklntknelt
Xekloyyokel
Xekmossmoke
Xeknottoken
Xekopsspoke
Xekoststoke
Xekpryperky
Xelmnolemonmelonmonel
Xelmnulumen
Xelmormorel
Xelmotmotel
Xelmpuplume
Xelmstsmelt
Xelmxyxylem
Xelnovnovel
Xelopsslope
Xelorwlower
Xeloststole
Xelosulouse
Xelosvsolve
Xelotwtowel
Xelotxextol
Xelouzouzel
Xelovwvowel
Xelpstslept
Xelpsupulse
Xelstwswelt
Xelstystyle
Xeltuxexult
Xemnosmeson
Xemnotmonte
Xemnovvenom
Xemnowwomen
Xemnoymoney
Xemnrurumen
Xemopttempo
Xemortmetro
Xemosumouse
Xemprssperm
Xempsuspume
Xemptyempty
Xemrsuserum
Xenoprprone
Xenopypeony
Xenorssnoresenor
Xenorttenor
Xenostonsetstone
Xenovwwoven
Xenovyenvoy
Xenpruprune
Xenpstspent
Xenrststern
Xenrsunurse
Xenrtyentry
Xeoprsprosespore
Xeoprvprove
Xeoprwpower
Xeopstestop
Xeopsypoesyposey
Xeopxyepoxy
Xeoqtuquote
Xeorststore
Xeorsurouse
Xeorsvservo
Xeorswsworeworse
Xeorturoute
Xeortvovert
Xeortwtowerwrote
Xeostvstove
Xeprsupursespruesuper
Xeprtuerupt
Xeprxyprexy
Xepstusetupupset
Xepstwswept
Xeqruyquery
Xeqstuquest
Xerstwwrest
Xestyzzesty
Xfghitfight
Xfgilnfling
Xfginufungi
Xfglnuflung
Xfhiltfilth
Xfhistshift
Xfhisyfishy
Xfhlsuflush
Xfhortforthfroth
Xfilmyfilmy
Xfilntflint
Xfilrtflirt
Xfimotmotif
Xfinuyunify
Xfiostfoist
Xfirstfirst
Xfirtufruit
Xfistwswift
Xflnowflown
Xfloruflour
Xflotuflout
Xflotylofty
Xfmoruforum
Xfnortfront
Xfnorwfrown
Xfnotufount
Xforstfrost
Xfortyforty
Xfstuyfusty
Xghiltlight
Xghimtmight
Xghintnightthing
Xghinyhying
Xghirtgirthright
Xghistsight
Xghloughoul
Xghlpyglyph
Xghmoumugho
Xghnotthong
Xghorurough
Xghostghost
Xghotuoughttough
Xghrsushrug
Xgilnolingo
Xgilnssling
Xgilntglint
Xgilnylying
Xgiltuguilt
Xgimpygimpy
Xginorgroin
Xginotingot
Xginowowing
Xginrwwring
Xginststing
Xginswswing
Xgintytying
Xginvyvying
Xgiprssprig
Xgirstgrist
Xgknuygunky
Xglnsuslung
Xglorwgrowl
Xgloryglory
Xgnoprprong
Xgnorwgrownwrong
Xgnouyyoung
Xgnrtugrunt
Xgnstustung
Xgnsuwswung
Xgoprugroup
Xgortugrout
Xgostugusto
Xgstuygustygutsy
Xhikntthink
Xhikrsshirk
Xhikswwhisk
Xhilmuhilum
Xhilrwwhirl
Xhimrtmirth
Xhimstsmith
Xhinorrhino
Xhinsyshiny
Xhiptypithy
Xhirstshirt
Xhistxsixth
Xhiswywishy
Xhitwywithy
Xhksuyhusky
Xhlmpylymph
Xhlopxphlox
Xhlostsloth
Xhlpsuplush
Xhmnotmonth
Xhmnpynymph
Xhmotumouth
Xhmptuthump
Xhmrtuthrum
Xhmsuymushy
Xhnopyphony
Xhnortnorththorn
Xhnoryhorny
Xhnoswshown
Xhnstushunt
Xhorstshort
Xhortwthrowworth
Xhostushoutsouth
Xhoswyshowy
Xhotuyyouth
Xhrtuyhurty
Xijnotjoint
Xiklmymilky
Xiklsysilky
Xikmpsskimp
Xikmrssmirk
Xiknststink
Xikpsyspiky
Xikqruquirk
Xikrstskirt
Xikrsyrisky
Xilmsyslimy
Xilmtumulti
Xilntuuntil
Xilnvyvinyl
Xilopsspoilpolis
Xiloptpilot
Xilpstspiltsplit
Xilptutulip
Xilqtuquilt
Xilrswswirl
Xilrtwtwirl
Xilstysiltystyli
Ximnorminor
Ximnotminot
Ximnsuminus
Ximopuopium
Ximostmoist
Ximotvvomit
Ximprsprism
Ximpuxmixup
Ximstymisty
Xinoptpintopoint
Xinoryirony
Xinosynoisy
Xinotxtoxin
Xinprtprint
Xinpsyspiny
Xinptuinput
Xinqtuquint
Xintuyunity
Xiopstposit
Xiopsupious
Xioptvpivot
Xiorsvvisor
Xiortvvitro
Xiorvyivory
Xiprststrip
Xiprvyprivy
Xipstytipsy
Xipstzspitz
Xipswywispy
Xiqrtuquirt
Xirstwwrist
Xirsuvvirus
Xistxysixty
Xjknuyjunky
Xjlowyjowly
Xjmpuyjumpy
Xjostujoust
Xklnpuplunk
Xklnruknurl
Xklsuysulky
Xkmosysmoky
Xkmruymurky
Xknpsuspunk
Xknpuypunky
Xknrtutrunk
Xknstustunk
Xkorststork
Xlmpsuslump
Xlmpuylumpy
Xloprwprowl
Xlostulotus
Xlosuylousy
Xlotyzzloty
Xlprsuslurp
Xlrtuytruly
Xlstuylusty
Xmnorumourn
Xmnotumount
Xmopststomp
Xmorststorm
Xmorwywormy
Xmosuymousy
Xmprtutrump
Xmpstustump
Xmrstustrum
Xmstuymusty
Xnorstsnort
Xnorswsworn
Xnostusnout
Xnostystony
Xnoswysnowy
Xnprsuspurn
Xnrtuyrunty
Xoprstsportstrop
Xoprxyproxy
Xopstuspout
Xorstutorus
Xorstwworst
Xorstystory
Xprstuspurt
Xprsuysyrup
Xrstuyrusty
END_OF_FILE
if test 16549 -ne `wc -c <'jotto.d'`; then
    echo shar: \"'jotto.d'\" unpacked with wrong size!
fi
# end of 'jotto.d'
fi
if test -f 'jotto.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'jotto.h'\"
else
echo shar: Extracting \"'jotto.h'\" \(105 characters\)
sed "s/^X//" >'jotto.h' <<'END_OF_FILE'
X/*
X *	jotto.h - definitions for jotto.
X */
X
X#define	MAXGUESS 25
X#define	WORDLEN  5
X#define	DICTLEN  1900
END_OF_FILE
if test 105 -ne `wc -c <'jotto.h'`; then
    echo shar: \"'jotto.h'\" unpacked with wrong size!
fi
# end of 'jotto.h'
fi
if test -f 'jsumm.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'jsumm.c'\"
else
echo shar: Extracting \"'jsumm.c'\" \(281 characters\)
sed "s/^X//" >'jsumm.c' <<'END_OF_FILE'
X/*
X *	jsumm - list the answers given.
X */
X
X#include "jotto.h"
X
Xextern	char	uguess[MAXGUESS][WORDLEN+1];
Xextern	int	uguessc, iresp[MAXGUESS];
X
Xjsumm()
X{
X	int i;
X
X	if (!uguessc) {
X		printf(" no guesses yet.\n");
X		return;
X	}
X	for (i=0; i<uguessc; i++) answer(uguess[i], iresp[i]);
X}
END_OF_FILE
if test 281 -ne `wc -c <'jsumm.c'`; then
    echo shar: \"'jsumm.c'\" unpacked with wrong size!
fi
# end of 'jsumm.c'
fi
if test -f 'legal.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'legal.c'\"
else
echo shar: Extracting \"'legal.c'\" \(344 characters\)
sed "s/^X//" >'legal.c' <<'END_OF_FILE'
X/*
X *	legal
X */
X
X#include <ctype.h>
X#ifdef BSD
X#include <strings.h>
X#else
X#include <string.h>
X#endif
X#include "jotto.h"
X
Xint
Xlegal(w)
Xchar *w;
X{
X	char *ww, *xx;
X
X	if (strlen(w) != WORDLEN) return 0;
X	for (ww=w; *ww; ww++) if (!islower(*ww)) return 0;
X	for (ww=w; ww[1]; ww++) for (xx=ww+1; xx[0]; xx++)
X		if (*ww == *xx) return 0;
X	return 1;
X}
END_OF_FILE
if test 344 -ne `wc -c <'legal.c'`; then
    echo shar: \"'legal.c'\" unpacked with wrong size!
fi
# end of 'legal.c'
fi
if test -f 'load.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'load.c'\"
else
echo shar: Extracting \"'load.c'\" \(387 characters\)
sed "s/^X//" >'load.c' <<'END_OF_FILE'
X/*
X *	load
X */
X
X#include <stdio.h>
X#ifdef BSD
X#include <strings.h>
X#else
X#include <string.h>
X#endif
X#include "jotto.h"
X
Xextern	char	dict[DICTLEN][WORDLEN*2+1];
Xextern	int	ndict;
Xextern	FILE	*tape4;
X
Xload()
X{
X	char lline[80+1];
X
X	rewind(tape4);
X	ndict=0;
X	while (fgets(lline, 80, tape4)) {
X		strncpy(dict[ndict], lline, WORDLEN*2);
X		dict[ndict++][WORDLEN*2] = '\0';
X	}
X	rewind(tape4);
X}
END_OF_FILE
if test 387 -ne `wc -c <'load.c'`; then
    echo shar: \"'load.c'\" unpacked with wrong size!
fi
# end of 'load.c'
fi
if test -f 'ord.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'ord.c'\"
else
echo shar: Extracting \"'ord.c'\" \(177 characters\)
sed "s/^X//" >'ord.c' <<'END_OF_FILE'
X/*
X *	ord
X */
X
Xchar *
Xord(n)
Xint n;
X{
X	if (n/10 == 1) return "th";
X	switch(n%10) {
X	case 1: return "st";
X	case 2: return "nd";
X	case 3: return "rd";
X	default: return "th";
X	}
X}
END_OF_FILE
if test 177 -ne `wc -c <'ord.c'`; then
    echo shar: \"'ord.c'\" unpacked with wrong size!
fi
# end of 'ord.c'
fi
if test -f 'subs.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'subs.c'\"
else
echo shar: Extracting \"'subs.c'\" \(432 characters\)
sed "s/^X//" >'subs.c' <<'END_OF_FILE'
X/*
X *	subroutines
X *
X *	These are worth optimizing in assembly language.
X */
X  
X#include "jotto.h"
X
Xint
Xinter(a,b)
Xchar *a, *b;
X{
X	int retval;
X	char *ap, *bp;
X
X	retval = 0;
X	for (ap=a; ap<a+WORDLEN; ap++)
X	for (bp=b; bp<b+WORDLEN; bp++) if (*ap == *bp) {
X		retval++;
X		break;
X	}
X	return retval;
X}
X
Xint
Xblog(n)
Xregister int n;
X{
X	register int retval;
X	if (!n--) return 0;
X	retval = 0;
X	while (n) {n>>=1; retval++;}
X	return retval;
X}
END_OF_FILE
if test 432 -ne `wc -c <'subs.c'`; then
    echo shar: \"'subs.c'\" unpacked with wrong size!
fi
# end of 'subs.c'
fi
echo shar: End of archive 1 \(of 1\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have the archive.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0