diff options
| author | chirvasitua <stuart-little@users.noreply.github.com> | 2021-05-24 10:48:20 -0400 |
|---|---|---|
| committer | chirvasitua <stuart-little@users.noreply.github.com> | 2021-05-24 20:18:32 -0400 |
| commit | b392116fb6b3e4baba1ceb05bafe7385027c561a (patch) | |
| tree | a6a45f08c84dc1e277b84386106cde5124c7c9e7 | |
| parent | a2dcbbbcc3a246b0136e40aee20170a021f0b573 (diff) | |
| download | perlweeklychallenge-club-b392116fb6b3e4baba1ceb05bafe7385027c561a.tar.gz perlweeklychallenge-club-b392116fb6b3e4baba1ceb05bafe7385027c561a.tar.bz2 perlweeklychallenge-club-b392116fb6b3e4baba1ceb05bafe7385027c561a.zip | |
1st commit on 114_perl
| -rwxr-xr-x | challenge-114/stuart-little/perl/ch-1.pl | 25 | ||||
| -rwxr-xr-x | challenge-114/stuart-little/perl/ch-2.pl | 12 |
2 files changed, 37 insertions, 0 deletions
diff --git a/challenge-114/stuart-little/perl/ch-1.pl b/challenge-114/stuart-little/perl/ch-1.pl new file mode 100755 index 0000000000..7cbd81a826 --- /dev/null +++ b/challenge-114/stuart-little/perl/ch-1.pl @@ -0,0 +1,25 @@ +#!/usr/bin/env perl +use warnings; +use v5.12; + +# run <script> <number> + +use feature qw(signatures); +no warnings qw(experimental::signatures); + +use POSIX qw(ceil); + +($ARGV[0] =~ /^9+$/) && do { + say $ARGV[0]+2; + exit; +}; + +my $nrDig = length $ARGV[0]; + +sub doubleUp($nrDig,$initHalf) { + return $initHalf . (($nrDig % 2) ? (scalar reverse substr($initHalf, 0,-1)) : (scalar reverse $initHalf)) +} + +my $initHalf = substr($ARGV[0], 0, ceil($nrDig/2)); + +say((int(doubleUp($nrDig,$initHalf)) > int($ARGV[0])) ? (doubleUp($nrDig,$initHalf)) : (doubleUp($nrDig,$initHalf+1))); diff --git a/challenge-114/stuart-little/perl/ch-2.pl b/challenge-114/stuart-little/perl/ch-2.pl new file mode 100755 index 0000000000..43392a6c76 --- /dev/null +++ b/challenge-114/stuart-little/perl/ch-2.pl @@ -0,0 +1,12 @@ +#!/usr/bin/env perl +use warnings; +use v5.12; + +# run <script> <number> + +use feature qw(signatures); +no warnings qw(experimental::signatures); + +say "Initial number in base two: ", my $binNr = sprintf("0%b", $ARGV[0]); +say "Next number in base two: ", my $next = (($ARGV[0] % 2) ? ($binNr =~ s!01(1*)$!10$1!r) : ($binNr =~ s!01(1*)(0*)$!10$2$1!r)); +say "Next number in base ten: ", eval qq!0b$next!; |
