aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuis Mochan <mochan@fis.unam.mx>2021-03-29 13:54:40 -0600
committerLuis Mochan <mochan@fis.unam.mx>2021-03-29 13:54:40 -0600
commitb8772e3e6d598bb9b50c2be200c5531dee606fe3 (patch)
treea17e668c36d338b21f391b4e4a644c1ba7cb5229
parent0beed338bde9c2ee3c13c79878d4225103c346e8 (diff)
downloadperlweeklychallenge-club-b8772e3e6d598bb9b50c2be200c5531dee606fe3.tar.gz
perlweeklychallenge-club-b8772e3e6d598bb9b50c2be200c5531dee606fe3.tar.bz2
perlweeklychallenge-club-b8772e3e6d598bb9b50c2be200c5531dee606fe3.zip
Add solutions to PWC 106
-rw-r--r--challenge-106/wlmb/blog.txt1
-rwxr-xr-xchallenge-106/wlmb/perl/ch-1.pl14
-rwxr-xr-xchallenge-106/wlmb/perl/ch-2.pl30
3 files changed, 45 insertions, 0 deletions
diff --git a/challenge-106/wlmb/blog.txt b/challenge-106/wlmb/blog.txt
new file mode 100644
index 0000000000..51ec92f47a
--- /dev/null
+++ b/challenge-106/wlmb/blog.txt
@@ -0,0 +1 @@
+https://wlmb.github.io/2021/03/29/PWC106/
diff --git a/challenge-106/wlmb/perl/ch-1.pl b/challenge-106/wlmb/perl/ch-1.pl
new file mode 100755
index 0000000000..010d04e9a4
--- /dev/null
+++ b/challenge-106/wlmb/perl/ch-1.pl
@@ -0,0 +1,14 @@
+#!/usr/bin/env perl
+# Perl weekly challenge 106
+# Task 1: Maximum gap
+#
+# See https://wlmb.github.io/2021/03/29/PWC106/#task-1-maximum-gap
+
+use strict;
+use warnings;
+use v5.12;
+use List::Util qw(reduce);
+
+my @sorted=sort {$a<=>$b} @ARGV;
+say +(reduce {$b>$a?$b:$a} map {$sorted[$_+1]-$sorted[$_]} 0..$#sorted-1)//0,
+ join ' ', '<-(', @ARGV, ')',
diff --git a/challenge-106/wlmb/perl/ch-2.pl b/challenge-106/wlmb/perl/ch-2.pl
new file mode 100755
index 0000000000..d87e71816c
--- /dev/null
+++ b/challenge-106/wlmb/perl/ch-2.pl
@@ -0,0 +1,30 @@
+#!/usr/bin/env perl
+# Perl weekly challenge 106
+# Task 2: Decimal String
+#
+# See https://wlmb.github.io/2021/03/29/PWC106/#task-2-decimal-string
+use strict;
+use warnings;
+use v5.12;
+use integer;
+use List::Util qw(all);
+use POSIX qw(floor);
+
+my ($numerator, $denominator)= @ARGV;
+die "Usage: ./ch-2.pl numerator denominator"
+ unless defined $numerator and defined $denominator;
+# I assume positive integer numbers.
+my $integer=$numerator/$denominator;
+my $rest=$numerator%$denominator;
+my %seen;
+my $start=0;
+my @digits;
+while($rest && !defined $seen{$rest}){
+ $seen{$rest}=$start++;
+ push @digits, (10*$rest)/$denominator;
+ $rest=(10*$rest)%$denominator;
+}
+$seen{0}=$start;
+my $result=join '', "$integer.", @digits[0..$seen{$rest}-1];
+$result.=join '', '(', @digits[$seen{$rest}..$#digits], ')' if $rest!=0;
+say "$numerator/$denominator=$result";