Sha256: 1d1ba28257d07d4b2b9d92b64dee689f0f25877928acde6ecde18df14b26fc4e
Contents?: true
Size: 1.45 KB
Versions: 1
Compression:
Stored size: 1.45 KB
Contents
require 'radix/base' module Radix # class Number < Numeric attr :digits attr :base def initialize(value, base) case value when ::Array @digits = value when ::String @digits = value.to_s.split(//).map{ |e| Radix.convert(e, base, 10).to_i } when ::Numeric @digits = value.to_s.split(//).map{ |e| e.to_i } end @base = base end def +(other) operation(:+, other) end def -(other) operation(:-, other) end def *(other) operation(:*, other) end def /(other) operation(:/, other) end def ==(other) case other when Radix::Number if base == other.base digits == other.digits else digits == other.convert(base).digits end else end end # def convert(new_base) new_digits = Radix::Base.convert_base(digits, base, new_base) self.class.new(new_digits, new_base) end private def operation(op, other) case other when Radix::Number s = Radix::Base.convert_base(self.digits , self.base , 10) o = Radix::Base.convert_base(other.digits, other.base, 10) s = s.join.to_i o = o.join.to_i r = s.__send__(op, o) r = r.to_s.split(//).map{ |e| e.to_i } n = Radix::Base.convert_base(r, 10, self.base) Radix::Number.new(n, self.base) else end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
radix-1.1.0 | lib/radix/number.rb |