in reply to sublist of a list
use Algorithm::Diff qw( LCS_length ); sub in_list { # Returns true if lsa is a proper subsequence of lsb my ($lsa, $lsb) = @_; return LCS_length($lsa, $lsb) == @$lsa; }
And a module-less solution:
sub in_list { # Returns true if lsa is a proper subsequence of lsb my ($lsa, $lsb) = @_; my $ia = 0; my $ib = 0; for (;;) { return 1 if $ia == @$lsa; return 0 if $ib == @$lsb; ++( $lsa->[$ia] eq $lsb->[$ib] ? $ia : $ib ); } }
Update: Added second solution.
Update: Sorry, I missed the bit about this being homework.
|
|---|