aboutsummaryrefslogtreecommitdiff
path: root/challenge-121/mohammad-anwar
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2021-07-14 20:05:39 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2021-07-14 20:05:39 +0100
commita4238e8cc76d7a19d69fac649fd2debff35163c3 (patch)
tree850daa8eb9f2be5850b82a01070be4d1a5523c59 /challenge-121/mohammad-anwar
parent98e16dff8cf9594c4d7697b2daee90ed9e7ec78c (diff)
downloadperlweeklychallenge-club-a4238e8cc76d7a19d69fac649fd2debff35163c3.tar.gz
perlweeklychallenge-club-a4238e8cc76d7a19d69fac649fd2debff35163c3.tar.bz2
perlweeklychallenge-club-a4238e8cc76d7a19d69fac649fd2debff35163c3.zip
- Added Perl solution to "Invert Bit" task of week 121.
Diffstat (limited to 'challenge-121/mohammad-anwar')
-rw-r--r--challenge-121/mohammad-anwar/perl/ch-1.pl24
1 files changed, 24 insertions, 0 deletions
diff --git a/challenge-121/mohammad-anwar/perl/ch-1.pl b/challenge-121/mohammad-anwar/perl/ch-1.pl
new file mode 100644
index 0000000000..5dd0e3769c
--- /dev/null
+++ b/challenge-121/mohammad-anwar/perl/ch-1.pl
@@ -0,0 +1,24 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use Test::More;
+
+sub invert_bit {
+ my ($m, $n) = @_;
+
+ die "ERROR: Missing 'm'.\n" unless defined $m;
+ die "ERROR: Invalid m = $m.\n" unless ($m >= 0 && $m <= 255);
+
+ die "ERROR: Missing 'n'.\n" unless defined $n;
+ die "ERROR: Invalid n = $n.\n" unless ($n >= 1 && $n <= 8);
+
+ my @b = split //, sprintf("%08b", $m);
+ $b[-$n] = ($b[-$n])?(0):(1);
+ return oct('0b' . join '', @b);
+}
+
+is(invert_bit(12, 3), 8);
+is(invert_bit(18, 4), 26);
+
+done_testing;