aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Fiegehenn <simbabque@cpan.org>2022-05-03 13:57:16 +0100
committerJulien Fiegehenn <simbabque@cpan.org>2022-05-03 13:57:16 +0100
commit8121c26c516c3269721a80e04974c7a95f97cea2 (patch)
tree2960c30e01d76f379bf59b7b8ad7d6f1a42ececa
parentb13444bb5307ad7c7051ace6031dd063bac3cc32 (diff)
downloadperlweeklychallenge-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.pl35
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;