[Kc] Perl 'Expert' Quiz of the Week #25 (acrostic puzzle generator)

Garrett Goebel garrett at scriptpro.com
Wed Oct 6 15:04:16 CDT 2004


IMPORTANT: Please do not post solutions, hints, or other spoilers
        until at least 60 hours after the date of this message.
        Thanks.

IMPORTANT: S'il vous plat, attendez au minimum 60 heures aprs la
        date de ce message avant de poster solutions, indices ou autres
        rvlations. Merci.

Qing3 Zhu4Yi4: Qing3 Ning2 Deng3Dao4 Jie1Dao4 Ben3 Xin4Xi2 Zhi1Hou4 60
        Xiao3Shi2, Zai4 Fa1Biao3 Jie3Da2, Ti2Shi4, Huo4 Qi2Ta1 Hui4
        Xie4Lou4 Da2An4 De5 Jian4Yi4.  Xie4Xie4.

UWAGA: Prosimy nie publikowac rozwiazan, dodatkowych  badz pomocniczych
	informacjii przez co najmniej 60 godzin od daty tej wiadomosci.
	Dziekuje.

----------------------------------------------------------------

You will write a program to generate double-acrostic puzzles.

A double-acrostic puzzle is a little like a crossword puzzle, except that
the words don't cross.  The goal of the puzzle is to determine the contents
of a secret quotation.  The solver receives a list of crossword-style clues.
The solution to each clue is a word or a short phrase.  Each letter in a
clue answer is transferred to corresponding labeled spaces in a grid.  When
all the spaces in the grid are filled in with the correct letters, the grid
will contain the secret quotation.

At each point in the solution process, the solver can work forwards, using
the clue answers to determine letters in the quotation, or backwards,
completing partial words in the quotation and then transferring the inferred
letters back to the clue answers.  

Here's a very small example:

        __  __  __       __  __  __  __  __  __  __  __       __  __
        1d  2f  3g       4d  5b  6c  7g  8a  9f  10e 11g      12d 13a

        __  __  __  __  __      __  __  __  __  __  __      __  __  __ 
        14f 15a 16e 17c 18b     19b 20a 21e 20f 23a 24e     25g 26c 27d

        __  __  __  __       __  __  __  __      __  __       __  __  __
        28f 29g 30b 31a      32  33b 34L 35e     36f 37e      38a 39d 40c


        ----------------------------------------------------------------


        a. __ __ __ __ __ __            Unorthodox belief
           15 23 38 8  13 31

        b. __ __ __ __ __ __            Where the sun comes up
           19 18 33 30 5  22

        c. __ __ __ __ __ __ __         A new twist
           40 24 6  26 34 32 17

        d. __ __ __ __ __               Check the records
           39 4  27 12 1

        e. __ __ __ __ __ __            Strive against
           24 35 21 16 10 37

        f. __ __ __ __ __ __            A score and half
           28 2  36  9 14 20

        g. __ __ __ __ __               Followed by a ho?
           29 11 25 7  3


Suppose you guess that the answer to clue c, "A new twist", is "upgrade".
You would fill in "UPGRADE" into the seven blanks following clue c, and then
transfer the letters to the corresponding spaces in the quotation grid, "U"
into space 40, "P" into space 24, and so on up to "E" in space 17.

At this point the word at spaces 38-39-40 in the main grid is "__U", and
there are very few three-letter words in English that end in 'U'.
The most common is "YOU", so perhaps you tentatively guess that 38-39-40 is
"YOU".  The notation "a" below space 38 means that that letter is found in
the answer to clue a, so you can fill in "Y" in the third space of "a", and
similarly, the first letter of d would be "O".

There's a third source of information in these puzzles: The initial letters
of the clue answers form the name of the author of the quotation, and
sometimes the title of its source.  In this example, letters
15-19-40-39-24-38-29 spell the last name of the author.

Typical examples are larger than this.  The quotation is usually between 100
and 200 letters long, and there are typically 20-30 clues.

Write a program, "acrostic2", which generates a double acrostic puzzle,
given a quotation, an author credit, and a dictionary file:

        acrostic2 quotefile dictionary

The quote file will contain the quotation, followed by a blank line,
followed by the author or source credit.  The program should remove all
nonalphabetic characters from the quotation and source credit.
Upper and lowercase letters are considered equivalent.

The dictionary should contain one word per line.  Again upper and lower case
letters are equivalent.

The program should output a list of clue answer values, one per line, such
that:

0. No two clue answers are the same

1. Each clue answer is a dictionary entry,

2. There are exactly as many clue answers as there are alphabetic
   characters in the source credit,

3. Each clue answer begins with the corresponding letter of the source
   credit, and

4. The letters in the output can be rearranged to form the quotation,
   with no letters left over.

The program is not responsible for assigning the letters to the grid or for
formatting the puzzle, because coming up with the answer list is the hard
part.  If you do decide to have your program emit completed puzzles, please
do not make this the default behavior; have it be enabled by a command-line
option.  (Note that there is a quality-of-implementation issue here: the
letters from any one or two clue answers should be scattered around the
grid, and not clustered together into just a few words.)

[ ADMIN: Dan Sanderson assures me that he is working on writing up
  sample solutions for the RPN calculator quiz from last week.   The
  report will be along when he finished it.  -- MJD ]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.pm.org/archives/kc/attachments/20041006/85778ea7/attachment.htm


More information about the kc mailing list