aboutsummaryrefslogtreecommitdiff
path: root/challenge-099
diff options
context:
space:
mode:
authorJaldhar H. Vyas <jaldhar@braincells.com>2021-02-14 20:41:28 -0500
committerJaldhar H. Vyas <jaldhar@braincells.com>2021-02-14 20:41:28 -0500
commit17c0169a2703bcf5ce8dd9f5622f2ed16820c59e (patch)
treead7bdce3f9e60d2a1fa988d33e6e0951b42eb0be /challenge-099
parentb3daee64ed733af78f2141d074fcc8ace8071ea2 (diff)
downloadperlweeklychallenge-club-17c0169a2703bcf5ce8dd9f5622f2ed16820c59e.tar.gz
perlweeklychallenge-club-17c0169a2703bcf5ce8dd9f5622f2ed16820c59e.tar.bz2
perlweeklychallenge-club-17c0169a2703bcf5ce8dd9f5622f2ed16820c59e.zip
Challenge 99 by Jaldhar H. Vyas
Diffstat (limited to 'challenge-099')
-rw-r--r--challenge-099/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-099/jaldhar-h-vyas/perl/ch-1.pl27
-rwxr-xr-xchallenge-099/jaldhar-h-vyas/perl/ch-2.pl40
-rwxr-xr-xchallenge-099/jaldhar-h-vyas/raku/ch-1.raku10
-rwxr-xr-xchallenge-099/jaldhar-h-vyas/raku/ch-2.raku24
5 files changed, 102 insertions, 0 deletions
diff --git a/challenge-099/jaldhar-h-vyas/blog.txt b/challenge-099/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..8f05d10e75
--- /dev/null
+++ b/challenge-099/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2021/02/perl_weekly_challenge_week_99.html
diff --git a/challenge-099/jaldhar-h-vyas/perl/ch-1.pl b/challenge-099/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..2a632203b2
--- /dev/null
+++ b/challenge-099/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,27 @@
+#!/usr/bin/perl
+use 5.020;
+use warnings;
+use English qw/ -no_match_vars /;
+
+sub usage {
+ print<<"-USAGE-";
+Usage:
+ $PROGRAM_NAME <S> <P>
+
+ <S> a string.
+ <P> a pattern.
+-USAGE-
+ exit 0;
+}
+
+if (scalar @ARGV != 2) {
+ usage();
+}
+
+my ($S, $P) = @ARGV;
+
+$P =~ s/\*/.*/g;
+$P =~ s/\?/./g;
+$S =~ /($P)/;
+
+say q{}, (defined $1 && $S eq $1) ? 1 : 0; \ No newline at end of file
diff --git a/challenge-099/jaldhar-h-vyas/perl/ch-2.pl b/challenge-099/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..b3e4c80acb
--- /dev/null
+++ b/challenge-099/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,40 @@
+#!/usr/bin/perl
+use 5.020;
+use warnings;
+use English qw/ -no_match_vars /;
+
+sub usage {
+ print<<"-USAGE-";
+Usage:
+ $PROGRAM_NAME <S> <T>
+
+ <S> a string.
+ <T> a subsequence to be matched in <S>
+-USAGE-
+ exit 0;
+}
+
+if (scalar @ARGV != 2) {
+ usage();
+}
+
+my ($S, $T) = @ARGV;
+
+my @patterns = ( $T );
+for my $i (0 .. (length $T) - 2) {
+ for my $j (1 .. (length $S) - (length $T)) {
+ my @t = split //, $T;
+ $t[$i] .= ".{$j}";
+ my $pattern = join q{}, @t;
+ push @patterns, $pattern;
+ }
+}
+
+my $count = 0;
+for my $pattern (@patterns) {
+ if ($S =~ /($pattern)/) {
+ $count++;
+ }
+}
+
+say $count;
diff --git a/challenge-099/jaldhar-h-vyas/raku/ch-1.raku b/challenge-099/jaldhar-h-vyas/raku/ch-1.raku
new file mode 100755
index 0000000000..71176c80b7
--- /dev/null
+++ b/challenge-099/jaldhar-h-vyas/raku/ch-1.raku
@@ -0,0 +1,10 @@
+#!/usr/bin/raku
+
+sub MAIN(
+ Str $S, #= a string.
+ Str $P #= a pattern.
+) {
+ $S ~~ / ( <{ $P.subst('*', '.*', :g).subst('?', '.', :g) }> ) /;
+
+ say ($0 && $S eq $0) ?? 1 !! 0;
+} \ No newline at end of file
diff --git a/challenge-099/jaldhar-h-vyas/raku/ch-2.raku b/challenge-099/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..d01568ec06
--- /dev/null
+++ b/challenge-099/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,24 @@
+#!/usr/bin/raku
+
+sub MAIN (
+ Str $S, #= a string.
+ Str $T #= a subsequence to be matched in <S>
+) {
+ my @patterns = ( $T );
+ for 0 .. $T.chars - 2 -> $i {
+ for 1 .. $S.chars - $T.chars -> $j {
+ my @t = $T.comb;
+ @t[$i] ~= " . ** {$j} ";
+ @patterns.push( / <{ @t.join(q{}) }> / );
+ }
+ }
+
+ my $count = 0;
+ for @patterns -> $pattern {
+ if $S ~~ / ( $pattern ) / {
+ $count++;
+ }
+ }
+
+ say $count;
+} \ No newline at end of file