Class: Bijective::Instance
- Inherits:
-
Object
- Object
- Bijective::Instance
- Defined in:
- lib/bijective.rb
Instance Method Summary collapse
-
#decode(s) ⇒ Integer
Decodes the given string.
-
#encode(i) ⇒ String
Encodes the given integer.
-
#initialize(sequence) ⇒ Instance
constructor
Constructor initialises instance variables @sequence and @base.
Constructor Details
#initialize(sequence) ⇒ Instance
Constructor initialises instance variables @sequence and @base.
12 13 14 15 16 17 18 19 20 21 |
# File 'lib/bijective.rb', line 12 def initialize sequence dublicate = sequence.split(//).uniq.join if dublicate.length != sequence.length raise(InitializationError, 'Sequence string must contain only unique charaters.') end @sequence = sequence @base = @sequence.length end |
Instance Method Details
#decode(s) ⇒ Integer
Decodes the given string
41 42 43 44 45 |
# File 'lib/bijective.rb', line 41 def decode s i = 0 s.each_char { |c| i = i * @base + @sequence.index(c) } i end |
#encode(i) ⇒ String
Encodes the given integer
27 28 29 30 31 32 33 34 35 |
# File 'lib/bijective.rb', line 27 def encode i return @sequence[0,1] if i == 0 s = '' while i > 0 s << @sequence[i.modulo(@base)] i /= @base end s.reverse end |