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

Re: Selectively iterate through an array

by kennethk (Abbot)
on Mar 14, 2013 at 15:57 UTC ( #1023495=note: print w/ replies, xml ) Need Help??

in reply to Selectively iterate through an array

As with nearly everything in Perl, the answer is a hash. Specifically, a hash of arrays constructed from your colon-separated data set.

my @input = qw(0:6 0:12 0:18 0:24 6:12 6:18 6:24 12:18 12:24 18:24); my %link; for (@input) { my ($key, $value) = split /:/; push @{$link{$key}}, $value; }
which gives
$VAR1 = { '6' => [ '12', '18', '24' ], '18' => [ '24' ], '0' => [ '6', '12', '18', '24' ], '12' => [ '18', '24' ] };

You then just need to connect the dots, which I'd probably implement with a recursive subroutine.

Note that the confusion about the start and end definition of your chains likely comes from the fact that, in your example, you seem to use all possible values for starts, but only 24 as an end.

#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.

Comment on Re: Selectively iterate through an array
Select or Download Code

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (4)
As of 2015-11-28 20:23 GMT
Find Nodes?
    Voting Booth?

    What would be the most significant thing to happen if a rope (or wire) tied the Earth and the Moon together?

    Results (744 votes), past polls