aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-018/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-018/jaldhar-h-vyas/perl5/ch-1.pl29
-rwxr-xr-xchallenge-018/jaldhar-h-vyas/perl6/ch-1.p619
3 files changed, 49 insertions, 0 deletions
diff --git a/challenge-018/jaldhar-h-vyas/blog.txt b/challenge-018/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..cfa3df0edd
--- /dev/null
+++ b/challenge-018/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2019/08/perl_weekly_challenge_week_18.html \ No newline at end of file
diff --git a/challenge-018/jaldhar-h-vyas/perl5/ch-1.pl b/challenge-018/jaldhar-h-vyas/perl5/ch-1.pl
new file mode 100755
index 0000000000..65b9b72876
--- /dev/null
+++ b/challenge-018/jaldhar-h-vyas/perl5/ch-1.pl
@@ -0,0 +1,29 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use 5.010;
+
+sub LongestCommonSubstring {
+ my @strings = sort { length $a <=> length $b } @_;
+
+ my $shortest = shift @strings;
+ my @suffixes;
+ for my $i (0 .. length($shortest) - 1) {
+ for my $j ($i .. length($shortest) - 1) {
+ push @suffixes, substr $shortest, $i, $j - $i + 1;
+ }
+ }
+ @suffixes = reverse sort { length $a <=> length $b } @suffixes;
+
+ SUFFIX: for my $suffix (@suffixes) {
+ for my $string (@strings) {
+ if ( $string !~ /$suffix/) {
+ next SUFFIX;
+ }
+ }
+ return $suffix;
+ }
+}
+
+say LongestCommonSubstring('ABABC', 'BABCA', 'ABCBA');
+
diff --git a/challenge-018/jaldhar-h-vyas/perl6/ch-1.p6 b/challenge-018/jaldhar-h-vyas/perl6/ch-1.p6
new file mode 100755
index 0000000000..a8780681f5
--- /dev/null
+++ b/challenge-018/jaldhar-h-vyas/perl6/ch-1.p6
@@ -0,0 +1,19 @@
+#!/usr/bin/perl6
+
+sub LongestCommonSubstring(*@strings) {
+ @strings = @strings.sort(*.chars);
+
+ my $shortest = @strings.shift;
+ my @substrings;
+ for 0 ..^ $shortest.chars -> $i {
+ for $i ..^ $shortest.chars -> $j {
+ @substrings.push($shortest.substr($i, $j - $i + 1));
+ }
+ }
+
+ return @substrings.sort(-*.chars)
+ .grep({ @strings.all.contains($_) })
+ .first;
+}
+
+say LongestCommonSubstring('ABABC', 'BABCA', 'ABCBA');