From ce7d7127188bec50ce008915a348ffe5765fcada Mon Sep 17 00:00:00 2001 From: Lance Wicks Date: Sat, 3 Jul 2021 16:43:08 +0100 Subject: Simple (unsafe) solution to task 1 --- challenge-119/lance-wicks/perl/ch-1.pl | 13 +++++++++++++ challenge-119/lance-wicks/perl/lib/Nibble.pm | 16 ++++++++++++++++ challenge-119/lance-wicks/perl/t/01-nibble.t | 9 +++++++++ 3 files changed, 38 insertions(+) create mode 100644 challenge-119/lance-wicks/perl/ch-1.pl create mode 100644 challenge-119/lance-wicks/perl/lib/Nibble.pm create mode 100644 challenge-119/lance-wicks/perl/t/01-nibble.t diff --git a/challenge-119/lance-wicks/perl/ch-1.pl b/challenge-119/lance-wicks/perl/ch-1.pl new file mode 100644 index 0000000000..60184364bb --- /dev/null +++ b/challenge-119/lance-wicks/perl/ch-1.pl @@ -0,0 +1,13 @@ +use strict; +use warnings; + +use lib './lib'; +use Nibble; +my $nibble = Nibble->new; + +my $n = $ARGV[0]; +my $res = $nibble->swap($n); + +print "Input \$N = $n\n"; +print "Output: $res\n"; + diff --git a/challenge-119/lance-wicks/perl/lib/Nibble.pm b/challenge-119/lance-wicks/perl/lib/Nibble.pm new file mode 100644 index 0000000000..78d9c851b2 --- /dev/null +++ b/challenge-119/lance-wicks/perl/lib/Nibble.pm @@ -0,0 +1,16 @@ +package Nibble; + +use Moo; + +sub swap { + my ( $self, $n ) = @_; + + my $oct = sprintf( "%08b", $n ); + + $oct =~ /^(.{4})(.{4})$/; + + return oct "0b$2$1"; +} + +1; + diff --git a/challenge-119/lance-wicks/perl/t/01-nibble.t b/challenge-119/lance-wicks/perl/t/01-nibble.t new file mode 100644 index 0000000000..8394f6a3c1 --- /dev/null +++ b/challenge-119/lance-wicks/perl/t/01-nibble.t @@ -0,0 +1,9 @@ +use Test2::V0 -target => 'Nibble'; + +my @tests = ( [ 101, 86 ], [ 18, 33 ] ); + +for (@tests) { + is $CLASS->swap( $_->[0] ), $_->[1], "$_->[0] returns $_->[1]"; +} + +done_testing; -- cgit