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

Re: How to make buckets of like data

by BrowserUk (Pope)
on Feb 05, 2013 at 20:07 UTC ( #1017269=note: print w/ replies, xml ) Need Help??

in reply to How to make buckets of like data

Am I missing something simple here?

I don't believe you can do it in one pass. This works, but might be simplified?:

#! perl -slw use strict; use Data::Dump qw[ pp ]; my @array = (['A','B'],['C','D'],['A','C'],['E','F'],['F','G']); my %h; for( @array ) { my( $x, $y ) = @$_; $h{ $x }{ $y } = 1; $h{ $y }{ $x } = 1; } OUTER: for my $x ( reverse sort keys %h ) { for my $y ( reverse sort keys %h ) { next if $x eq $y; if( exists $h{ $y }{ $x } ) { $h{ $y }{ $_ } = 1 for keys %{ $h{ $x } }; delete $h{ $x }; next OUTER; } } } my @buckets = map[ sort keys %{ $h{ $_ } } ], keys %h; pp \@buckets; __END__ C:\test>1017261 [["A", "B", "C", "D"], ["E", "F", "G"]]

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
Comment on Re: How to make buckets of like data
Download Code

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (2)
As of 2016-05-28 15:26 GMT
Find Nodes?
    Voting Booth?