aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-120/lance-wicks/perl/lib/Bits.pm20
-rw-r--r--challenge-120/lance-wicks/perl/t/01-bits.t12
2 files changed, 32 insertions, 0 deletions
diff --git a/challenge-120/lance-wicks/perl/lib/Bits.pm b/challenge-120/lance-wicks/perl/lib/Bits.pm
new file mode 100644
index 0000000000..27a272d6cc
--- /dev/null
+++ b/challenge-120/lance-wicks/perl/lib/Bits.pm
@@ -0,0 +1,20 @@
+package Bits;
+
+use Moo;
+
+sub swap {
+ my ($self,$n) = @_;
+
+ my $binary = sprintf("%08b",$n);
+ my $reversed_binary;
+ my @bits = $binary =~ /(\d{2})/g;
+ for (@bits ) {
+ my $rev = reverse $_;
+ $reversed_binary .= $rev
+ }
+
+
+ return oct "0b$reversed_binary";
+}
+
+1;
diff --git a/challenge-120/lance-wicks/perl/t/01-bits.t b/challenge-120/lance-wicks/perl/t/01-bits.t
new file mode 100644
index 0000000000..e2bc3e9414
--- /dev/null
+++ b/challenge-120/lance-wicks/perl/t/01-bits.t
@@ -0,0 +1,12 @@
+use Test2::V0 -target => 'Bits';
+
+subtest 'Example 1' => sub {
+ is $CLASS->swap(101),154,'101 returns 154';
+ note "Binary rep of 101 is '01100101' swapped is '10011010' -> 154 in decimal";
+};
+
+subtest 'Example 2' => sub {
+ is $CLASS->swap(18),33,'18 returns 33';
+ note "Binary rep of 18 is '00010010' swapped is '00100001' -> 33 in decimal";
+};
+done_testing;