Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Problem with HOA.

by tamaguchi (Pilgrim)
on Aug 28, 2006 at 07:03 UTC ( #569938=perlquestion: print w/ replies, xml ) Need Help??
tamaguchi has asked for the wisdom of the Perl Monks concerning the following question:

Suppose you have following data stucture:
my %hash=( 1=> [1.5, 2.1, 3.1], 2=> [1.2, 2.2, 3.2], 3=> [1.3, 2.3, 3.3], )
How would you do in the easiest way to get out an array consisting of the first ellement in each of the internal valuearrays sorted by the keys? I.e. $array[0]=1.5,  $array[1]=1.2 and $array[2]=1.3. Thank you fellow monk.

Comment on Problem with HOA.
Select or Download Code
Re: Problem with HOA.
by cog (Parson) on Aug 28, 2006 at 07:10 UTC
    my @array = map { $hash{$_}->[0] } sort { $a <=> $b } keys %hash;

    That's the first solution that comes to my mind. Try reading it backwards:

      1. Take the keys of the hash... (keys %hash)
      2. ...sort them numerically... (sort { $a <=> $b } ...)
      3. ...and get the first element of the array corresponding to each key in the hash... (map { $hash{$_}->[0] } ...)
Re: Problem with HOA.
by GrandFather (Cardinal) on Aug 28, 2006 at 07:13 UTC

    Update wrong answer. cog has it right.

    use strict; use warnings; my %hash=( 1=> [1.5, 2.1, 3.1], 2=> [1.2, 2.2, 3.2], 3=> [1.3, 2.3, 3.3], ); my @array = sort {$a<=> $b} map {@{$hash{$_}}} keys %hash; print "@array";

    Prints:

    1.2 1.3 1.5 2.1 2.2 2.3 3.1 3.2 3.3

    DWIM is Perl's answer to Gödel

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://569938]
Approved by GrandFather
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (6)
As of 2014-10-21 06:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (97 votes), past polls