http://storehouse.sakura.ne.jp/viewvc/viewvc.cgi/divsufsort/ruby/divsufsort.c?root=svn&view=markup
http://divsufsort.rubyforge.org/
とりあえずbwt/unbwtだけ実装。
require 'divsufsort' include Divsufsort bwt = divbwt(<<-EOS) London bridge is falling down, Falling down, falling down, London bridge is falling down, My fair Lady. EOS unbwt = inverse_bw_transform(bwt) puts <<-EOS #{bwt} ----- #{unbwt} EOS
追記
divsufsortも実装したけど、使い方はあってるかな…
require 'divsufsort' include Divsufsort src = 'abracadabra$' sa = divsufsort(src) #=> [11, 10, 7, 0, 3, 5, 8, 1, 4, 6, 9, 2] sa.map {|i| src[i - 1].chr }.join #=> "ard$rcaaaabb"