Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re: optimal way of comparing 2 arrays

by blazar (Canon)
on Oct 20, 2005 at 10:13 UTC ( [id://501593]=note: print w/replies, xml ) Need Help??


in reply to optimal way of comparing 2 arrays

Oh, I don't know about optimization but I would probably do something like
#!/usr/bin/perl -l use strict; use warnings; my @file1=qw/foo bar baz/; my @file2=qw/fred bar barney/; my %saw; $saw{$_}=1 for @file1; $saw{$_}.=2 for @file2; my %comm; push @{ $comm{$saw{$_}} }, $_ for keys %saw; print <<"EOT" \@file1 only: (@{ $comm{1} }) \@file2 only: (@{ $comm{2} }) common: (@{ $comm{12} }) EOT __END__
But you didn't tell us whether order does matter and if your arrays contain duplicates and if you also want them in the output and so on, so YMMV...

Replies are listed 'Best First'.
Re^2: optimal way of comparing 2 arrays
by narashima (Beadle) on Oct 20, 2005 at 13:51 UTC
    Hi Blazar,
    No duplicates in these arrays. All values are unique.
    thanks
    narashima
      Then the solution above may be simplified to:
      #!/usr/bin/perl -l use strict; use warnings; my @file1=qw/foo bar baz/; my @file2=qw/fred bar barney/; my %saw; $saw{$_}++ for @file1, @file2; print <<"EOT" \@file1 only: (@{[ grep $saw{$_}==1, @file1 ]}) \@file2 only: (@{[ grep $saw{$_}==1, @file2 ]}) common: (@{[ grep $saw{$_}==2, @file2 ]}) EOT __END__
      or even, using modulo-2 math, but more obscurely:
      #!/usr/bin/perl -l use strict; use warnings; my @file1=qw/foo bar baz/; my @file2=qw/fred bar barney/; my %saw; $saw{$_} ^= 1 for @file1, @file2; print <<"EOT" \@file1 only: (@{[ grep $saw{$_}, @file1 ]}) \@file2 only: (@{[ grep $saw{$_}, @file2 ]}) common: (@{[ grep !$saw{$_}, @file2 ]}) EOT __END__

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others exploiting the Monastery: (5)
As of 2024-03-28 19:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found