diff options
| author | Julien Fiegehenn <simbabque@cpan.org> | 2022-05-03 13:57:16 +0100 |
|---|---|---|
| committer | Julien Fiegehenn <simbabque@cpan.org> | 2022-05-03 13:57:16 +0100 |
| commit | 8121c26c516c3269721a80e04974c7a95f97cea2 (patch) | |
| tree | 2960c30e01d76f379bf59b7b8ad7d6f1a42ececa | |
| parent | b13444bb5307ad7c7051ace6031dd063bac3cc32 (diff) | |
| download | perlweeklychallenge-club-8121c26c516c3269721a80e04974c7a95f97cea2.tar.gz perlweeklychallenge-club-8121c26c516c3269721a80e04974c7a95f97cea2.tar.bz2 perlweeklychallenge-club-8121c26c516c3269721a80e04974c7a95f97cea2.zip | |
challenge 163, task 1 in Perl
| -rw-r--r-- | challenge-163/julien-fiegehenn/perl/ch-1.pl | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/challenge-163/julien-fiegehenn/perl/ch-1.pl b/challenge-163/julien-fiegehenn/perl/ch-1.pl new file mode 100644 index 0000000000..069f671c26 --- /dev/null +++ b/challenge-163/julien-fiegehenn/perl/ch-1.pl @@ -0,0 +1,35 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use List::Util 'sum0'; + +# Task 1: Sum Bitwise Operator + +# You are given list positive numbers, @n. +# Write script to calculate the sum of bitwise & operator for all unique pairs. + +# Input: @n = (1, 2, 3) +# Output: 3 +# +# Since (1 & 2) + (2 & 3) + (1 & 3) => 0 + 2 + 1 => 3. + +sub sum_bitwise { + my @num = @_; + + my %seen; + return sum0 map { + my $first = $_; + map { + $first == $_ ? 0 + : $seen{ sprintf '%d_%d', sort $first, $_ }++ ? 0 + : ( $first & $_ ) + } @num; + } @num; +} + +use Test::More; + +is sum_bitwise( 1, 2, 3 ), 3; +is sum_bitwise( 2, 3, 4 ), 2; + +done_testing; |
