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!)