diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-06-01 17:22:01 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-06-01 17:22:01 +0100 |
| commit | 39dbc652a5af1b5386845de8f81463fb514437ad (patch) | |
| tree | 846903e70b31314989e35bf463bfe7928495a46a | |
| parent | 04834afb9ff7cc9dbc2b5ff1f015330a842433a4 (diff) | |
| parent | 47fef88a03653dec3ac6e522ba2c0265436e19c8 (diff) | |
| download | perlweeklychallenge-club-39dbc652a5af1b5386845de8f81463fb514437ad.tar.gz perlweeklychallenge-club-39dbc652a5af1b5386845de8f81463fb514437ad.tar.bz2 perlweeklychallenge-club-39dbc652a5af1b5386845de8f81463fb514437ad.zip | |
Merge pull request #1781 from Firedrake/rogerbw-challenge-063
Solutions for challenge #63.
| -rwxr-xr-x | challenge-063/roger-bell-west/perl/ch-1.pl | 30 | ||||
| -rwxr-xr-x | challenge-063/roger-bell-west/perl/ch-2.pl | 24 | ||||
| -rwxr-xr-x | challenge-063/roger-bell-west/raku/ch-1.p6 | 26 | ||||
| -rwxr-xr-x | challenge-063/roger-bell-west/raku/ch-2.p6 | 20 |
4 files changed, 100 insertions, 0 deletions
diff --git a/challenge-063/roger-bell-west/perl/ch-1.pl b/challenge-063/roger-bell-west/perl/ch-1.pl new file mode 100755 index 0000000000..210eb81cc2 --- /dev/null +++ b/challenge-063/roger-bell-west/perl/ch-1.pl @@ -0,0 +1,30 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +if (last_word(' hello world', qr/[ea]l/) ne 'hello') { + die 1; +} +if (last_word("Don't match too much, Chet!", qr/ch.t/i) ne 'Chet!') { + die 2; +} +if (defined(last_word("spaces in regexp won't match", qr/in re/))){ + die 3; +} +if (last_word( join(' ', 1..1e6), qr/^(3.*?){3}/) ne '399933') { + die 4; +} + +sub last_word { + my ($str,$re)=@_; + my @list=reverse grep /\S/,split /\s+/,$str; + my $r; + foreach (@list) { + if ($_ =~ $re) { + $r=$_; + last; + } + } + return $r; +} diff --git a/challenge-063/roger-bell-west/perl/ch-2.pl b/challenge-063/roger-bell-west/perl/ch-2.pl new file mode 100755 index 0000000000..e246d02093 --- /dev/null +++ b/challenge-063/roger-bell-west/perl/ch-2.pl @@ -0,0 +1,24 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +if (rotate('xyxx') != 7) { + die "wrong answer"; +} + +sub rotate { + my $str=shift; + my @s=split '',$str; + my $k=scalar @s; + my $n=0; + while (1) { + $n++; + my @l=splice @s,0,($n % $k); + push @s,@l; + if (join('',@s) eq $str) { + last; + } + } + return $n; +} diff --git a/challenge-063/roger-bell-west/raku/ch-1.p6 b/challenge-063/roger-bell-west/raku/ch-1.p6 new file mode 100755 index 0000000000..730e39bbaa --- /dev/null +++ b/challenge-063/roger-bell-west/raku/ch-1.p6 @@ -0,0 +1,26 @@ +#! /usr/bin/perl6 + +if (last_word(' hello world', rx/<[ea]>l/) ne 'hello') { + die 1; +} +if (last_word("Don't match too much, Chet!", rx/:i ch.t/) ne 'Chet!') { + die 2; +} +if (defined(last_word("spaces in regexp won't match", rx/:s in re/))) { + die 3; +} +if (last_word(join(' ', 1..1e6), rx/^(3.*?) ** 3/) ne '399933') { + die 4; +} + +sub last_word ($str,$re) { + my @list=reverse grep /\S/,split /\s+/,$str; + my $r; + for @list { + if ($_ ~~ $re) { + $r=$_; + last; + } + } + return $r; +} diff --git a/challenge-063/roger-bell-west/raku/ch-2.p6 b/challenge-063/roger-bell-west/raku/ch-2.p6 new file mode 100755 index 0000000000..ae673e74db --- /dev/null +++ b/challenge-063/roger-bell-west/raku/ch-2.p6 @@ -0,0 +1,20 @@ +#! /usr/bin/perl6 + +if (rotate('xyxx') != 7) { + die "wrong answer"; +} + +sub rotate ($str) { + my @s=$str.comb(/./); + my $k=@s.elems; + my $n=0; + while (1) { + $n++; + my @l=splice @s,0,($n % $k); + map {push @s,$_},@l.flat; + if (join('',@s) eq $str) { + last; + } + } + return $n; +} |
