Shortest common supersequence: Difference between revisions

Added Wren
m (use wiki markup for links)
(Added Wren)
Line 689:
{{out}}
<pre>SCS(abcbdab,bdcaba) = abdcabdab</pre>
 
=={{header|Wren}}==
{{trans|Kotlin}}
<lang ecmascript>var lcs // recursive
lcs = Fn.new { |x, y|
if (x.count == 0 || y.count == 0) return ""
var x1 = x[0...-1]
var y1 = y[0...-1]
if (x[-1] == y[-1]) return lcs.call(x1, y1) + x[-1]
var x2 = lcs.call(x, y1)
var y2 = lcs.call(x1, y)
return (x2.count > y2.count) ? x2 : y2
}
 
var scs = Fn.new { |u, v|
var lcs = lcs.call(u, v)
var ui = 0
var vi = 0
var sb = ""
for (i in 0...lcs.count) {
while (ui < u.count && u[ui] != lcs[i]) {
sb = sb + u[ui]
ui = ui + 1
}
while (vi < v.count && v[vi] != lcs[i]) {
sb = sb + v[vi]
vi = vi + 1
}
sb = sb + lcs[i]
ui = ui + 1
vi = vi + 1
}
if (ui < u.count) sb = sb + u[ui..-1]
if (vi < v.count) sb = sb + v[vi..-1]
return sb
}
 
var u = "abcbdab"
var v = "bdcaba"
System.print(scs.call(u, v))</lang>
 
{{out}}
<pre>
abdcabdab
</pre>
 
=={{header|zkl}}==
9,482

edits