aboutsummaryrefslogtreecommitdiff
path: root/challenge-135
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-10-24 04:35:52 +0100
committerGitHub <noreply@github.com>2021-10-24 04:35:52 +0100
commit86c48cc3908cfbb36e1d35628e6dca228dd8f055 (patch)
tree419442fa9dda92f1ff513fb9d0210b8c10fa254c /challenge-135
parent64dfe71055cf4a02d706ae943a45d213540eb321 (diff)
parent09a148d5da80676de9c8c0db8e95477db66b1f5f (diff)
downloadperlweeklychallenge-club-86c48cc3908cfbb36e1d35628e6dca228dd8f055.tar.gz
perlweeklychallenge-club-86c48cc3908cfbb36e1d35628e6dca228dd8f055.tar.bz2
perlweeklychallenge-club-86c48cc3908cfbb36e1d35628e6dca228dd8f055.zip
Merge pull request #5085 from E7-87-83/newt
Week 135 Submission
Diffstat (limited to 'challenge-135')
-rw-r--r--challenge-135/cheok-yin-fung/perl/ch-1.pl38
-rw-r--r--challenge-135/cheok-yin-fung/perl/ch-2.pl29
2 files changed, 67 insertions, 0 deletions
diff --git a/challenge-135/cheok-yin-fung/perl/ch-1.pl b/challenge-135/cheok-yin-fung/perl/ch-1.pl
new file mode 100644
index 0000000000..9bfbff32a0
--- /dev/null
+++ b/challenge-135/cheok-yin-fung/perl/ch-1.pl
@@ -0,0 +1,38 @@
+# The Weekly Challenge 135
+# Task 1 Middle 3-digits
+# Usage: ch-1.pl [integer]
+use v5.12.0;
+use warnings;
+use Test::More tests => 7;
+
+my $n = $ARGV[0] || 1;
+
+die "Not an integer. / Format ill-suited.\n"
+ unless $n =~ m/^[+-]?[1-9]+[\d]*$/ or $n =~ m/^[+-]?0$/;
+
+say mid_three($n) if defined($ARGV[0]);
+
+
+
+sub mid_three {
+
+ my @arr = split //, abs($_[0]);
+
+ return "even number of digits" if $#arr % 2 == 1;
+
+ return "too short" if $#arr < 2;
+
+ my $m = $#arr / 2;
+
+ return $arr[$m-1].$arr[$m].$arr[$m+1];
+}
+
+
+
+ok mid_three(1234567) eq "345", "Example 1";
+ok mid_three(-123) eq "123", "Example 2";
+ok mid_three(1) eq "too short", "Example 3";
+ok mid_three(10) eq "even number of digits", "Example 4";
+ok mid_three(14285) eq "428", "TC 1";
+ok mid_three(33_554_432) eq "even number of digits", "TC 2";
+ok mid_three(1073_741_8240) eq "741", "TC 3";
diff --git a/challenge-135/cheok-yin-fung/perl/ch-2.pl b/challenge-135/cheok-yin-fung/perl/ch-2.pl
new file mode 100644
index 0000000000..2b197fc888
--- /dev/null
+++ b/challenge-135/cheok-yin-fung/perl/ch-2.pl
@@ -0,0 +1,29 @@
+# The Weekly Challenge 135
+# Task 2 Validate SEDOL
+# Usage: ch-2.pl [SEDOL]
+use v5.12.0;
+use warnings;
+use Test::More tests => 4;
+
+say sedol($ARGV[0]) ? 1 : 0;
+
+sub sedol {
+ return 0 if !defined($_[0]);
+ my %val;
+ $val{$_} = $_ for (0..9);
+ $val{$_} = ord($_)-ord("A")+10 for ("A".."Z");
+
+ my @arr = split //, $_[0];
+ my @weight = (1,3,1,7,3,9);
+ my $sum = 0;
+ for (0..5) {
+ $sum += $val{$arr[$_]}*$weight[$_];
+ }
+ return ((840-$sum) % 10) == $arr[-1];
+}
+
+
+ok sedol('2936921') == 1, "Example 1";
+ok sedol('1234567') == 0, "Example 2";
+ok sedol('B0YBKL9') == 1, "Example 3";
+ok sedol('0263494') == 1, "Example from wikipedia";