aboutsummaryrefslogtreecommitdiff
path: root/challenge-059
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-059')
-rw-r--r--challenge-059/cheok-yin-fung/perl/ch-2.pl31
1 files changed, 31 insertions, 0 deletions
diff --git a/challenge-059/cheok-yin-fung/perl/ch-2.pl b/challenge-059/cheok-yin-fung/perl/ch-2.pl
new file mode 100644
index 0000000000..420c20d172
--- /dev/null
+++ b/challenge-059/cheok-yin-fung/perl/ch-2.pl
@@ -0,0 +1,31 @@
+#!/usr/bin/perl
+use strict;
+use Test::Simple tests => 2;
+use List::Util qw/max sum/;
+
+#reference: https://www.tutorialspoint.com/perl/bitwise_operators_example.htm
+
+
+sub f { # compare two bit-strings by xor
+ my $hint = ($_[0] ^ $_[1]) ;
+ my $ans = sum (split //, sprintf("%b", $hint));
+ return $ans;
+}
+
+# first parameter: number of terms; remaining: terms in the list
+sub conclude {
+ my ($N, @val) = @_;
+ my $sum = 0;
+ for my $i (0..$N-2) {
+ for my $j ($i+1..$N-1) {
+ $sum += f($val[$i], $val[$j]);
+ }
+ }
+ return $sum;
+}
+
+
+ok (conclude(3,2,3,4) == 6), "bad";
+ok (conclude(2,1,3)==1), "too bad";
+
+