Skip to content

DBMS for algorithmic problems

In your JS/TS project

Longest Common Subsequence

dp(name = lcs) {
input = {sa: [u8], sb: [u8]}
node {
key = {a: uint, b: uint}
payload = || sa[a] == sb[b] ? 1 : 0
next = || {
(a == sa.len || b == sb.len) && yield node.end() && return
if sa[a] == sb[b] {
yield link(sa[a])
yield node({a: a + 1, b: b + 1})
} else {
yield node({a: a + 1, b: b})
yield node({a: a, b: b + 1})
}
}
add = |a, b| max(a, b)
zero = max.neutral
mul = |a, b| a + b
one = add.neutral
}
node (name = end) {
add = |a, b| max(a, b)
zero = max.neutral
}
begin node({a: 0, b: 0})
output node.end()
}