Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: complex sort

by mkmcconn (Chaplain)
on Dec 25, 2001 at 06:16 UTC ( [id://134257]=note: print w/replies, xml ) Need Help??


in reply to complex sort

Thank you all very much for your helpful suggestions. I combined them to form the following (which even (accidentally) managed to beat Ovid's by a hair):
mkmcconn: 4 wallclock secs ( 4.66 usr + 0.00 sys = 4.66 CPU) @ 1073.88/s (n=5000)
ovid: 7 wallclock secs ( 7.10 usr + 0.00 sys = 7.10 CPU) @ 704.13/s (n=5000)

@result1 = map{join '',@$_[0..4,6,8]} sort{ $a->[8] cmp $b->[8] || ($b->[7] eq '' ? 0 : $b->[7]) <=> ($a->[7] eq '' ? 0 : $a->[7] +) # didn't manage to eliminate this without warnings || $a->[0] <=> $b->[0] || $a->[1] cmp $b->[1] || $a->[2] <=> $b->[2] || $a->[5] <=> $b->[5] || $a->[3] cmp $b->[3] } map {[m/(\d+)(\D+)(\d+)(\D*)(R(\d+))(B?(\d*))(\.\w+)\s*$/] } <DATA +>;

mkmcconn
corrected order

Replies are listed 'Best First'.
Re: Re: complex sort
by Anonymous Monk on Dec 25, 2001 at 06:52 UTC

    You simplify the second sort condition from using ?: to using ||:

    # this: ($b->[7] eq '' ? 0 : $b->[7]) <=> ($a->[7] eq '' ? 0 : $a->[7] # to this: ($b->[7]||0) <=> ($a->[7]||0)

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://134257]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others avoiding work at the Monastery: (9)
As of 2024-04-23 17:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found