aboutsummaryrefslogtreecommitdiff
path: root/challenge-135
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-10-25 07:20:33 +0100
committerGitHub <noreply@github.com>2021-10-25 07:20:33 +0100
commit86f0da12bf72ec8c4f259741c3475cdb0256f09c (patch)
tree2e4e3129c7166a2e36ebdd6fa85c905be8409d00 /challenge-135
parent045afa37a272dfb7e839d8f6e373678c31753bc1 (diff)
parent384b5a40d9206a23f0b39465a33489e9ca9fa049 (diff)
downloadperlweeklychallenge-club-86f0da12bf72ec8c4f259741c3475cdb0256f09c.tar.gz
perlweeklychallenge-club-86f0da12bf72ec8c4f259741c3475cdb0256f09c.tar.bz2
perlweeklychallenge-club-86f0da12bf72ec8c4f259741c3475cdb0256f09c.zip
Merge pull request #5094 from jaldhar/challenge-135
Challenge 135 by Jaldhar H. Vyas.
Diffstat (limited to 'challenge-135')
-rw-r--r--challenge-135/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-135/jaldhar-h-vyas/perl/ch-1.pl23
-rwxr-xr-xchallenge-135/jaldhar-h-vyas/perl/ch-2.pl35
-rwxr-xr-xchallenge-135/jaldhar-h-vyas/raku/ch-1.raku23
-rwxr-xr-xchallenge-135/jaldhar-h-vyas/raku/ch-2.raku33
5 files changed, 115 insertions, 0 deletions
diff --git a/challenge-135/jaldhar-h-vyas/blog.txt b/challenge-135/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..76eb86cd57
--- /dev/null
+++ b/challenge-135/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2021/10/perl_weekly_challenge_week_135.html
diff --git a/challenge-135/jaldhar-h-vyas/perl/ch-1.pl b/challenge-135/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..bd5d1e47d3
--- /dev/null
+++ b/challenge-135/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,23 @@
+#!/usr/bin/perl
+use 5.020;
+use warnings;
+
+my $n = shift // die "Need an integer.\n";
+
+$n =~ s/^\-//;
+
+if ($n !~ /^\d+$/) {
+ die "Not an integer.\n";
+}
+
+my $len = length $n;
+
+if ($len % 2 == 0) {
+ die "Even number of digits\n";
+}
+
+if ($len < 3) {
+ die "Too short.\n";
+}
+
+say substr $n, ($len - 3) / 2, 3; \ No newline at end of file
diff --git a/challenge-135/jaldhar-h-vyas/perl/ch-2.pl b/challenge-135/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..3ec8672399
--- /dev/null
+++ b/challenge-135/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,35 @@
+#!/usr/bin/perl
+use 5.020;
+use warnings;
+
+sub check {
+ my ($sedol) = @_;
+
+ if (length $sedol != 7) {
+ return undef;
+ }
+
+ if ($sedol !~ /^ [0-9B-DF-HJ-NP-TV-Z]{6} [0-9] $/x) {
+ return undef;
+ }
+
+ my @weights = (1, 3, 1, 7, 3, 9, 1);
+
+ my @chars = split //, $sedol;
+
+ my $sum = 0;
+
+ for my $i (0 .. 5) {
+ if (ord($chars[$i]) >= ord('0') && ord($chars[$i]) <= ord('9')) {
+ $sum += $chars[$i] * $weights[$i];
+ } else {
+ $sum += (ord($chars[$i]) - ord('A')) * $weights[$i];
+ }
+ }
+
+ return ((10 - $sum % 10) % 10) == $chars[6];
+}
+
+my $sedol = shift // die "Need a seven character string.\n";
+
+say check($sedol) ? '1' : '0';
diff --git a/challenge-135/jaldhar-h-vyas/raku/ch-1.raku b/challenge-135/jaldhar-h-vyas/raku/ch-1.raku
new file mode 100755
index 0000000000..ad4f727a70
--- /dev/null
+++ b/challenge-135/jaldhar-h-vyas/raku/ch-1.raku
@@ -0,0 +1,23 @@
+#!/usr/bin/raku
+
+sub MAIN(
+ Int $N
+) {
+ my $n = $N.subst(/^\-/, q{});
+
+ if $n !~~ /^ \d+ $/ {
+ die "$n Not an integer.\n";
+ }
+
+ my $len = $n.chars;
+
+ if $len % 2 == 0 {
+ die "Even number of digits\n";
+ }
+
+ if $len < 3 {
+ die "Too short.\n";
+ }
+
+ say $n.substr(($len - 3) / 2, 3);
+}
diff --git a/challenge-135/jaldhar-h-vyas/raku/ch-2.raku b/challenge-135/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..72e799feba
--- /dev/null
+++ b/challenge-135/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,33 @@
+#!/usr/bin/raku
+
+sub check(Str $sedol) {
+ if ($sedol.chars != 7) {
+ return False;
+ }
+
+ if ($sedol !~~ /^ <[0..9] + [A..Z] - [AEIOU]> ** 6 <[0..9]> $ /) {
+ return False;
+ }
+
+ my @weights = (1, 3, 1, 7, 3, 9, 1);
+
+ my @chars = $sedol.comb;
+
+ my $sum = 0;
+
+ for 0 .. 5 -> $i {
+ if (@chars[$i].ord >= '0'.ord && @chars[$i].ord <= '9'.ord) {
+ $sum += @chars[$i] * @weights[$i];
+ } else {
+ $sum += (@chars[$i].ord - 'A'.ord) * @weights[$i];
+ }
+ }
+
+ return ((10 - $sum % 10) % 10) == @chars[6];
+}
+
+sub MAIN(
+ Str $sedol #= seven character string
+) {
+ say check($sedol) ?? '1' !! '0';
+}