Abstracting out the edges and vertices, what I see is going on is, you have a list of lists, and you just want the elements that are unique across the whole thing.
I would do something like:
sub unique_elements { my ( %unique ); # @_ could be large, so I don't want to put the list in memory, or + even put a list of indices into mem like you do with 0 .. $#_ for ( my $i = 0; $i < @_; $i++ ) { # but the inner lists are a small fixed size, so even though t +he sollution is generalized, the inner values I do just stick in a li +st, which I use for a hash slice to autovivify the keys @unique{@{$_[$i]}} = undef; # black magic warning! the first e +lement in the slice is assigned undef, and the rest are autovivfied } return sort keys %unique; }
In reply to Re: More efficient way to get uniq list elements from list of lists
by Aighearach
in thread More efficient way to get uniq list elements from list of lists
by monkfan
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |