17 lines
375 B
Plaintext
17 lines
375 B
Plaintext
func lcs(xstr, ystr) is cached {
|
|
|
|
xstr.is_empty && return xstr
|
|
ystr.is_empty && return ystr
|
|
|
|
var(x, xs, y, ys) = (xstr.first(1), xstr.slice(1),
|
|
ystr.first(1), ystr.slice(1))
|
|
|
|
if (x == y) {
|
|
x + lcs(xs, ys)
|
|
} else {
|
|
[lcs(xstr, ys), lcs(xs, ystr)].max_by { .len }
|
|
}
|
|
}
|
|
|
|
say lcs("thisisatest", "testing123testing")
|