Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,17 @@
|
|||
class BurrowsWheelerTransform{
|
||||
fcn init(chr="$"){ var special=chr; }
|
||||
fcn encode(str){
|
||||
_assert_(not str.holds(special), "String cannot contain char \"%s\"".fmt(special) );
|
||||
str=str.append(special);
|
||||
str.len().pump(List().merge,'wrap(n){ String(str[n,*],str[0,n]) })
|
||||
.pump(String,T("get",-1)); // last char of each "permutation"
|
||||
}
|
||||
fcn decode(str){
|
||||
table:=List.createLong(str.len(),""); // ("",""..), mutable
|
||||
do(str.len()){
|
||||
foreach n in (str.len()){ table[n]=str[n] + table[n] }
|
||||
table.sort();
|
||||
} // --> ("$dogwood","d$dogwoo","dogwood$",...)
|
||||
table.filter1("%s*".fmt(special).glob)[1,*]; // str[0]==$, often first element
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
BWT:=BurrowsWheelerTransform();
|
||||
//BWT.encode("$"); // --> assert(bbb.zkl:25): String cannot contain char "$"
|
||||
|
||||
tests:=T(
|
||||
"banana", "appellee", "dogwood", "TO BE OR NOT TO BE OR WANT TO BE OR NOT?",
|
||||
"SIX.MIXED.PIXIES.SIFT.SIXTY.PIXIE.DUST.BOXES",);
|
||||
foreach test in (tests){
|
||||
enc:=BWT.encode(test);
|
||||
println("%s\n -->%s\n -->%s".fmt(test,enc,BWT.decode(enc)));
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue