diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-10-13 20:19:51 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-13 20:19:51 +0100 |
| commit | aa79dd017d55e62dd7e63da7a75afc4e87a3db21 (patch) | |
| tree | 7634dc99075a1756bb629d8dbcb4179be45ccdf6 | |
| parent | 0818581125ff12f7d178063ce2b930341b4efca7 (diff) | |
| parent | 63acc98ab1b56ef1d28ad4823716179c2431dd3b (diff) | |
| download | perlweeklychallenge-club-aa79dd017d55e62dd7e63da7a75afc4e87a3db21.tar.gz perlweeklychallenge-club-aa79dd017d55e62dd7e63da7a75afc4e87a3db21.tar.bz2 perlweeklychallenge-club-aa79dd017d55e62dd7e63da7a75afc4e87a3db21.zip | |
Merge pull request #2511 from polettix/polettix/pwc082
Add entries for 082/polettix
| -rw-r--r-- | challenge-082/polettix/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-082/polettix/blog1.txt | 1 | ||||
| -rw-r--r-- | challenge-082/polettix/perl/ch-1.pl | 17 | ||||
| -rw-r--r-- | challenge-082/polettix/perl/ch-2.pl | 26 |
4 files changed, 45 insertions, 0 deletions
diff --git a/challenge-082/polettix/blog.txt b/challenge-082/polettix/blog.txt new file mode 100644 index 0000000000..ea17acd2ae --- /dev/null +++ b/challenge-082/polettix/blog.txt @@ -0,0 +1 @@ +https://github.polettix.it/ETOOBUSY/2020/10/13/pwc082-common-factors/ diff --git a/challenge-082/polettix/blog1.txt b/challenge-082/polettix/blog1.txt new file mode 100644 index 0000000000..63c2b2bc4b --- /dev/null +++ b/challenge-082/polettix/blog1.txt @@ -0,0 +1 @@ +https://github.polettix.it/ETOOBUSY/2020/10/14/pwc082-interleave-string/ diff --git a/challenge-082/polettix/perl/ch-1.pl b/challenge-082/polettix/perl/ch-1.pl new file mode 100644 index 0000000000..f2e7056ef5 --- /dev/null +++ b/challenge-082/polettix/perl/ch-1.pl @@ -0,0 +1,17 @@ +#!/usr/bin/env perl +use 5.024; +use warnings; +use English qw< -no_match_vars >; +use experimental qw< postderef signatures >; +no warnings qw< experimental::postderef experimental::signatures >; + +sub gcd ($A, $B) { ($A, $B) = ($B % $A, $A) while $A; return $B } + +sub common_factors ($A, $B) { + my $gcd = gcd($A, $B); + grep { !($gcd % $_) } 1 .. int($gcd / 2), $gcd; +} + +my $M = shift || 12; +my $N = shift || 18; +say '(', join(', ', common_factors($M, $N)), ')'; diff --git a/challenge-082/polettix/perl/ch-2.pl b/challenge-082/polettix/perl/ch-2.pl new file mode 100644 index 0000000000..62e1b7ad38 --- /dev/null +++ b/challenge-082/polettix/perl/ch-2.pl @@ -0,0 +1,26 @@ +#!/usr/bin/env perl +use 5.024; +use warnings; +use English qw< -no_match_vars >; +use experimental qw< postderef signatures >; +no warnings qw< experimental::postderef experimental::signatures >; + +sub is_interleaving ($A, $B, $C) { + my ($lA, $lB, $lC) = map { length $_ } ($A, $B, $C); + ($lA, $lB, $A, $B) = ($lB, $lA, $B, $A) if $lA > $lB; + return 0 if ($lA + $lB != $lC) || ($lB > $lA + 1); + my ($fA, $fB) = ($lA == $lB, 1); # can go first? + for my $i (0 .. $lB - 1) { + my ($cA, $cB) = map { substr $_, $i, 1 } ($A, $B); + my $sC = substr $C, 2 * $i, 2; + $fA &&= ($sC eq ($cA . $cB)); + $fB &&= ($sC eq ($cB . $cA)); + return 0 unless $fA || $fB; + } + return 1; +} + +my $A = shift || 'XXY'; +my $B = shift || 'XXZ'; +my $C = shift || 'XXXXZY'; +say is_interleaving($A, $B, $C); |
