Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re^2: Sorting an array on two computed fields

by jesuashok (Curate)
on Dec 16, 2005 at 10:35 UTC ( #517201=note: print w/replies, xml ) Need Help??


in reply to Re: Sorting an array on two computed fields
in thread Sorting an array on two computed fields

sorry for changing the requirement again what will happen if the array contains as follows:-
my @array = ( '1-1', '6', '2-5', '1-10', '7', '1-3','2-1');
"Keep pouring your ideas"

Replies are listed 'Best First'.
Re^3: Sorting an array on two computed fields
by davido (Cardinal) on Dec 16, 2005 at 10:41 UTC

    ...expanding on my version "without Schwartzian Transform":

    my @sorted = sort { my @a = split /-/, $a; my @b = split /-/, $b; $a[0] <=> $b[0] or ( defined( $a[1] ) && defined( $b[1] ) and $a[1] <=> $b[1] ) } @unsorted;

    As before, the worst part is figuring out how to tab the whole thing to keep it readable. ;) You need the defined test so that fall-through doesn't occur on single-term items.

    Update: Hmm, there is a problem here though. You didn't define whether "6" should come before, after, or between "6-0" and "6-10". My solution didn't define it either, which means that the definition of the problem is inadequate, and that the solution is equally inadequate. But the point to all this is that you can hand-craft your sort routine. ...just think through what you want it to do, and craft your code. I need to get some sleep, so I'll leave you in the capable hands of the rest of the PerlMonks. :) You can do it, really. Dig in and let us know when you get stuck.


    Dave

Re^3: Sorting an array on two computed fields
by blazar (Canon) on Dec 16, 2005 at 10:57 UTC
    sorry for changing the requirement again what will happen if the array contains as follows:
    my @array = ( '1-1', '6', '2-5', '1-10', '7', '1-3','2-1');
    Well, then it depends on how you want '6' to compare to the other entries. If it's the ehm natural one, then again Sort::Naturally should be appropriate!

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (4)
As of 2022-05-17 21:33 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Do you prefer to work remotely?



    Results (68 votes). Check out past polls.

    Notices?