Your skill will accomplishwhat the force of many cannot PerlMonks

### Re: to find inter connected items

by remiah (Hermit)
 on Nov 05, 2012 at 11:27 UTC ( #1002310=note: print w/replies, xml ) Need Help??

in reply to to find inter connected items

Hello.

With hash of hash, for looking ups.

```#!/usr/bin/perl
use strict; use warnings; use Data::Dumper;
my @a=(1,1,2,3,4,4,8,8);
my @b=(3,4,3,5,6,7,9,10);
my \$hoh={};

for ( 0 .. \$#a){
\$hoh->{\$a[\$_]}->{\$b[\$_]}++;
\$hoh->{\$b[\$_]}->{\$a[\$_]}++;
}
sub recursive {
my (\$hoh, \$key, \$path, @vals) =@_;
for ( grep { \$_ ne \$key } @vals){
next if exists(\$path->{\$_});
\$hoh->{\$key}->{\$_}++;
\$path->{\$_}++;
recursive(\$hoh, \$key, \$path, keys %{\$hoh->{\$_}} );
}
}
for (sort {\$a <=> \$b}keys %\$hoh){
recursive(\$hoh, \$_, {}, keys %{\$hoh->{\$_}} );
}

#print Dumper \$hoh;
for (sort {\$a <=> \$b}keys %\$hoh){
print "\$_=" , join(",", keys %{\$hoh->{\$_}}), "\n";
}

__DATA__
this prints ...
1=6,4,3,7,2,5
2=6,4,1,3,7,5
3=6,4,1,7,2,5
4=6,1,3,7,2,5
5=6,1,4,3,7,2
6=1,4,3,7,2,5
7=6,1,4,3,2,5
8=10,9
9=8,10
10=8,9
And as BillKSmith points out, if you take this as a graph,
```#!/usr/bin/perl
#with graph
use strict; use warnings; use Data::Dumper;
use Graph;
my \$g =Graph::Undirected->new;

my @a=(1,1,2,3,4,4,8,8);
my @b=(3,4,3,5,6,7,9,10);

for ( 0 .. \$#a){
}
print Dumper \$g->connected_components;
__DATA__
this prints ...\$VAR1 = [
9,
8,
10
];
\$VAR2 = [
6,
4,
1,
3,
2,
5,
7
];
regards.

Create A New User
Node Status?
node history
Node Type: note [id://1002310]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (6)
As of 2017-08-23 22:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
Who is your favorite scientist and why?

Results (360 votes). Check out past polls.

Notices?