diff options
| author | Jaldhar H. Vyas <jaldhar@braincells.com> | 2021-02-14 20:41:28 -0500 |
|---|---|---|
| committer | Jaldhar H. Vyas <jaldhar@braincells.com> | 2021-02-14 20:41:28 -0500 |
| commit | 17c0169a2703bcf5ce8dd9f5622f2ed16820c59e (patch) | |
| tree | ad7bdce3f9e60d2a1fa988d33e6e0951b42eb0be /challenge-099 | |
| parent | b3daee64ed733af78f2141d074fcc8ace8071ea2 (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-099/jaldhar-h-vyas/perl/ch-1.pl | 27 | ||||
| -rwxr-xr-x | challenge-099/jaldhar-h-vyas/perl/ch-2.pl | 40 | ||||
| -rwxr-xr-x | challenge-099/jaldhar-h-vyas/raku/ch-1.raku | 10 | ||||
| -rwxr-xr-x | challenge-099/jaldhar-h-vyas/raku/ch-2.raku | 24 |
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 |
