The stupid question is the question not asked PerlMonks

### Re: complex sort

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

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)

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? | Other CB clients
Other Users?
Others exploiting the Monastery: (2)
As of 2023-04-02 08:49 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?

No recent polls found

Notices?