aboutsummaryrefslogtreecommitdiff
path: root/challenge-079/mohammad-anwar
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-09-22 00:39:38 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-09-22 00:39:38 +0100
commit3c6bacdb27568a0b3708e032c79f80b6999b02b9 (patch)
treeb303dc53f9b4783c68a23ae01ddfb6a59860a39b /challenge-079/mohammad-anwar
parentd6ee3a6749c2fe6f837ff4021e559cde8b34a0f6 (diff)
downloadperlweeklychallenge-club-3c6bacdb27568a0b3708e032c79f80b6999b02b9.tar.gz
perlweeklychallenge-club-3c6bacdb27568a0b3708e032c79f80b6999b02b9.tar.bz2
perlweeklychallenge-club-3c6bacdb27568a0b3708e032c79f80b6999b02b9.zip
- Added Perl solution to "Count Set Bits" task.
Diffstat (limited to 'challenge-079/mohammad-anwar')
-rw-r--r--challenge-079/mohammad-anwar/perl/ch-1.pl26
-rw-r--r--challenge-079/mohammad-anwar/perl/ch-1.t28
2 files changed, 54 insertions, 0 deletions
diff --git a/challenge-079/mohammad-anwar/perl/ch-1.pl b/challenge-079/mohammad-anwar/perl/ch-1.pl
new file mode 100644
index 0000000000..6a55765dbd
--- /dev/null
+++ b/challenge-079/mohammad-anwar/perl/ch-1.pl
@@ -0,0 +1,26 @@
+#!/usr/bin/perl
+
+#
+# Perl Weekly Challenge - 079
+#
+# Task #1: Count Set Bits
+#
+# https://perlweeklychallenge.org/blog/perl-weekly-challenge-079
+#
+
+use strict;
+use warnings;
+
+my $N = $ARGV[0] || 4;
+die "ERROR: Invalid number [$N].\n" unless ($N =~ /^\d+$/);
+print count_set_bits($N), "\n";
+
+#
+#
+# SUBROUTINE
+
+sub count_set_bits {
+ my $c = 0;
+ $c += (sprintf "%b", $_) =~ tr/1/1/ for 1..shift;
+ return $c % 1000000007;
+}
diff --git a/challenge-079/mohammad-anwar/perl/ch-1.t b/challenge-079/mohammad-anwar/perl/ch-1.t
new file mode 100644
index 0000000000..716107df6b
--- /dev/null
+++ b/challenge-079/mohammad-anwar/perl/ch-1.t
@@ -0,0 +1,28 @@
+#!/usr/bin/perl
+
+#
+# Perl Weekly Challenge - 079
+#
+# Task #1: Count Set Bits
+#
+# https://perlweeklychallenge.org/blog/perl-weekly-challenge-079
+#
+
+use strict;
+use warnings;
+use Test::More;
+
+is(count_set_bits(4), 5, "testing example 1");
+is(count_set_bits(3), 4, "testing example 2");
+
+done_testing;
+
+#
+#
+# SUBROUTINE
+
+sub count_set_bits {
+ my $c = 0;
+ $c += (sprintf "%b", $_) =~ tr/1/1/ for 1..shift;
+ return $c % 1000000007;
+}