diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-10-24 04:35:52 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-24 04:35:52 +0100 |
| commit | 86c48cc3908cfbb36e1d35628e6dca228dd8f055 (patch) | |
| tree | 419442fa9dda92f1ff513fb9d0210b8c10fa254c /challenge-135 | |
| parent | 64dfe71055cf4a02d706ae943a45d213540eb321 (diff) | |
| parent | 09a148d5da80676de9c8c0db8e95477db66b1f5f (diff) | |
| download | perlweeklychallenge-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.pl | 38 | ||||
| -rw-r--r-- | challenge-135/cheok-yin-fung/perl/ch-2.pl | 29 |
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"; |
