Beefy Boxes and Bandwidth Generously Provided by pair Networks Cowboy Neal with Hat
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: Duplicate Element in an Array

by johngg (Abbot)
on Aug 21, 2012 at 23:56 UTC ( #988902=note: print w/ replies, xml ) Need Help??


in reply to Duplicate Element in an Array

It is not clear how you arrive at your expected output. Your group one is clear enough but I can't see the logic of how you arrive at your groups two, three and four. Perhaps you could explain further how you are separating the items. Here is a possible solution that builds an AoA by forming arrays of unique and duplicate items then recursively acting on the duplicates until none are left. It does not arrive at the same group members you show. The code.

use strict; use warnings; use Data::Dumper; my @input = qw{ 1200 1300 1200 1000 1100 1200 1500 1700 2000 2100 3000 2100 1200 1500 1700 1700 }; my @groups = deDup( \ @input ); print Data::Dumper->Dumpxs( [ \ @groups ], [ qw{ *groups } ] ); sub deDup { my $raToCheck = shift; my $raUniq = []; my $raDups = []; my %seen; push @{ $seen{ $_ } ++ ? $raDups : $raUniq }, $_ for @$raToCheck; return $raUniq, @$raDups ? deDup( $raDups ) : (); }

The output.

@groups = ( [ '1200', '1300', '1000', '1100', '1500', '1700', '2000', '2100', '3000' ], [ '1200', '2100', '1500', '1700' ], [ '1200', '1700' ], [ '1200' ] );

I hope this is helpful.

Cheers,

JohnGG


Comment on Re: Duplicate Element in an Array
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (13)
As of 2014-04-23 22:37 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (556 votes), past polls