diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-06-16 10:37:22 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-06-16 10:37:22 +0100 |
| commit | ba40720265e0ce0ffaf6d5ae0dc7a2d6ba1bd81d (patch) | |
| tree | 97849e5eb1798fedcfc2efe163e503e6050150b7 | |
| parent | 0df01b9a72ae2354615093f597ce8926a38e8dc9 (diff) | |
| parent | 735a428d4e1f61498f277c8c5b0f5d01130e3df8 (diff) | |
| download | perlweeklychallenge-club-ba40720265e0ce0ffaf6d5ae0dc7a2d6ba1bd81d.tar.gz perlweeklychallenge-club-ba40720265e0ce0ffaf6d5ae0dc7a2d6ba1bd81d.tar.bz2 perlweeklychallenge-club-ba40720265e0ce0ffaf6d5ae0dc7a2d6ba1bd81d.zip | |
Merge pull request #4275 from wlmb/challenges
Challenges
| -rw-r--r-- | challenge-117/wlmb/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-117/wlmb/perl/ch-1.pl | 21 | ||||
| -rwxr-xr-x | challenge-117/wlmb/perl/ch-2.pl | 33 |
3 files changed, 55 insertions, 0 deletions
diff --git a/challenge-117/wlmb/blog.txt b/challenge-117/wlmb/blog.txt new file mode 100644 index 0000000000..c6bf5b85ca --- /dev/null +++ b/challenge-117/wlmb/blog.txt @@ -0,0 +1 @@ +https://wlmb.github.io/2021/06/15/PWC117/ diff --git a/challenge-117/wlmb/perl/ch-1.pl b/challenge-117/wlmb/perl/ch-1.pl new file mode 100755 index 0000000000..35bb4e1edf --- /dev/null +++ b/challenge-117/wlmb/perl/ch-1.pl @@ -0,0 +1,21 @@ +#!/usr/bin/env perl +# Perl weekly challenge 117 +# Task 1: Missing row +# +# See https://wlmb.github.io/2021/06/15/PWC117/#task-1-missing-row +use strict; +use warnings; +use v5.12; + +my %rows; +@rows{1..15}=map {"Line $_"} qw(one two three four five six seven eight nine + ten eleven twelve thirteen fourteen fifteen); +my $count=0; +while(<>){ + ++$count; + die "Wrong format: $_" unless /^\s*(\d+),/; + die "Wrong number: $_" unless defined $rows{$1}; + delete $rows{$1}; +} +die "Not 14 lines" unless $count==14; +say "Missing row: $_, $rows{$_}" for keys %rows; diff --git a/challenge-117/wlmb/perl/ch-2.pl b/challenge-117/wlmb/perl/ch-2.pl new file mode 100755 index 0000000000..3de2aecde2 --- /dev/null +++ b/challenge-117/wlmb/perl/ch-2.pl @@ -0,0 +1,33 @@ +#!/usr/bin/env perl +# Perl weekly challenge 117 +# Task 2: Find possible paths +# +# See https://wlmb.github.io/2021/06/15/PWC117/#task-2-find-possible-paths +use strict; +use warnings; +use v5.12; +use Text::Wrap; +use Memoize; +memoize qw(N P); +my $length=25; # keep this many paths +foreach(@ARGV){ + my @paths=P($_-1,$_-1); + @paths=(@paths[0..$length], "...") if @paths>$length; + say "\nHeight: $_\nNumber of paths: ", N($_-1,$_-1), "\nPaths:\n", wrap ("\t", "\t", @paths); +} +sub N { #Number of paths + my ($row, $column)=@_; + return 0 if $column>$row; + return 0 if $column<0; + return 0 if $row < 0; + return 1 if $row==0 and $column==0; + return N($row, $column-1)+N($row-1, $column-1)+N($row-1, $column); +} +sub P { #actual paths + my ($r, $c)=@_; #row column + return () if $c>$r; + return () if $c<0; + return () if $r < 0; + return ("") if $r==0 and $c==0; + return ((map {$_."H"} P($r, $c-1)), (map {$_."R"} P($r-1, $c-1)), (map {$_."L"} P($r-1, $c))); +} |
