aboutsummaryrefslogtreecommitdiff
path: root/challenge-059/javier-luque/perl/ch-2.pl
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-059/javier-luque/perl/ch-2.pl')
-rw-r--r--challenge-059/javier-luque/perl/ch-2.pl32
1 files changed, 32 insertions, 0 deletions
diff --git a/challenge-059/javier-luque/perl/ch-2.pl b/challenge-059/javier-luque/perl/ch-2.pl
new file mode 100644
index 0000000000..c7ea428308
--- /dev/null
+++ b/challenge-059/javier-luque/perl/ch-2.pl
@@ -0,0 +1,32 @@
+#!/usr/bin/perl
+# Test: ./ch-2.pl 2 3 4
+
+use strict;
+use warnings;
+use feature qw /say/;
+use Algorithm::Combinatorics qw /combinations/;
+
+my $answer = 0;
+
+my $combinations = combinations(\@ARGV, 2);
+while (my $v = $combinations->next) {
+ $answer += f(@$v);
+}
+
+say $answer;
+
+sub f {
+ return calculate_true_bits(int(shift) ^ int(shift));
+}
+
+# Calculate the number of true bits
+sub calculate_true_bits {
+ my $number = shift;
+ my $count = 0;
+
+ do {
+ $count++ if ($number & 1);
+ } while ($number = $number >> 1);
+
+ return $count;
+}