summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2012-10-25 00:14:33 -0500
committerJesse Luehrs <doy@tozt.net>2012-10-25 00:14:33 -0500
commit3bac0ba740ef9c37aeedcb2b9e8e82daf1af1d51 (patch)
tree0ef6f44e4def125991b914f421349af978fdd539
parenta529ce696348a36e2251fdf4e040a7562c483154 (diff)
downloadrosalind-3bac0ba740ef9c37aeedcb2b9e8e82daf1af1d51.tar.gz
rosalind-3bac0ba740ef9c37aeedcb2b9e8e82daf1af1d51.zip
another solution
-rw-r--r--LCS.pl28
1 files changed, 28 insertions, 0 deletions
diff --git a/LCS.pl b/LCS.pl
new file mode 100644
index 0000000..a52be7f
--- /dev/null
+++ b/LCS.pl
@@ -0,0 +1,28 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use 5.016;
+
+use List::MoreUtils 'all';
+
+chomp(my @strings = <>);
+
+my $min = length($strings[0]);
+my $min_idx = 0;
+for my $i (1..$#strings) {
+ if (length($strings[$i]) < $min) {
+ $min = length($strings[$i]);
+ $min_idx = $i;
+ }
+}
+my $str = splice(@strings, $min_idx, 1);
+
+LENGTH: for my $len (reverse 1..length($str)) {
+ for my $start (0..(length($str) - $len)) {
+ my $substr = substr($str, $start, $len);
+ if (all { /$substr/ } @strings) {
+ say $substr;
+ last LENGTH;
+ }
+ }
+}