10 lines
448 B
Text
10 lines
448 B
Text
s1@(Sequence traits) longestCommonSubsequenceWith: s2@(Sequence traits)
|
|
[
|
|
s1 isEmpty \/ s2 isEmpty ifTrue: [^ {}].
|
|
s1 last = s2 last
|
|
ifTrue: [(s1 allButLast longestCommonSubsequenceWith: s2 allButLast) copyWith: s1 last]
|
|
ifFalse: [| x y |
|
|
x: (s1 longestCommonSubsequenceWith: s2 allButLast).
|
|
y: (s1 allButLast longestCommonSubsequenceWith: s2).
|
|
x length > y length ifTrue: [x] ifFalse: [y]]
|
|
].
|