diff options
| author | Lubos Kolouch <lubos@kolouch.net> | 2021-07-04 17:03:54 +0200 |
|---|---|---|
| committer | Lubos Kolouch <lubos@kolouch.net> | 2021-07-04 17:03:54 +0200 |
| commit | 197f3d02820d9791b4845a3c6ec9e340058f66de (patch) | |
| tree | 94e5033047977bbb251de1b31180b6a8bfe5faf9 | |
| parent | a1fef2c6f72160e3d0e8063948c73ac23eeb70a4 (diff) | |
| download | perlweeklychallenge-club-197f3d02820d9791b4845a3c6ec9e340058f66de.tar.gz perlweeklychallenge-club-197f3d02820d9791b4845a3c6ec9e340058f66de.tar.bz2 perlweeklychallenge-club-197f3d02820d9791b4845a3c6ec9e340058f66de.zip | |
Challenge 119 Task 1 LK Perl
| -rw-r--r-- | challenge-119/lubos-kolouch/perl/ch-1.pl | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/challenge-119/lubos-kolouch/perl/ch-1.pl b/challenge-119/lubos-kolouch/perl/ch-1.pl new file mode 100644 index 0000000000..eeabeb5459 --- /dev/null +++ b/challenge-119/lubos-kolouch/perl/ch-1.pl @@ -0,0 +1,41 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: ch-1.pl +# +# USAGE: ./ch-1.pl +# +# DESCRIPTION: Perl Weekly Challenge #119 +# Task 1 - Swap Nibbles +# +# AUTHOR: Lubos Kolouch +# CREATED: 07/04/2021 04:44:33 PM +#=============================================================================== + +use strict; +use warnings; + +sub bin2dec { + # shamelessly copied from The Perl Cookbook + return unpack("N", pack("B32", substr("0" x 32 . shift, -32))); +} + +sub reverse_nibbles { + my $what = shift; + + my $binary_what = sprintf ("%b",$what); + + my $first_part = sprintf("%04d", substr $binary_what, 0, -4); + my $second_part = sprintf("%04d", substr $binary_what, -4); + + my $reversed_binary = $second_part . $first_part; + return bin2dec($reversed_binary); +} + +use Test::More; + +is(reverse_nibbles(101), 86); +is(reverse_nibbles(18), 33); + +done_testing; + |
