aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-06-05 08:51:33 +0100
committerGitHub <noreply@github.com>2020-06-05 08:51:33 +0100
commitc7d0c80a9d415feb9e7a1b208fb0f743afc72388 (patch)
treeffe94bb30a7cb761bdc2403fa4c90c385ca3d260
parent439d95fc5af11bded6649ee262e259b1cbfbbfac (diff)
parent8694320890bb0076e6a79fe1b10f00a00cd3fbd9 (diff)
downloadperlweeklychallenge-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.pl18
-rw-r--r--challenge-063/cheok-yin-fung/perl/ch-2.pl45
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";