aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-114/dave-jacoby/blog.txt1
-rw-r--r--challenge-114/dave-jacoby/perl/ch-1.pl29
-rw-r--r--challenge-114/dave-jacoby/perl/ch-2.pl29
3 files changed, 59 insertions, 0 deletions
diff --git a/challenge-114/dave-jacoby/blog.txt b/challenge-114/dave-jacoby/blog.txt
new file mode 100644
index 0000000000..132dcbeb94
--- /dev/null
+++ b/challenge-114/dave-jacoby/blog.txt
@@ -0,0 +1 @@
+https://jacoby.github.io/2021/05/24/escape-from-the-infinite-loop-perl-weekly-challenge-114.html \ No newline at end of file
diff --git a/challenge-114/dave-jacoby/perl/ch-1.pl b/challenge-114/dave-jacoby/perl/ch-1.pl
new file mode 100644
index 0000000000..83f03e1f47
--- /dev/null
+++ b/challenge-114/dave-jacoby/perl/ch-1.pl
@@ -0,0 +1,29 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use feature qw{ say state postderef signatures };
+no warnings qw{ experimental };
+
+my @list = ( 1234, 999 );
+@list = @ARGV ? @ARGV : @list;
+
+for my $n (@list) {
+ my $p = next_palindrome($n);
+ say <<"END";
+ Input: $n
+ Output: $p
+END
+}
+
+sub next_palindrome ( $n ) {
+ while (1) {
+ $n++;
+ my $r = 0 + reverse_string($n);
+ return $n if $n == $r;
+ }
+}
+
+sub reverse_string ( $s ) {
+ return scalar reverse $s;
+}
diff --git a/challenge-114/dave-jacoby/perl/ch-2.pl b/challenge-114/dave-jacoby/perl/ch-2.pl
new file mode 100644
index 0000000000..ff48b484cc
--- /dev/null
+++ b/challenge-114/dave-jacoby/perl/ch-2.pl
@@ -0,0 +1,29 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use feature qw{ say state postderef signatures };
+no warnings qw{ experimental };
+
+use List::Util qq{sum0};
+
+my @list = ( 12, 3 );
+@list = @ARGV ? @ARGV : @list;
+
+for my $n (@list) {
+ my $h = hisb($n);
+ say <<"END";
+ Input: $n
+ Output: $h
+END
+}
+
+sub hisb ( $n ) {
+ my $m = $n;
+ my $b = sum0 split m{}, sprintf '%b', $m;
+ while (1) {
+ $m++;
+ my $d = sum0 split m{}, sprintf '%b', $m;
+ return $m if $b == $d;
+ }
+}