Burrows–Wheeler transform: Difference between revisions

no edit summary
(Add Rust implementation)
No edit summary
Line 1,232:
--> ERROR: bwt.lua:6: String cannot contain STX
--></pre>
 
=={{header|Mathematica}} / {{header|Wolfram Language}}==
<lang Mathematica>ClearAll[BurrowWheeler, InverseBurrowWheeler]
BurrowWheeler[sin_String, {bdelim_, edelim_}] := Module[{s},
s = Characters[bdelim <> sin <> edelim];
s = RotateLeft[s, #] & /@ Range[Length[s]];
StringJoin[LexicographicSort[s][[All, -1]]]
]
InverseBurrowWheeler[sin_String, {bdelim_, edelim_}] := Module[{s, chars},
chars = Characters[sin];
s = ConstantArray[{}, Length[chars]];
Do[
s = LexicographicSort[MapThread[Prepend, {s, chars}]];
,
{Length[chars]}
];
StringTake[StringJoin[SelectFirst[s, Last /* EqualTo[edelim]]], {2, -2}]
]
BurrowWheeler["BANANA", {"^", "|"}]
InverseBurrowWheeler[%, {"^", "|"}]
BurrowWheeler["appellee", {"^", "|"}]
InverseBurrowWheeler[%, {"^", "|"}]
BurrowWheeler["dogwood", {"^", "|"}]
InverseBurrowWheeler[%, {"^", "|"}]</lang>
{{out}}
<pre>|ANNB^AA
BANANA
|e^elplepa
appellee
|do^oodwg
dogwood</pre>
 
=={{header|Nim}}==
1,111

edits