diff options
Diffstat (limited to 'challenge-059/javier-luque/perl/ch-2.pl')
| -rw-r--r-- | challenge-059/javier-luque/perl/ch-2.pl | 32 |
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; +} |
