diff options
| author | Alexander Pankoff <ccntrq@screenri.de> | 2020-11-01 16:40:16 +0100 |
|---|---|---|
| committer | Alexander Pankoff <ccntrq@screenri.de> | 2020-11-01 19:17:55 +0100 |
| commit | caee33c77cf068b2fec5cb4b957f92e5f8f1d57b (patch) | |
| tree | 54d65293cd883d5351cbca49d9235b842377c2d4 | |
| parent | c5c9b929fec939b0cc52b1dde34eae86df8c7f1a (diff) | |
| download | perlweeklychallenge-club-caee33c77cf068b2fec5cb4b957f92e5f8f1d57b.tar.gz perlweeklychallenge-club-caee33c77cf068b2fec5cb4b957f92e5f8f1d57b.tar.bz2 perlweeklychallenge-club-caee33c77cf068b2fec5cb4b957f92e5f8f1d57b.zip | |
add perl solution for wk-084 ch-1
| -rwxr-xr-x | challenge-084/alexander-pankoff/perl/ch-1.pl | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/challenge-084/alexander-pankoff/perl/ch-1.pl b/challenge-084/alexander-pankoff/perl/ch-1.pl new file mode 100755 index 0000000000..f444938edd --- /dev/null +++ b/challenge-084/alexander-pankoff/perl/ch-1.pl @@ -0,0 +1,62 @@ +#!/usr/bin/env perl +use v5.20; +use utf8; +use strict; +use warnings; +use feature qw(say signatures); +no warnings 'experimental::signatures'; + +use Scalar::Util qw(looks_like_number); + +use Pod::Usage; + +use constant SIGNED_32_BIT_INTEGER_MINIMUM => -2**31; +use constant SIGNED_32_BIT_INTEGER_MAXIMUM => 2**31 - 1; + +my ($N) = @ARGV; + +pod2usage( + -message => "$0: Expects one integer number", + -exitval => 1, + ) + if !defined $N + or $N !~ m/^-?[0-9]+/; + +say reverse_integer($N); + +sub reverse_integer($n) { + my $is_negative = $n =~ s/^-//; + + my $reversed = + join( '', ( $is_negative ? '-' : '' ), reverse( split( //, $n ) ) ); + + return 0 + if $reversed < SIGNED_32_BIT_INTEGER_MINIMUM + || $reversed > SIGNED_32_BIT_INTEGER_MAXIMUM; + + return $reversed; +} + +=pod + +=head1 NAME + +wk-084 ch-1 - Reverse Integer + +=head1 SYNOPSIS + +This script will print the reverse of the given integer. If the result doesn't +fit into a signed 32-bit integers the result will be 0 + +ch-1.pl <N> + +=head1 ARGUMENTS + +=over 8 + +=item B<N> The input number + + +=back + +=cut |
