diff options
| author | Niels van Dijke <perlboy@cpan.org> | 2021-07-12 12:37:50 +0000 |
|---|---|---|
| committer | Niels van Dijke <perlboy@cpan.org> | 2021-07-12 12:37:50 +0000 |
| commit | 5ecd146deeffbad7fce1a07918da4b5c140fd05d (patch) | |
| tree | 916a4a4f9aae8b4bfc4cb366b603489e9ccf36fc | |
| parent | 1aa7b6eaba2a58fc1ef0612373e3aed6b61f345d (diff) | |
| download | perlweeklychallenge-club-5ecd146deeffbad7fce1a07918da4b5c140fd05d.tar.gz perlweeklychallenge-club-5ecd146deeffbad7fce1a07918da4b5c140fd05d.tar.bz2 perlweeklychallenge-club-5ecd146deeffbad7fce1a07918da4b5c140fd05d.zip | |
Task 1
| -rwxr-xr-x | challenge-121/perlboy1967/perl/ch-1.pl | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/challenge-121/perlboy1967/perl/ch-1.pl b/challenge-121/perlboy1967/perl/ch-1.pl new file mode 100755 index 0000000000..8ac1ad92bf --- /dev/null +++ b/challenge-121/perlboy1967/perl/ch-1.pl @@ -0,0 +1,38 @@ +#!/usr/bin/perl + +# Perl Weekly Challenge - 121 +# - https://perlweeklychallenge.org/blog/perl-weekly-challenge-121/#TASK1 +# +# Task 1 - Invert Bit +# +# Author: Niels 'PerlBoy' van Dijke + +use v5.16; +use strict; +use warnings; + +use Test::More; + +# Prototype(s) +sub invertBit($$); + +my $tests = [ + [ 12, 3, 8], + [ 18, 4, 26], + [ 0b10101010, 5, 0b10111010 ], +]; + +foreach my $t (@$tests) { + printf "%s\n", join(',', @$t) unless is(invertBit($t->[0],$t->[1]), $t->[2]); + print "------------\n"; +} + +done_testing(); + +sub invertBit($$) { + my ($m,$n) = @_; + + # upper part + modified bit + lower part + return (((($m >> $n) << 1 ) + ((($m >> ($n - 1)) & 1 ) ^ 1)) << ($n - 1)) + + ($m & (0xff >> (8 - $n + 1))); +} |
