THE IDES OF MARCH POTM ... Deadline for entries is midnight 03/15/94.

One day, while doing some cleaning, I accidentally spilled my Scrabble
letters into a 5x5 plastic grid that happened to be laying about.  Much
to my amazement, the letters all fell right side up.  I was even more
amazed when I noticed that the fourth line spelled out "DSQDL" - an
acronym of a project abandoned early in my "career".

	P O T M S	Hmmm, I said to myself.  There may be the
	R U L E T	seed of an idea here!  If only I could
	I R O N Y	write a program to make 5x5 word squares
	D S Q D L	out of Scrabble letters.  But alas, the
	E T U D E	wisdom required was beyond my means.

But surely YOU, the cream of the programming community, will find this
a most suitable challenge for your skills!

From the pool of 98 Scrabble letters (no blanks), your task will be to
create a 5x5 word square with 25 of the tiles.  Your word square will
be evaluated according to how many valid 4 and 5 letter words are contained
in the square.  I will provide, at run time, the file of valid 4 and 5
letter words - do NOT assume they will be actual English words!

===== UGLY DETAILS FOLLOW ... READ ON IF YOU ARE UP TO THE TASK =====

It is real easy to create a 5x5 square, it's more difficult to put valid
words into the square, it's even more difficult to put the RIGHT valid
words in so that the score is maximized!

I.  YOUR TOOLS - THE TILES

	The 98 SCRABBLE brand tiles are distributed as follows:

	letter:	A,B,C,D, E,F,G,H,I,J,K,L,M,N,O,P, Q,R,S,T,U,V,W,X,Y, Z
	number:	9,2,2,4,12,2,3,2,9,1,1,4,2,6,8,2, 1,6,4,6,4,2,2,1,2, 1
	 value:	1,3,3,2, 1,4,2,4,1,8,5,1,3,1,1,3,10,1,1,1,1,4,4,8,4,10

	You may NOT use more tiles than indicated - for example, use of
	two Q's in your square would disqualify your entry, but you can
	use up to nine A's if you wish.

	You must use 25 of the tiles - no more, no less.

II.  WHAT WORDS WILL CONTRIBUTE TO YOUR SCORE?

	A word MUST be in the "dictionary" provided at run time.  See
	item IV for a discussion of what might be in the dictionary file.
	If a word is not in the provided file, it is not valid.

	A word will be either 4 or 5 letters long.

	A word must begin at the top and read down - or begin at the
	left and read to the right.

	P O T M S	Assuming the dictionary was English-like, the
	R U L E T	valid words would be as follows:
	I R O N Y	
	D S Q D L	RULE, IRON, IRONY, ETUDE, PRIDE, OURS, MEND, STYLE
	E T U D E	(but I'd probably add POTM to the dictionary as well)

	There are at most 10 five letter words and 10 four letter words
	on each board - a total of 20 possible words.

III.  WHAT'S THAT ABOUT A SCORE????

	You will be scored.  This is not outcome-based programming.
	A HIGH score is good - the HIGHEST score on a valid completed
	square will win!  Teamwork does not count for anything ... beat 
	thy competition!

	You receive an incremental score for each word contained in your
	5x5 output square, where a word is defined in II above.

	THE SCORE OF A WORD IS COMPUTED AS FOLLOWS:

	o Add the scrabble letter-values for the 4 or 5 letter word.
	o Square the sum

		for example: IRONY = ( 1+1+1+1+4 ) * ( 1+1+1+1+4 )
				   = (     8     ) * (     8     )
				   = 64

		( note that the word IRON would be computed 
			independently as 4*4=16 )

	THE SCORE OF A BOARD is the sum of the scores of all valid
	words contained on that board.  Thus, for our sample board:

	RULE + IRON + IRONY + ETUDE + PRIDE + OURS + MEND + STYLE
	 16  +  16  +  64   +  36   +  64   +  16  +  49  +  64

	= 325 points.

IV.   THE DICTIONARY

	ARG1 to your program will be the full pathname of an ascii
	file containing all allowable words for this execution.

	o one word per line

	o word length is either 4 or 5 letters

	o the file will contain words in upper case using [A-Z] 
		letters only (no contractions/hyphens/etc.)

	o there will be at least 500 words and at most 8000 words 
		in the dictionary

	o the words will be alphabetized within the file

	o each puzzle may use different dictionaries

	o the words in the dictionary NEED NOT pass spell, (indeed, they
		need not be "words" in ANY language!)

	o you may not modify the dictionary file

V.  YOUR PROGRAM

	o must eventually be compilable on the target machine ... 
	  K&R C is preferred for this one, since I will be running the
	  contest on an (unfamiliar to me) SPARCstation.  Bottom line: 
	  send whatever you want and I'll work hard to get it to compile.
	  (Sorry - I haven't found a C++ compiler yet on the box, nor do 
	  I really know how much ANSI-ness the C compiler will accept.)

	o must generate an a.out such that ARG1 is read as the path of
	  a dictionary file (as described in IV above).

	o should ignore standard input

	o should generate its output on standard output, with nothing
	  appearing on standard error

	o should generate ONLY the following output:

		a) five lines of five letters each
		b) all upper case letters
		c) a new-line after each row

	  such that 	a.out DIRNAME > outfile

	  generates an outfile 30 bytes long.
	  
	o LIMIT:  10,000 characters worth of source code - this will be
		  enforced (regardless of language).

	o LIMIT:  I will use a 1000 word dictionary for the system test.
		  Your program must complete within 3 minutes (sys+user
		  time as measured on whatever machine I run on).
		  This is a guideline, but abusers will be thwarted.

VI.  THE FINALS

	I will run three dictionaries in three separate runs.  I will
	add the total points for all three runs.  I will select the
	entry with the largest number of cumulative points as the winner.

	WHAT IF THERE IS A TIE (the tiebreakers, in order of precedence):
		If two entries have the same number of points, then
		the following are computed over the final three dictionaries:

		a) Number of words - highest total number of words wins.
		b) Total letter values of all letters - highest total wins.

	If entries are still tied, the quickest time (sys+user over
	the three final runs) will win.  (This probably means there are
	identical results from two or more entrants.)


VII.  SENDING ME THE SOURCE CODE - PLEASE USE EMAIL THIS TIME!!!!

	Unlike previous POTMs, please DO NOT USE UUTO to send me the
	source code.  Please email me the source code to me at:

		fah@homxb.att.com		(the old box)
		homxb!fah			(the old box)
		attmail!hicinbothem		(will forward correctly)
		fah@potm.ffast.att.com		(the new box)

	IMPORTANT:  Please use the following (or equivalent) lines at the
	front of the program you mail to me (this will help immeasurably!):

	/*  POTM ENTRY:  entryname					*/
	/*  Your Name:   First Last					*/
	/*  Your email:  log@machine.att.com (or whatever)		*/
	/*  compilation instructions (if other than "make entryname")	*/

	IMPORTANT:  ENTER EARLY - you will receive weekly standings and
	you will resolve any portability issues early - you will be surprised
	how much the weekly standings will help - and with a new POTM
	machine this time around, I'm expecting some portability issues!

	IMPORTANT:  AFTER you mail me an entry, I will run a system test on
	it using a dictionary file which I will ship to you on request.
	Until then, any file containing 4 and 5 letter strings will suffice!
	(I will NOT send the files that will be used in the final judging.)

	IMPORTANT:  If you don't hear from me within a few days - it may mean
	that my mail got screwed up .... please follow up with an inquiry to
	attmail!hicinbothem .... hopefully all the bugs are worked out!

VIII.  CONSOLATION AWARDS:

	o best entry name:  please do NOT be boring, and please DO
	  include your program name and your email address in the
	  opening comments of your program (see VII)!

	o best interpretation of the acronym:  DSQDL (that old project
	  that turned up in my accidental spill).

	o Highest scoring square with valid words from Webster's
	  Third Unabridged dictionary .... this need NOT necessarily
	  be generated by your program ... this is for folks who just
	  like to play around with Scrabble letters. (submit separately
	  via email please - you need not submit a program to win this one!)