diff options
| author | Luis Mochan <mochan@fis.unam.mx> | 2021-03-29 13:54:40 -0600 |
|---|---|---|
| committer | Luis Mochan <mochan@fis.unam.mx> | 2021-03-29 13:54:40 -0600 |
| commit | b8772e3e6d598bb9b50c2be200c5531dee606fe3 (patch) | |
| tree | a17e668c36d338b21f391b4e4a644c1ba7cb5229 | |
| parent | 0beed338bde9c2ee3c13c79878d4225103c346e8 (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-106/wlmb/perl/ch-1.pl | 14 | ||||
| -rwxr-xr-x | challenge-106/wlmb/perl/ch-2.pl | 30 |
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"; |
