Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

Re: Sorting large sets of geometric coordinates

by ikegami (Pope)
on Apr 19, 2006 at 20:55 UTC ( #544436=note: print w/replies, xml ) Need Help??

in reply to Sorting large sets of geometric coordinates

A hash isn't appropriate, because nothing is guaranteed to be unique (as far as you've let on). You also ask to sort, and hashes are unordered.

my @unsorted_data; while (<DATA>) { my @fields = /([\d.]+)/g or next; push(@unsorted_data, \@fields); } my @sorted_data = sort { $a->[1] <=> $b->[1] || $a->[0] <=> $b->[0] } @unsorted_data; print("(($_->[0] $_->[1]) ($_->[2] $_->[3]))\n") foreach @sorted_data;

Update: Tested. Fixed the print.

Update: Fixed the error discussed below.

Replies are listed 'Best First'.
Re^2: Sorting large sets of geometric coordinates
by thor (Priest) on Apr 20, 2006 at 02:43 UTC
    my @sorted_data = sort { $a->[1] <=> $b->[1] || $a->[0] <=> $a->[0] } @unsorted_data;
    Wouldn't the second part of that sort be a no-op?


    The only easy day was yesterday

      It handles ties in $row_ly. <=> returns 0 if the two things it compares are equal. For example, if the compare function were to be called to compare the following two rows,
      ((5.0 0.4) (48.0 0.5)) ((48.1 0.4) (99.0 0.5))
      The first <=> would return 0 since $a->[1] (0.4) and $b->[1] (0.4) are both equal. It would then go on to compare $a->[0] (5.0) with $b->[0] (48.1)

      Update: OOPS! Copy and paste error. The code should read:

      my @sorted_data = sort { $a->[1] <=> $b->[1] || $a->[0] <=> $b->[0] } @unsorted_data;

      Nod to BrowserUk for the head's up.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://544436]
[arunks]: do you have any sample code .please share it. am looking for before opening excel file prompt should ask for password to open the excel file.
[marto]: which part don't you know how to do?
[marto]: oh
[Corion]: arunks: Maybe How do I make password prompts not echo back the user?? Or simply read it from STDIN.

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (7)
As of 2017-01-20 14:20 GMT
Find Nodes?
    Voting Booth?
    Do you watch meteor showers?

    Results (174 votes). Check out past polls.