>>>>> "Kevin" == Kevin Zembower <[EMAIL PROTECTED]> writes:

Kevin> Here's a sure sign of someone with too much time on his hands:
Kevin> I was curious how to implement an algorithm in perl to sort the candidates in 
California's recall ballot. According to the news, here's the sort order:
Kevin> RWQOJMVAHBSGZXNTCIEKUPDYFL

Kevin> So, for instance, if STDIN is a cat of the file of candidates' names:
Kevin> Bock, Audie E. 
Kevin> Bustamante, Cruz M. 
Kevin> Feinstein, Dan 
Kevin> Flynt, Larry 
Kevin> Kennedy, Edward Thomas 
Kevin> Nave, Paul James 
Kevin> Novello, Donald A. 

Kevin> STDOUT would be the sorted list:
Kevin> Bock, Audie E. # Because O comes before U
Kevin> Bustamante, Cruz M. 
Kevin> Novello, Donald A. # Because O comes before A
Kevin> Nave, Paul James 
Kevin> Kennedy, Edward Thomas 
Kevin> Feinstein, Dan # Because E comes before L
Kevin> Flynt, Larry 

Kevin> (if I did it correctly).

Kevin> So, what's the most perl-ish way to write such a beast? Bonus points for a 
one-liner.

This seems to do the right thing, although it's not yet one line. :)

    print
            map $_->[0],
            sort { $a->[1] cmp $b->[1] }
            map {
                    (my $k = $_) =~
                            
tr/RWQOJMVAHBSGZXNTCIEKUPDYFLrwqojmvahbsgzxntciekupdyfl/A-ZA-Z/;
                    [$_, $k];
            } <DATA>;
    __END__
    Bock, Audie E. 
    Bustamante, Cruz M. 
    Feinstein, Dan 
    Flynt, Larry 
    Kennedy, Edward Thomas 
    Nave, Paul James 
    Novello, Donald A. 

-- 
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<[EMAIL PROTECTED]> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to