home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / games / volume18 / wf / part01 < prev    next >
Encoding:
Text File  |  1993-07-11  |  20.3 KB  |  955 lines

  1. Path: uunet!news.tek.com!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v18i015:  wf - simple program to make "Word Search" squares, Part01/01
  5. Date: 12 Jul 1993 06:33:32 GMT
  6. Organization: Tektronix, Inc, Redmond, OR, USA
  7. Lines: 942
  8. Approved: billr@saab.CNA.TEK.COM
  9. Message-ID: <21r0js$gtd@ying.cna.tek.com>
  10. NNTP-Posting-Host: saab.cna.tek.com
  11. Xref: uunet comp.sources.games:1815
  12.  
  13. Submitted-by: srt@sun-dimas.aero.org (Scott 'Dr. Pain' Turner)
  14. Posting-number: Volume 18, Issue 15
  15. Archive-name: wf/part01
  16. Environment: 
  17.  
  18.  
  19. #! /bin/sh
  20. # This is a shell archive.  Remove anything before this line, then unpack
  21. # it by saving it into a file and typing "sh file".  To overwrite existing
  22. # files, type "sh file -c".  You can also feed this as standard input via
  23. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  24. # will see the following message at the end:
  25. #        "End of archive 1 (of 1)."
  26. # Contents:  README MANIFEST Makefile wf.6 wf.c words words.2
  27. # Wrapped by billr@saab on Sun Jul 11 23:32:29 1993
  28. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  29. if test -f 'README' -a "${1}" != "-c" ; then 
  30.   echo shar: Will not clobber existing file \"'README'\"
  31. else
  32. echo shar: Extracting \"'README'\" \(293 characters\)
  33. sed "s/^X//" >'README' <<'END_OF_FILE'
  34. X    WORDFIND
  35. X    Mon Mar  8 14:14:15 1993 -- Scott Turner
  36. X
  37. XWF is a simple program to make "Word Search" squares.  This is another
  38. Xcase of a simple game program that I was surprised to find didn't
  39. Xalready exist in the comp.sources.games archives; now it does.
  40. X
  41. XSee the man page for more information.
  42. END_OF_FILE
  43. if test 293 -ne `wc -c <'README'`; then
  44.     echo shar: \"'README'\" unpacked with wrong size!
  45. fi
  46. # end of 'README'
  47. fi
  48. if test -f 'MANIFEST' -a "${1}" != "-c" ; then 
  49.   echo shar: Will not clobber existing file \"'MANIFEST'\"
  50. else
  51. echo shar: Extracting \"'MANIFEST'\" \(331 characters\)
  52. sed "s/^X//" >'MANIFEST' <<'END_OF_FILE'
  53. X   File Name        Archive #    Description
  54. X-----------------------------------------------------------
  55. X MANIFEST                   1    This shipping list
  56. X Makefile                   1    
  57. X README                     1    
  58. X wf.6                       1    
  59. X wf.c                       1    
  60. X words                      1    
  61. X words.2                    1    
  62. END_OF_FILE
  63. if test 331 -ne `wc -c <'MANIFEST'`; then
  64.     echo shar: \"'MANIFEST'\" unpacked with wrong size!
  65. fi
  66. # end of 'MANIFEST'
  67. fi
  68. if test -f 'Makefile' -a "${1}" != "-c" ; then 
  69.   echo shar: Will not clobber existing file \"'Makefile'\"
  70. else
  71. echo shar: Extracting \"'Makefile'\" \(150 characters\)
  72. sed "s/^X//" >'Makefile' <<'END_OF_FILE'
  73. X#
  74. X#  Makefile for WordFind Program
  75. X#
  76. X
  77. Xwf: wf.c
  78. X    cc -O -o wf wf.c
  79. X
  80. Xclean:
  81. X    rm *~ *.o wf
  82. X
  83. Xshar:
  84. X    shar README Makefile wf.c wf.6 words words.2 > wf.shar
  85. END_OF_FILE
  86. if test 150 -ne `wc -c <'Makefile'`; then
  87.     echo shar: \"'Makefile'\" unpacked with wrong size!
  88. fi
  89. # end of 'Makefile'
  90. fi
  91. if test -f 'wf.6' -a "${1}" != "-c" ; then 
  92.   echo shar: Will not clobber existing file \"'wf.6'\"
  93. else
  94. echo shar: Extracting \"'wf.6'\" \(4020 characters\)
  95. sed "s/^X//" >'wf.6' <<'END_OF_FILE'
  96. X.TH WF 6 "Mar  8 1993"
  97. X.SH NAME
  98. Xwf \- simple program to create ``wordfind'' squares.
  99. X.SH SYNOPSIS
  100. Xwf [-hvdbarpc] [-x <n>] [-y <n>] [-t <title>] [-f <file>]
  101. X.SH DESCRIPTION
  102. XWF creates a word search puzzle that looks something like this:
  103. X
  104. X.ne 15
  105. X.nf
  106. X.ft C
  107. X                            W*O*R*D F*I*N*D
  108. X
  109. X
  110. X                           +---------------+
  111. X                           | L T A T I U D |
  112. X                           | T N U O L O Y |
  113. X                           | T I T I L A N |
  114. X                           | C A T U I T A |
  115. X                           | S I C U N T M |
  116. X                           | E E S U O H I |
  117. X                           | A I A D I U T |
  118. X                           | S A L O S O E |
  119. X                           +---------------+
  120. X
  121. Xcat             house           Illinois        dynamite            
  122. X.ft P
  123. X.fi
  124. X
  125. XWordfind takes as input a file of words to hide in the word search
  126. Xsquare.  By default the file is named "words" and located in the
  127. Xcurrent directory.  Wordfind then tries to hide these words in a
  128. Xsquare (15x15 by default), and prints out the results as above on the
  129. Xstandard output.
  130. X
  131. X.SH OPTIONS
  132. X
  133. XThere are a variety of options to Wordfind:
  134. X
  135. X   -h (Permit horizontal placement)
  136. X   -v (Permit vertical placement)
  137. X   -d (Permit diagonal placement)
  138. X   -b (Permit backwards placement)
  139. X   -a (Permit all placements)
  140. X
  141. XBy default, Wordfind will place words horizontally, vertically and
  142. Xdiagonally.  Explicitly turning on a placement option turns off all of
  143. Xthe default placement options, i.e., ``wf -h'' places words only
  144. Xhorizontally. 
  145. X
  146. X   -r (Select randomly from wordlist)
  147. X
  148. XBy default, Wordfind tries to place words from the wordlist in the
  149. Xorder in which they appear.  -r makes Wordfind try the wordlist in
  150. Xrandom order.
  151. X
  152. X   -x <num> (Specify width of puzzle)
  153. X   -y <num> (Specify height of puzzle)
  154. X
  155. XThe default size is 15x15; the maximum size is 20x20.
  156. X
  157. X   -t <title> (Specify title of puzzle)
  158. X
  159. XThe default title is "W*O*R*D F*I*N*D".
  160. X
  161. X   -p (Don't print words below the puzzle)
  162. X   -c (Print clues instead of the words used)
  163. X
  164. XSee below for an explanation of "clues".
  165. X
  166. X   -f <file> (Specify word list file)
  167. X
  168. XBy default Wordfind looks for a file named "words" in the current
  169. Xdirectory.  -f can be used to override this.
  170. X
  171. X.SH THE WORD FILE
  172. X
  173. XThe word file has one word per line, optionally followed by a "clue".
  174. XA simple word file might look like this:
  175. X
  176. X.nf
  177. Xcat
  178. Xdog
  179. Xhouse
  180. XIllinois
  181. Xdynamite
  182. X.fi
  183. X
  184. XIt's important not to have any trailing blank lines in the file.
  185. X
  186. XIf you want the words at the bottom of the puzzle to be in
  187. Xalphabetical order (albeit line by line rather than by columns) you
  188. Xshould sort the input file.
  189. X
  190. XEach word can optionally be followed by a clue (up to 50 characters
  191. Xlong).  This clue can be printed instead of the actual word by using
  192. Xthe -c option.  This permits you to make, for instance, a wordfind
  193. Xsquare for a Spanish class:
  194. X
  195. X.nf
  196. Xgato cat
  197. Xpero dog
  198. Xcasa a house 
  199. Xtonto fool
  200. X.fi
  201. X
  202. X.ne 15
  203. X.ft C
  204. X.nf
  205. X                            W*O*R*D F*I*N*D
  206. X
  207. X
  208. X                           +---------------+
  209. X                           | T C O E G O O |
  210. X                           | T R A A C T G |
  211. X                           | T P C S N T A |
  212. X                           | R T E O A O O |
  213. X                           | O E T R O T C |
  214. X                           | O A T N O A E |
  215. X                           | G G E N A A T |
  216. X                           +---------------+
  217. X
  218. X cat             dog             house           fool               
  219. X.ft P
  220. X.fi
  221. X
  222. X.SH IMPLEMENTATION NOTES
  223. X
  224. X* Wordfind does not try to make the "best" wordfind square.  It
  225. Xdoesn't do any search or clever tricks to try to fit in the most
  226. Xwords.  Frankly, that's a bit too anal-retentive for a program to make
  227. Xword search puzzles, if you ask me.
  228. X
  229. X* Wordfind does do one clever thing: it fills in the unused spots in
  230. Xthe word square with letters chosen from the words that are actually
  231. Xin the word square.  This makes the square a little more challenging.
  232. X
  233. X.SH BUGS
  234. X
  235. XNone.
  236. X
  237. X.SH AUTHOR
  238. X
  239. XScott R. Turner (srt@aerospace.aero.org)
  240. X
  241. END_OF_FILE
  242. if test 4020 -ne `wc -c <'wf.6'`; then
  243.     echo shar: \"'wf.6'\" unpacked with wrong size!
  244. fi
  245. # end of 'wf.6'
  246. fi
  247. if test -f 'wf.c' -a "${1}" != "-c" ; then 
  248.   echo shar: Will not clobber existing file \"'wf.c'\"
  249. else
  250. echo shar: Extracting \"'wf.c'\" \(8416 characters\)
  251. sed "s/^X//" >'wf.c' <<'END_OF_FILE'
  252. X#include <stdio.h>
  253. X#include <ctype.h>
  254. X#include <string.h>
  255. X/*
  256. X *  WORDFIND
  257. X *  Mon Oct 26 10:00:50 1992 -- Scott R. Turner
  258. X *
  259. X *  Build word search type puzzles.
  260. X *
  261. X */
  262. X
  263. X/*
  264. X *  The wordfind square.
  265. X *
  266. X */
  267. X#define MAXX 20
  268. X#define MAXY 20
  269. Xchar wfs[MAXX][MAXY];
  270. X
  271. X/*
  272. X *  The word list.
  273. X *
  274. X */
  275. X#define MAXWORDS 1000
  276. X#define MAXWORDLEN 20
  277. X#define MAXCLUELEN 50
  278. Xint numwords = 0;
  279. Xchar wl[MAXWORDS][MAXWORDLEN];
  280. Xchar clues[MAXWORDS][MAXCLUELEN];
  281. Xint used[MAXWORDS];
  282. X
  283. X/*
  284. X *  Global Options
  285. X *
  286. X *  -h        Horizontal
  287. X *  -v        Vertical
  288. X *  -d        Diagonal
  289. X *  -b        Backwards
  290. X *
  291. X *  -r        Random selections from wordlist
  292. X *
  293. X *  -x <num>  Horizontal size of puzzle
  294. X *  -y <num>  Vertical size of puzzle
  295. X *
  296. X *  -t <str>  Title of puzzle
  297. X *  -p        Don't print words to find below puzzle
  298. X *  -c        print clues instead of words
  299. X *
  300. X *  -f <file> Word list
  301. X *
  302. X */
  303. Xint backwards = 0;
  304. Xint randselect = 0;
  305. Xint xsize = 15, ysize = 15;
  306. Xchar title[80] = "W*O*R*D F*I*N*D";
  307. Xint printwords = 1, printclues = 0;
  308. Xchar wordfile[80] = "words";
  309. X
  310. X/*
  311. X *  First column is horizontal offset.
  312. X *  Second column is vertical offset.
  313. X *
  314. X */
  315. Xint dirs[8][2] = {{1,0},
  316. X          {0,1},
  317. X          {1,1},
  318. X          {1,-1},
  319. X          {-1,0},
  320. X          {0,-1},
  321. X          {-1,-1},
  322. X          {-1,1}};
  323. X/*
  324. X *  Which directions are permitted?
  325. X *
  326. X */
  327. Xint permitted[8] = {0,0,0,0,0,0,0,0};
  328. X
  329. Xmain (argc, argv)
  330. Xchar *argv[];
  331. X{
  332. X        char s;
  333. X    int i,j;
  334. X    FILE *wf;
  335. X    
  336. X        while (--argc > 0) {
  337. X      argv++;
  338. X      if ((*argv)[0] == '-') {
  339. X        s = (*argv)[1];
  340. X        switch (s) {
  341. X        case 'a':
  342. X          for(i=0;i<8;i++) permitted[i] = 1;
  343. X          break;
  344. X        case 'h':
  345. X          permitted[0] = 1;
  346. X          break;
  347. X        case 'v':
  348. X          permitted[1] = 1;
  349. X          break;
  350. X        case 'd':
  351. X          permitted[2] = 1;
  352. X          permitted[3] = 1;
  353. X          break;
  354. X        case 'b':
  355. X          backwards = 1;
  356. X          break;
  357. X        case 'r':
  358. X          randselect = 1;
  359. X          break;
  360. X        case 'p':
  361. X          printwords = 0;
  362. X          break;
  363. X        case 'c':
  364. X          printclues = 1;
  365. X          break;
  366. X        case 'x':
  367. X          xsize = atoi((*++argv));
  368. X          if (xsize > 20) xsize = 20;
  369. X          if (xsize < 1) xsize = 1;
  370. X          argc--;
  371. X          break;
  372. X        case 'y':
  373. X          ysize = atoi((*++argv));
  374. X          if (ysize > 20) ysize = 20;
  375. X          if (ysize < 1) ysize = 1;
  376. X          argc--;
  377. X          break;
  378. X        case 't':
  379. X          (void) strcpy(title,(*++argv));
  380. X          argc--;
  381. X          break;
  382. X        case 'f':
  383. X          (void) strcpy(wordfile,(*++argv));
  384. X          argc--;
  385. X          break;
  386. X        default:
  387. X          fprintf(stderr,"Unknown option: %c\n",s);
  388. X          fprintf(stderr,"Options:\n");
  389. X          fprintf(stderr,"   -h (Permit horizontal placement)\n");
  390. X          fprintf(stderr,"   -v (Permit vertical placement)\n");
  391. X          fprintf(stderr,"   -d (Permit diagonal placement)\n");
  392. X          fprintf(stderr,"   -b (Permit backwards placement)\n");
  393. X          fprintf(stderr,"   -a (Permit all placements)\n");
  394. X          fprintf(stderr,"   -r (Select randomly from wordlist)\n");
  395. X          fprintf(stderr,"   -x <num> (Specify width of puzzle)\n");
  396. X          fprintf(stderr,"   -y <num> (Specify height of puzzle)\n");
  397. X          fprintf(stderr,"   -t <title> (Specify title of puzzle)\n");
  398. X          fprintf(stderr,"   -p (Don't print words below the puzzle)\n");
  399. X          fprintf(stderr,"   -c (Print clues instead of the words used)\n");
  400. X          fprintf(stderr,"   -f <file> (Specify word list file)\n");
  401. X          exit(1);
  402. X        };
  403. X      } else {
  404. X        (void) strcpy(wordfile,(*argv));
  405. X       };
  406. X        };
  407. X
  408. X    /*
  409. X     *  Do default placements?
  410. X     *
  411. X     */
  412. X    j = 0;
  413. X    for(i=0;i<8;i++) j += permitted[i];
  414. X    if (!j) {
  415. X      permitted[0] = 1;
  416. X      permitted[1] = 1;
  417. X      permitted[2] = 1;
  418. X    };
  419. X
  420. X    /*
  421. X     *  Backwards check.
  422. X     *
  423. X     */
  424. X    if (backwards) 
  425. X      for(i=0;i<4;i++) permitted[i+4] = permitted[i];
  426. X
  427. X    /*
  428. X     *  See if we can read the word file.
  429. X     *
  430. X     */
  431. X    if ((wf = fopen(wordfile,"r")) == NULL) {
  432. X      fprintf(stderr,"Unable to open wordfile: %s.\n",wordfile);
  433. X      fprintf(stderr,"Specify correct wordfile with -f.\n");
  434. X      exit(-1);
  435. X    };
  436. X    /*
  437. X     *  Word file consists of a word, a space and the remainder of the 
  438. X     *  line, which is the "clue".
  439. X     *
  440. X     */
  441. X    while(fscanf(wf,"%s",wl[numwords]) != EOF) {
  442. X      fgets(clues[numwords],MAXCLUELEN,wf);
  443. X      for(i=strlen(clues[numwords])-1;isspace(clues[numwords][i]);i--)
  444. X        clues[numwords][i] = 0;
  445. X      numwords++;
  446. X    };
  447. X    for(i=0;i<numwords;i++) used[i] = 0;
  448. X
  449. X    /*
  450. X     *  Print the title, centered.
  451. X     *
  452. X     */
  453. X    for(i=0;i<((80-strlen(title))/2);i++) putchar(' ');
  454. X    printf("%s\n\n",title);
  455. X
  456. X    /*
  457. X     *  Initialize.
  458. X     *
  459. X     */
  460. X    for(i=0;i<xsize;i++)
  461. X      for(j=0;j<ysize;j++) wfs[i][j] = 0;
  462. X
  463. X    /*
  464. X     *  Now for each word in the wordlist, try to place the word
  465. X     *  somewhere in the puzzle.
  466. X     *
  467. X     */
  468. X    srandom(time(0));
  469. X    if (randselect) {
  470. X      for(i=0;i<numwords;i++) {
  471. X        j = random(0)%numwords;
  472. X        while (used[j]) {
  473. X          j = (j+1)%numwords;
  474. X        };
  475. X        placeword(j);
  476. X      }
  477. X    } else {
  478. X      for(i=0;i<numwords;i++) placeword(i);
  479. X    };
  480. X
  481. X    /*
  482. X     *  Now go through and fill in all the spaces in the board.
  483. X     *
  484. X     */
  485. X    fillboard();
  486. X
  487. X    /*
  488. X     *  Print the board out.
  489. X     *
  490. X     */
  491. X    printboard();
  492. X
  493. X    /*
  494. X     *  Print out the words to be found.
  495. X     *
  496. X     */
  497. X    print_words();
  498. X}
  499. X
  500. X/*
  501. X * Placeword
  502. X *
  503. X * Using the available options, try to place the current word in the
  504. X * puzzle.  Return 0 if unable to do so.
  505. X *
  506. X */
  507. Xint placeword(word)
  508. X     int word;
  509. X{
  510. X  int tried[8];
  511. X  int i,x,y,start_dir,start_x,start_y;
  512. X  
  513. X
  514. X  /*
  515. X   *  Initialize the directions we've tried.
  516. X   *
  517. X   */
  518. X  for(i=0;i<8;i++) tried[i] = !permitted[i];
  519. X
  520. X  /*
  521. X   *  Start somewhere randomly and then cycle around until you get
  522. X   *  back to your starting point or you manage to place the word.
  523. X   *
  524. X   */
  525. X  i = start_dir = random(0)%8;
  526. X  do {
  527. X    if (!tried[i]) {
  528. X      tried[i] = 1;
  529. X      /*
  530. X       *  Pick a random starting spot somewhere on the board and start
  531. X       *  trying this direction from that spot.
  532. X       *
  533. X       */
  534. X      y = start_y = random(0)%ysize;
  535. X      do {
  536. X    x = start_x = random(0)%xsize;
  537. X    do {
  538. X      if (try(x,y,i,word,0)) {
  539. X        try(x,y,i,word,1);
  540. X        goto success;
  541. X      };
  542. X      x=(x+1)%xsize;
  543. X    } while (x != start_x);
  544. X    y=(y+1)%ysize;
  545. X      } while (y != start_y);
  546. X    };
  547. X    i=(i+1)%8;
  548. X  } while (i != start_dir);
  549. X  used[word] = -1;
  550. X  return(0);
  551. X success:
  552. X  used[word] = 1;
  553. X  return(1);
  554. X}
  555. X
  556. X/*
  557. X *  TRY
  558. X *
  559. X *  Try placing a word in a given location in a given direction.
  560. X *
  561. X */
  562. Xint try(x,y,dir,word,place)
  563. X     int x,y,dir,word,place;
  564. X{
  565. X  int len;
  566. X  int cnt;
  567. X
  568. X  /*
  569. X   *  The length of the word can be used to rule out some places
  570. X   *  immediately.
  571. X   *
  572. X   */
  573. X  len = strlen(wl[word]);
  574. X  if (dirs[dir][0] == 1 && (len + x) > xsize) return(0);
  575. X  if (dirs[dir][0] == -1 && (len - 1) > x) return(0);
  576. X  if (dirs[dir][1] == 1 && (len + y) > ysize) return(0);
  577. X  if (dirs[dir][1] == -1 && (len - 1) > y) return(0);
  578. X
  579. X  /*
  580. X   *  Otherwise, we have to try to place the word.
  581. X   *
  582. X   */
  583. X  for(cnt=0;cnt<len;cnt++) {
  584. X    if (wfs[x][y] != 0 && wfs[x][y] != wl[word][cnt]) {
  585. X      return(0);
  586. X    };
  587. X    if (place) wfs[x][y] = wl[word][cnt];
  588. X    x += dirs[dir][0];
  589. X    y += dirs[dir][1];
  590. X  };
  591. X  return(1);
  592. X};
  593. X  
  594. X/*
  595. X *  Printboard
  596. X *
  597. X *  Print the board.
  598. X *
  599. X */
  600. Xint printboard()
  601. X{
  602. X  int i,j,prefix;
  603. X
  604. X  prefix = (76-(xsize*2))/2;
  605. X  
  606. X  putchar('\n');
  607. X  for(i=0;i<prefix;i++) putchar(' ');
  608. X  putchar('+');
  609. X  for(i=0;i<xsize;i++) {
  610. X    putchar('-');
  611. X    putchar('-');
  612. X  };
  613. X  putchar('-');
  614. X  putchar('+');
  615. X  putchar('\n');
  616. X  for(j=0;j<ysize;j++) {
  617. X    for(i=0;i<prefix;i++) putchar(' ');
  618. X    putchar('|');
  619. X    putchar(' ');
  620. X    for(i=0;i<xsize;i++) {
  621. X      if (wfs[i][j] == 0) putchar(' ');
  622. X      else putchar(toupper(wfs[i][j]));
  623. X      putchar(' ');
  624. X    };
  625. X    putchar('|');
  626. X    putchar('\n');
  627. X  };
  628. X  for(i=0;i<prefix;i++) putchar(' ');
  629. X  putchar('+');
  630. X  for(i=0;i<xsize;i++) {
  631. X    putchar('-');
  632. X    putchar('-');
  633. X  };
  634. X  putchar('-');
  635. X  putchar('+');
  636. X  putchar('\n');
  637. X};
  638. X
  639. X/*
  640. X *  Fillboard
  641. X *
  642. X *  Fill the spaces in the board with letters chosen randomly from the
  643. X *  words we used.
  644. X *
  645. X */
  646. Xint fillboard()
  647. X{
  648. X  int word,spot;
  649. X  int i,j;
  650. X
  651. X  for(i=0;i<xsize;i++)
  652. X    for(j=0;j<ysize;j++)
  653. X      if (wfs[i][j] == 0) {
  654. X    do {
  655. X      word = random(0)%numwords;
  656. X    } while (used[word] == -1);
  657. X    spot = random(0)%strlen(wl[word]);
  658. X    wfs[i][j] = wl[word][spot];
  659. X      };
  660. X};
  661. X  
  662. X/*
  663. X *  Printwords
  664. X *
  665. X *  Print out the words actually in the puzzle.
  666. X *
  667. X */
  668. Xint print_words()
  669. X{
  670. X  int i, cnt;
  671. X
  672. X  cnt = 0;
  673. X  for(i=0;i<numwords;i++)
  674. X    if (used[i] == 1) {
  675. X      if (!(cnt%4)) putchar('\n');
  676. X      cnt++;
  677. X      if (printclues)
  678. X    printf("%-20s",clues[i]);
  679. X      else 
  680. X    printf("%-20s",wl[i]);
  681. X    };
  682. X  putchar('\n');
  683. X  putchar('\n');
  684. X};
  685. END_OF_FILE
  686. if test 8416 -ne `wc -c <'wf.c'`; then
  687.     echo shar: \"'wf.c'\" unpacked with wrong size!
  688. fi
  689. # end of 'wf.c'
  690. fi
  691. if test -f 'words' -a "${1}" != "-c" ; then 
  692.   echo shar: Will not clobber existing file \"'words'\"
  693. else
  694. echo shar: Extracting \"'words'\" \(421 characters\)
  695. sed "s/^X//" >'words' <<'END_OF_FILE'
  696. Xsanctify
  697. Xsanctimonious
  698. Xsanction
  699. Xsanctity
  700. Xsanctuary
  701. Xsand
  702. Xsandal
  703. Xsandbag
  704. Xsandblast
  705. Xsandpaper
  706. Xsandpile
  707. Xsandpiper
  708. Xsandstone
  709. Xsandwich
  710. Xsandy
  711. Xsane
  712. Xsang
  713. Xsanguine
  714. Xsanitarium
  715. Xsanitary
  716. Xsank
  717. Xsans
  718. Xtreacherous
  719. Xtreachery
  720. Xtread
  721. Xtreadle
  722. Xtreadmill
  723. Xtreason
  724. Xtreasonous
  725. Xtreasure
  726. Xtreasury
  727. Xtreat
  728. Xtreatise
  729. Xtreaty
  730. Xtreble
  731. Xtree
  732. Xtreetop
  733. Xtrefoil
  734. Xtrek
  735. Xtrellis
  736. Xtremble
  737. Xtremendous
  738. Xtremor
  739. Xtrench
  740. Xtrenchant
  741. Xtrend
  742. Xtrendy
  743. Xtrepidation
  744. Xtrespass
  745. Xtress
  746. Xtrestle
  747. END_OF_FILE
  748. if test 421 -ne `wc -c <'words'`; then
  749.     echo shar: \"'words'\" unpacked with wrong size!
  750. fi
  751. # end of 'words'
  752. fi
  753. if test -f 'words.2' -a "${1}" != "-c" ; then 
  754.   echo shar: Will not clobber existing file \"'words.2'\"
  755. else
  756. echo shar: Extracting \"'words.2'\" \(2533 characters\)
  757. sed "s/^X//" >'words.2' <<'END_OF_FILE'
  758. Xgato cat
  759. Xpero dog
  760. Xmantequila butter
  761. Xsilla chair
  762. Xsillon armchair
  763. Xhamburguesa hamburger
  764. Xalumno student
  765. Xamigo friend
  766. Xautomovil car
  767. Xcalle street
  768. Xcasa house
  769. Xcampo country
  770. Xcarta letter
  771. Xciudad city
  772. Xcomedor dining room
  773. Xcosa thing
  774. Xcuarto room
  775. Xdia day
  776. Xedificio building
  777. Xescritorio desk
  778. Xesposa wife
  779. Xfamilia family
  780. Xhermano brother
  781. Xhermana sister
  782. Xhijo son
  783. Xhija daughter
  784. Xhombre man
  785. Xlapiz pencil
  786. Xlengua tongue
  787. Xlugar place
  788. Xlibro book
  789. Xmadre mother
  790. Xmesa table
  791. Xmujer woman
  792. Xmaestro teacher
  793. Xmuchacho boy
  794. Xmuchacha girl
  795. Xnino small boy
  796. Xnina small girl
  797. Xobjeto object
  798. Xpadre father
  799. Xpapel paper
  800. Xplumafuente fountain pen
  801. Xpuerta door
  802. Xsala living room
  803. Xsenor sir
  804. Xsenora madame
  805. Xtio uncle
  806. Xtia aunt
  807. Xtren train
  808. Xventana window
  809. Xviaje trip
  810. Xprimavera Spring
  811. Xagente agent
  812. Xcommerciante businessman
  813. Xestudiante student
  814. Xejemplo example
  815. Xprimero first
  816. Xconversacion conversation
  817. Xnombre name
  818. Xpregunta question
  819. Xprogreso progress
  820. Xcomo like
  821. Xque that
  822. Xdonde where
  823. Xquien who
  824. Xal to the
  825. Xcon with
  826. Xporque because
  827. Xbueno good
  828. Xexcelente excellent
  829. Xgrande big
  830. Ximportante important
  831. Xmalo bad
  832. Xmi my
  833. Xmucho much
  834. Xnecesario necessary
  835. Xotro other
  836. Xpequeno small
  837. Xsentado seated
  838. Xsu his
  839. Xtodo all
  840. Xpoco little
  841. Xalli there
  842. Xaqui here
  843. Xbasta enough
  844. Xcasi almost
  845. Xdiligentemente diligently
  846. Xmuy very
  847. Xrapidamente rapidly
  848. Xsiempre always
  849. Xtambien also
  850. Xademas besides
  851. Xsi if
  852. Xya already
  853. Xalmuerzo lunch
  854. Xasiento seat
  855. Xcara face
  856. Xcamino road
  857. Xcliente client
  858. Xcoche car
  859. Xcomienzo beginning
  860. Xcostumbre custom
  861. Xcura priest
  862. Xdesayuno breakfast
  863. Xestrella star
  864. Xfiesta party
  865. Xhistoria history
  866. Xhuevo egg
  867. Xjugo juice
  868. Xluz light
  869. Xmanzana apple
  870. Xnaranja orange
  871. Xnorte north
  872. Xojo eye
  873. Xpanecillo roll
  874. Xpanqueques pancakes
  875. Xpelicula film
  876. Xpluma pen
  877. Xpostre dessert
  878. Xrecuerdo memory
  879. Xrio river
  880. Xsur South
  881. Xturista tourist
  882. Xtelefono telephone
  883. Xacordarse to remember
  884. Xbuscar to look for 
  885. Xcaminar to walk
  886. Xcelebrar to celebrate
  887. Xcomer to eat
  888. Xcomerse to eat up
  889. Xcruzar to cross
  890. Xdeber to ought to
  891. Xdejar to let
  892. Xdesayunarse breakfast
  893. Xdormirse to fall asleep
  894. Xencontrar to find
  895. Xirse to go away
  896. Xhallar to find
  897. Xlavar to wash
  898. Xlevantarse to get up
  899. Xllevar to carry
  900. Xllamar to call
  901. Xponer to put
  902. Xoir to hear
  903. Xpermitir to permit
  904. Xpreferir to prefer
  905. Xreir to laugh
  906. Xsonreir to smile
  907. Xrecordar to remember
  908. Xsentarse to sit down
  909. Xsentir to regret
  910. Xsentirse to feel
  911. Xsignificar to mean
  912. Xtratar to try 
  913. Xterminar to end
  914. Xvestirse to dress oneself
  915. Xvolver to return
  916. Xancho wide
  917. Xbarato cheap
  918. Xcaro expensive
  919. Xconocido well-known
  920. Xchico small
  921. Xdesocupado unoccupied
  922. Xjunto together
  923. Xmayor older
  924. Xocupado occupied
  925. Xobscuro dark
  926. Xraro rare
  927. Xtal such
  928. Xordinariamente ordinarily
  929. Xnaturalmente naturally
  930. Xtemprano early
  931. Xcontra against
  932. END_OF_FILE
  933. if test 2533 -ne `wc -c <'words.2'`; then
  934.     echo shar: \"'words.2'\" unpacked with wrong size!
  935. fi
  936. # end of 'words.2'
  937. fi
  938. echo shar: End of archive 1 \(of 1\).
  939. cp /dev/null ark1isdone
  940. MISSING=""
  941. for I in 1 ; do
  942.     if test ! -f ark${I}isdone ; then
  943.     MISSING="${MISSING} ${I}"
  944.     fi
  945. done
  946. if test "${MISSING}" = "" ; then
  947.     echo You have the archive.
  948.     rm -f ark[1-9]isdone
  949. else
  950.     echo You still need to unpack the following archives:
  951.     echo "        " ${MISSING}
  952. fi
  953. ##  End of shell archive.
  954. exit 0
  955.