Perl Quiz-of-the-Week #16
Jon Bjornstad <[email protected]> Wed, 23 Jun 2004 21:24:12 -0400
| Newsgroups | gmane.comp.lang.perl.qotw.quiz-of-the-week |
|---|---|
| Message-ID | <[email protected]> |
IMPORTANT: Please do not post solutions, hints, or other spoilers
until at least 60 hours after the date of this message.
Thanks.
IMPORTANTE: Por favor, no enviéis soluciones, pistas, o cualquier otra
cosa que pueda echar a perder la resolución del problema hasta
que hayan pasado por lo menos 60 horas desde el envío de este
mensaje. Gracias.
IMPORTANT: S'il vous plaît, attendez au minimum 60 heures après la
date de ce message avant de poster solutions, indices ou autres
révélations. Merci.
WICHTIG: Bitte schicken Sie keine Lösungen, Tipps oder Hinweise für
diese Aufgabe vor Ablauf von 60 Stunden nach dem Datum dieser
Mail. Danke.
BELANGRIJK: Stuur aub geen oplossingen, hints of andere tips in de
eerste 60 uur na het verzendingstijdstip van dit
bericht. Waarvoor dank.
VNIMANIE: Pozhalujsta ne shlite reshenija, nameki na reshenija, i
voobshe lyubye podskazki v techenie po krajnej mere 60 chasov
ot daty etogo soobshenija. Spasibo.
Qing3 Zhu4Yi4: Qing3 Ning2 Deng3Dao4 Jie1Dao4 Ben3 Xin4Xi2 Zhi1Hou4 60
Xiao3Shi2, Zai4 Fa1Biao3 Jie3Da2, Ti2Shi4, Huo4 Qi2Ta1 Hui4
Xie4Lou4 Da2An4 De5 Jian4Yi4. Xie4Xie4.
----------------------------------------------------------------
For statewide elections, the state of California uses a "random
alphabetic" sort to order the candidates' names on the ballot. This
link describes that special sort:
http://www.ss.ca.gov/elections/elections_ra.htm
(mirrored at http://perl.plover.com/qotw/misc/r018/elections_ra.htm )
The idea is this: a random order is selected for the twenty-six
letters of the alphabet, and then the names on the ballot are sorted
according to this random order, instead of according to the usual
order.
This is the order in which the names appear on the ballot in Assembly
District 1. In Assembly District 2, the order is the same, except
that the first name on the list has been moved to the end of the list.
In Assembly District 3, the first name on the list is moved to the end
of the list, and so on.
You will write a program to generate ballots. The program will be
invoked like this:
elect.pl [-r] [permutation] [district-number] [namefile]
(Items in [square brackets] are optional.)
The 'permuation' argument will default to 'randlet.txt'. If the file
exists, it should contain a single line of text with a random
permutation of the 26 letters of the alphabet. If this file does not
exist, the program should generate one at random. The -r option will
force the file to be regenerated even if it exists already.
The 'district-number' is the number of the Assembly District for which
the ballot will be generated. If omitted, the program should generate
the ballot for Assembly District 1.
The 'namefile' is a file that contains the names of the candidates.
The names come one per line with first name then last name:
Jill Harmon
Gus Tribble
Walter Reston
Norma Kretschmer
Fiorella Squamuglia
Marv Smith
Bill Smith
Ed Squid
John Macdonald
Angus MacDonald
If the namefile is omitted, the program should read the names from the
standard input.
The program should print out the candidates' names, one per line, in
the order specified by California state law, sorted according to the
random permutation of the alphabet, with names rearranged as
appropriate for the specified Assembly District.
For example, if the file 'permutation' contains
QWERTYUIOPASDFGHJKLZXCVBNM
and the 'namefile' contains the names listed above, then the output
for Assembly District 1 should be:
Walter Reston
Gus Tribble
Ed Squid
Fiorella Squamuglia
Vern Smith
Bill Smith
Jill Harmon
Norma Kretschmer
Angus MacDonald
John Macdonald
For Assembly District 4, it should be:
Fiorella Squamuglia
Vern Smith
Bill Smith
Jill Harmon
Norma Kretschmer
Angus MacDonald
John Macdonald
Walter Reston
Gus Tribble
Ed Squid