http://qs1969.pair.com?node_id=263244


in reply to Re: Finding largest common subset in lists?
in thread Finding largest common subset in lists?

Close but no banana, unfortunately. Quoting from the manual:
...you want to find a new sequence S which can be obtained from the first sequence by deleting some items, and from the secend sequence by deleting other items.
What I need instead is to generate a new sequence S which can be obtained from the first list by deleting some items, and from the second list by deleting other items, but only deleting items before the first element of S or after the last element of S.

For example, given this code:

use Algorithm::Diff qw(LCS); @seq1 = qw(a b c d f g h j q z); @seq2 = qw(a b c d e f g i j k r x y z); @lcs = LCS(\@seq1, \@seq2);
What is produced is the list qw(a b c d f g j z). It did this by removing letters from the "inside" of S, for example 'e' and 'h'. Instead, I'd want qw(a b c d).

Replies are listed 'Best First'.
Re: Re: Re: Finding largest common subset in lists?
by Dr. Mu (Hermit) on Jun 06, 2003 at 05:03 UTC
    This is still unclear. To which part(s) of the sentence does "but only deleting items before the first element of S or after the last element of S" refer? To the entire preceding part of the sentence, or only to the part after "deleting some items"? More to the point, given the following two sequences:
    @seq1 = qw(a b c d e f g h); @seq2 = qw(a b c e f x g h);
    is the answer  a b c  or  a b c e f ?
      The answer is a b c. Getting a b c e f would involve deleting d from S for @seq1.