diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2021-07-14 20:05:39 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2021-07-14 20:05:39 +0100 |
| commit | a4238e8cc76d7a19d69fac649fd2debff35163c3 (patch) | |
| tree | 850daa8eb9f2be5850b82a01070be4d1a5523c59 /challenge-121/mohammad-anwar | |
| parent | 98e16dff8cf9594c4d7697b2daee90ed9e7ec78c (diff) | |
| download | perlweeklychallenge-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.pl | 24 |
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; |
