Class: Bwt
- Inherits:
-
Object
- Object
- Bwt
- Defined in:
- lib/bwt.rb
Overview
Initial implementation of BWT algorithm
Burrows–Wheeler transform - block-sorting compression
Class Method Summary collapse
-
.bwt(string) ⇒ String
Transformation | - start flag.
-
.bwt_rev(string) ⇒ Array
Inverse Transformation.
Instance Method Summary collapse
-
#initialize ⇒ Bwt
constructor
A new instance of Bwt.
Constructor Details
Class Method Details
.bwt(string) ⇒ String
Transformation | - start flag. ~ - end flag.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/bwt.rb', line 14 def self.bwt(string) string2="|#{string}~" p string2 len=string2.length m=[] (0...string2.length).collect { |i| (string2 * 2)[i, string2.length] }.each do |entry| arr=[] entry.split('').each do |letter| arr.push(letter) end m.push(arr) end a=m.sort b=[] a.each do |lt| b.push(lt[len-1]) end return b.join('') end |
.bwt_rev(string) ⇒ Array
Inverse Transformation
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/bwt.rb', line 37 def self.bwt_rev(string) len=string.length s1="" m=Array.new count = 0 while count < len do if not m.any? string.split('').each do |s| s1=[s] m.push(s1) m.sort! end count += 1 else val = 0 string.split('').each do |s| m[val].insert(0,s) val += 1 end m.sort! count +=1 end end m.each do |arr| if arr.last == "~" return arr end end end |