Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,29 @@
|
|||
class BurrowsWheelerTransform (String L = "\002") {
|
||||
|
||||
method encode(String s) {
|
||||
assert(!s.contains(L), "String cannot contain `#{L.dump}`")
|
||||
s = (L + s)
|
||||
s.len.of{|i| s.substr(i) + s.substr(0, i) }.sort.map{.last}.join
|
||||
}
|
||||
|
||||
method decode(String s) {
|
||||
var t = s.len.of("")
|
||||
var c = s.chars
|
||||
{ t = (c »+« t).sort } * s.len
|
||||
t.first { .begins_with(L) }.substr(L.len)
|
||||
}
|
||||
}
|
||||
|
||||
var tests = [
|
||||
"banana", "appellee", "dogwood", "TOBEORNOTTOBEORTOBEORNOT"
|
||||
"SIX.MIXED.PIXIES.SIFT.SIXTY.PIXIE.DUST.BOXES",
|
||||
]
|
||||
|
||||
var bwt = BurrowsWheelerTransform(L: '$')
|
||||
|
||||
tests.each { |str|
|
||||
var enc = bwt.encode(str)
|
||||
var dec = bwt.decode(enc)
|
||||
say "BWT(#{dec.dump}) = #{enc.dump}"
|
||||
assert_eq(str, dec)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue