diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-06-05 08:51:33 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-06-05 08:51:33 +0100 |
| commit | c7d0c80a9d415feb9e7a1b208fb0f743afc72388 (patch) | |
| tree | ffe94bb30a7cb761bdc2403fa4c90c385ca3d260 | |
| parent | 439d95fc5af11bded6649ee262e259b1cbfbbfac (diff) | |
| parent | 8694320890bb0076e6a79fe1b10f00a00cd3fbd9 (diff) | |
| download | perlweeklychallenge-club-c7d0c80a9d415feb9e7a1b208fb0f743afc72388.tar.gz perlweeklychallenge-club-c7d0c80a9d415feb9e7a1b208fb0f743afc72388.tar.bz2 perlweeklychallenge-club-c7d0c80a9d415feb9e7a1b208fb0f743afc72388.zip | |
Merge pull request #1789 from E7-87-83/master
CY's submission for PWC#063
| -rw-r--r-- | challenge-063/cheok-yin-fung/perl/ch-1.pl | 18 | ||||
| -rw-r--r-- | challenge-063/cheok-yin-fung/perl/ch-2.pl | 45 |
2 files changed, 63 insertions, 0 deletions
diff --git a/challenge-063/cheok-yin-fung/perl/ch-1.pl b/challenge-063/cheok-yin-fung/perl/ch-1.pl new file mode 100644 index 0000000000..b0d6011119 --- /dev/null +++ b/challenge-063/cheok-yin-fung/perl/ch-1.pl @@ -0,0 +1,18 @@ +#!/usr/bin/perl +use Test::Simple tests => 3; +use strict; + +sub last_word { + my $qr = $_[1]; + my @rwords = reverse split / /, $_[0]; + foreach (@rwords) { + if ($_ =~ $qr) { #why if ($qr) does not work + return $_; + } + } + return undef; +} + +ok ( last_word('hello world', qr/[ea]l/) eq "hello", "Good Hello" ) ; +ok ( last_word("Don't match too much, Chet!", qr/ch.t/i) eq 'Chet!', "Good Chet"); +ok ( last_word( join(' ', 1..1e6), qr/^(3.*?){3}/) eq '399933', "Nice number"); diff --git a/challenge-063/cheok-yin-fung/perl/ch-2.pl b/challenge-063/cheok-yin-fung/perl/ch-2.pl new file mode 100644 index 0000000000..2c5cdf7226 --- /dev/null +++ b/challenge-063/cheok-yin-fung/perl/ch-2.pl @@ -0,0 +1,45 @@ +#!/usr/bin/perl +use strict; + +my $word = $ARGV[0]; +my $wordlen = length $word; + +sub lookup_repeated { + my $word = $_[0]; + my $le = 1; + while ($le <= $wordlen/2) { + my $multiple = int $wordlen/$le; + if ($wordlen == $le * $multiple) { + my $pattern = substr $word, 0, $le; + if ( ($pattern x $multiple) eq $word ) { + return $le; + } + else { + $le++; + } + } + else { + $le++; + } + } + return $wordlen if $le > $wordlen/2 ; +} + +my $patternlen = lookup_repeated $ARGV[0]; + +if ($patternlen == 1) { + print "1"; + exit; +} + + +my $tri_no = 1; +my $i = 1; + +while ($tri_no % $patternlen != 0) { + $i++; + $tri_no += $i; +} + +print $i; +print "\n"; |
