diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-10-21 17:57:27 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-21 17:57:27 +0100 |
| commit | 50a971c8703f30c89895b3f390e12fa24410daba (patch) | |
| tree | f6c18ae83ac5a1f69b8d05ff6397477e5ebb5866 | |
| parent | 933084f1a22e821bd982b1df091cd61f0efc8341 (diff) | |
| parent | 7cc542ed1fff1966b80b9436d9cf160bbd017dca (diff) | |
| download | perlweeklychallenge-club-50a971c8703f30c89895b3f390e12fa24410daba.tar.gz perlweeklychallenge-club-50a971c8703f30c89895b3f390e12fa24410daba.tar.bz2 perlweeklychallenge-club-50a971c8703f30c89895b3f390e12fa24410daba.zip | |
Merge pull request #5064 from lancew/week-135
Solution to Week 135, task 1, Perl.
| -rw-r--r-- | challenge-135/lance-wicks/perl/lib/Digit.pm | 22 | ||||
| -rwxr-xr-x | challenge-135/lance-wicks/perl/middle_digit | 7 | ||||
| -rw-r--r-- | challenge-135/lance-wicks/perl/t/01-digit.t | 24 |
3 files changed, 53 insertions, 0 deletions
diff --git a/challenge-135/lance-wicks/perl/lib/Digit.pm b/challenge-135/lance-wicks/perl/lib/Digit.pm new file mode 100644 index 0000000000..3e6c5d29b8 --- /dev/null +++ b/challenge-135/lance-wicks/perl/lib/Digit.pm @@ -0,0 +1,22 @@ +package Digit; + +#use Moo; + +use strict; +use warnings; + +sub middle { + my ( $self, $integer ) = @_; + + $integer = abs( $integer || 0 ); + + return 'Too short' if length $integer < 3; + return 'Even number of digits' if !( $integer % 2 ); + + my @digits = split '', $integer; + + my $start = ( ( ( length $integer ) - 1 ) / 2 ) - 1; + return join '', @digits[ $start .. $start + 2 ]; +} + +1; diff --git a/challenge-135/lance-wicks/perl/middle_digit b/challenge-135/lance-wicks/perl/middle_digit new file mode 100755 index 0000000000..3396d0ac8e --- /dev/null +++ b/challenge-135/lance-wicks/perl/middle_digit @@ -0,0 +1,7 @@ +#!/usr/bin/perl + +use lib './lib'; +use Digit; + +print Digit::middle( undef, $ARGV[0] ); +print; diff --git a/challenge-135/lance-wicks/perl/t/01-digit.t b/challenge-135/lance-wicks/perl/t/01-digit.t new file mode 100644 index 0000000000..650ca0e98a --- /dev/null +++ b/challenge-135/lance-wicks/perl/t/01-digit.t @@ -0,0 +1,24 @@ +use Test2::V0 -target => 'Digit'; + +subtest 'Examples' => sub { + is $CLASS->middle(1234567), 345; + is $CLASS->middle(123), 123; + is $CLASS->middle(-123), 123; +}; + +subtest 'Expected too short failures' => sub { + is $CLASS->middle(), 'Too short', 'We need at least 3 digits'; + is $CLASS->middle(1), 'Too short', 'We need at least 3 digits'; + is $CLASS->middle(12), 'Too short', 'We need at least 3 digits'; +}; + +subtest 'Expected even number faulures' => sub { + is $CLASS->middle(1234), + 'Even number of digits', + 'Even number fails as expected'; + is $CLASS->middle(1234567890), + 'Even number of digits', + 'Even number fails as expected'; +}; + +done_testing; |
