Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: merging two arrays with OR operation

by rsFalse (Hermit)
on Mar 05, 2019 at 22:54 UTC ( #1230935=note: print w/replies, xml ) Need Help??


in reply to merging two arrays with OR operation

Sometimes you may compose a binary representation of number (e.g. '0b010101111111') (docs: perlnumber), eval it, use bitwise op, and return to binary representation using sprintf "%b", with '0${len}' for leading zeroes.
#!/usr/bin/perl -l use strict; use warnings; my @array1 = (0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1); my @array2 = (0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1); my $bits1 = eval '0b' . join '', @array1; my $bits2 = eval '0b' . join '', @array2; my $bitsResult = $bits1 | $bits2; my $len = scalar @array1; my @arrayResult = split //, sprintf "%0${len}b", $bitsResult; print "\$bits1:[$bits1], \$bits2:[$bits2], \$bitsResult:[$bitsResult]" +; print "Result: ", join(", ", @arrayResult), "\n";
OUTPUT:
$bits1:[1407], $bits2:[855], $bitsResult:[1919] Result: 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1

Replies are listed 'Best First'.
Re^2: merging two arrays with OR operation
by rsFalse (Hermit) on Mar 05, 2019 at 23:28 UTC
    Also you may want to look at Bitwise String Operators, and relatively new bitwise operator '|.'.
    Here I use v5.28.0:
    #!/usr/bin/perl -wl use strict; my @array1 = (0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1); my @array2 = (0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1); my $bits1 = join '', @array1; my $bits2 = join '', @array2; print $bits1 | $bits2; use feature 'bitwise'; # from v5.22 print $bits1 | $bits2; print $bits1 |. $bits2; # So... print "Result: ", join ', ', split //, $bits1 |. $bits2;
    OUTPUT:
    011101111111 4294967295 011101111111 Result: 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (4)
As of 2020-01-25 06:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Notices?