[Date Prev][Date Next][Thread Prev][Thread Next] [Search] [Date Index] [Thread Index]

Re: [FWP] Sort challenge



"Casey R. Tweten" <crt@kiski.net> writes:

> Today around 1:53pm, Branden hammered out this masterpiece:
> 
> : Lou Hevly <lou@visca.com> wrote:
> : > Greetings all:
> : >
> : > Given the following data:
> : >
> : > __DATA__
> : > ae|Evans|Anne
> : > le|Evans|Louise
> : > he|Evans|Helen
> : > je|Evans|
> : > pete||Peter
> : > xs|Sanchez|
> : > rwj||
> : > est||
> : >
> : > 1) If there's a last name, the program should sort first by that and >
> : then by the firstname (if there is one);
> : > 2) If no last name, then sort by first name;
> : > 3) If neither last nor first name, then sort by username
> : >
> : > So the desired result is:
> : >
> : > est
> : > Evans
> : > Evans, Anne
> : > Evans, Helen
> : > Evans, Louise
> : > Peter
> : > rwj
> : > Sanchez
> : >
> : 
> : 
> : Two solutions, one with 102 characters and the other with 89. (Can it be
> : smaller?) Both expect to receive the file with the data as arguments,
> : instead of __DATA__, but changing <> to <DATA> would make it work with
> : __DATA__.
> : 
> : 
> :     ($u,$l,$f)=split(/[|\n]/),push@a,$l?$f?"$l, $f":$l:$f||$u
> :     while<>;$,=$\=$/;print sort{lc$a cmp lc$b}@a
> 
> 84 characters:
> 
>     print sort{lc$a cmp lc$b}
>     map{/(.*)\|(.*)\|(.*)/;($2?join', ',$2,$3||():$3||$1).$/}<>
> 
> 
> -- 
> print(join(' ', qw(Casey R. Tweten)));my $sig={mail=>'crt@kiski.net',site=>
> 'http://home.kiski.net/~crt'};print "\n",'.'x(length($sig->{site})+6),"\n";
> print map{$_.': '.$sig->{$_}."\n"}sort{$sig->{$a}cmp$sig->{$b}}keys%{$sig};
> my $VERSION = '0.01'; #'patched' by Jerrad Pierce <belg4mit at MIT dot EDU>
> 
> 
> ==== Want to unsubscribe from Fun With Perl?  Well, if you insist...
> ==== Send email to <fwp-request@technofile.org> with message _body_
> ====   unsubscribe

Funny - I was playing around with almost the same piece of code.

80 characters:

print sort{lc$a cmp lc$b}map{/(.*)\|(.*)\|(.*)/;($2?$3?"$2, $3":$2:$3||$1).$/}<>



Jas

==== Want to unsubscribe from Fun With Perl?  Well, if you insist...
==== Send email to <fwp-request@technofile.org> with message _body_
====   unsubscribe