aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-05-25 15:47:40 +0100
committerGitHub <noreply@github.com>2021-05-25 15:47:40 +0100
commita66937a36137dc72df05ed3222c1971954285f7d (patch)
tree6adba7e0e685b92cc46ee996e672bafe888a8ddd
parentb3cdcf2df7ddf535404a2728838eb98697790db1 (diff)
parentb392116fb6b3e4baba1ceb05bafe7385027c561a (diff)
downloadperlweeklychallenge-club-a66937a36137dc72df05ed3222c1971954285f7d.tar.gz
perlweeklychallenge-club-a66937a36137dc72df05ed3222c1971954285f7d.tar.bz2
perlweeklychallenge-club-a66937a36137dc72df05ed3222c1971954285f7d.zip
Merge pull request #4137 from stuart-little/stuart-little_114_perl
1st commit on 114_perl
-rwxr-xr-xchallenge-114/stuart-little/perl/ch-1.pl25
-rwxr-xr-xchallenge-114/stuart-little/perl/ch-2.pl12
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!;