codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
<?php // PHP implementation of Burrows-Wheeler Transform function bwt($text) { $len = strlen($text); for($i = 0; $i < strlen($text); $i++) { if($i == 0) $dict[] = $text[$len-1] . substr($text, 0, $len-1); else $dict[] = $dict[$i-1][$len-1] . substr($dict[$i-1], 0, $len-1); } sort($dict); foreach ($dict as $row) $out .= $row[$len-1]; return $out; } function inv_bwt($text) { $len = strlen($text); for($i = 0; $i < $len; $i++) { for($j = 0; $j < $len; $j++) { $table[$j] = $text[$j] . $table[$j]; } sort($table); } foreach($table as $row) { if( $row[$len-1] == '@' ) return $row; } } $coded = bwt("^BANANA@"); $decoded = inv_bwt($coded); echo "Original string: ^BANANA@\n"; echo "String encoded: $coded \n"; echo "String decoded: $decoded \n"; ?>
Private
[
?
]
Run code
Submit