Burrows–Wheeler transform: Difference between revisions

Content added Content deleted
(Add Dart implementation)
m (→‎{{header|Sidef}}: simplification in bwt_encode())
Line 2,896: Line 2,896:
func bwt_encode(String s) {
func bwt_encode(String s) {


var bwt = bwt_sort(s)
var bwt = bwt_sort(s)
var ret = bwt.map {|i| s.slice(i-1, 1) }.join
var ret = bwt.map {|i| s.slice(i-1, 1) }.join
var prefix = s.slice(0, LOOKAHEAD_LEN)
var idx = bwt.first_index_by { .is_zero }
var len = prefix.len

var idx = 0;
for i in (bwt) {

var lookahead = s.slice(i, len)

if (lookahead.len < len) {
lookahead += s.slice(0, len - lookahead.len)
}

if (lookahead == prefix) {
var row = s.rotate(i)
if (row == s) {
break
}
}
++idx
}


return (ret, idx)
return (ret, idx)