diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-09-22 00:39:38 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-09-22 00:39:38 +0100 |
| commit | 3c6bacdb27568a0b3708e032c79f80b6999b02b9 (patch) | |
| tree | b303dc53f9b4783c68a23ae01ddfb6a59860a39b /challenge-079 | |
| parent | d6ee3a6749c2fe6f837ff4021e559cde8b34a0f6 (diff) | |
| download | perlweeklychallenge-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')
| -rw-r--r-- | challenge-079/mohammad-anwar/perl/ch-1.pl | 26 | ||||
| -rw-r--r-- | challenge-079/mohammad-anwar/perl/ch-1.t | 28 |
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; +} |
