|
op .longest(a, b);
|
|
return if #a > #b then a else b end;
|
|
end .longest;
|
|
|
|
procedure lcs(a, b);
|
|
if exists empty in {a, b} | #empty = 0 then
|
|
return empty;
|
|
elseif a(1) = b(1) then
|
|
return a(1) + lcs(a(2..), b(2..));
|
|
else
|
|
return lcs(a(2..), b) .longest lcs(a, b(2..));
|
|
end;
|
|
end lcs;
|