VectorAlignments
Compare and align vectors with contents of any type: find longest common subsequence, shortest common supersequence, and align elements in parallel sequences.
Overview
using VectorAlignmentsLongest common subsequence:
lcs("abc", "abd")2-element Vector{Any}:
'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)
'b': ASCII/Unicode U+0062 (category Ll: Letter, lowercase)Shortest common supersequence:
scs("abc", "abd")4-element Vector{Any}:
'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)
'b': ASCII/Unicode U+0062 (category Ll: Letter, lowercase)
'c': ASCII/Unicode U+0063 (category Ll: Letter, lowercase)
'd': ASCII/Unicode U+0064 (category Ll: Letter, lowercase)Align elements in parallel sequences (return value is a Vector of Vectors):
align("abc", "abd")2-element Vector{Any}:
Any['a', 'b', 'c', nothing]
Any['a', 'b', nothing, 'd']Align elements in parallel sequences (return value is a two-dimensional matrix):
featurematrix("abc", "abd")4×2 Matrix{Any}:
'a' 'a'
'b' 'b'
'c' nothing
nothing 'd'Types
The vectors to compare can contain elements of any type.
scs([1,3,5], [1,2,3])4-element Vector{Any}:
1
2
3
5Since strings are treated as vectors of characters, the return values of scs and lcs will be vectors of characters: you'll have to turn them into strings yourself if you want a String value.
scs("bc", "abc") |> join"abc"