Sha256: 6c07ad795bf6e7c9eb986e777fd9e4c03a2e5940e9b478e5ed0b447ab994592d

Contents?: true

Size: 774 Bytes

Versions: 1

Compression:

Stored size: 774 Bytes

Contents

require "bx/version"

class Bx
  class ::Integer
    def highest_one_bits
      int = self
      Enumerator.new do |e|
        loop do
          b_len = int.bit_length
          break if b_len == 0
          pos = b_len - 1
          e << pos
          int = int ^ (1 << pos)
        end
      end
    end

    def lowest_one_bits
      int = self
      Enumerator.new do |e|
        off = 0
        loop do
          lowest = int & -int
          break if lowest == 0
          b_len = lowest.bit_length
          off += b_len
          e << off - 1
          int = int >> b_len
        end
      end
    end
  end

  def initialize
    @hash = Hash.new{ |h, k| h[k] = 0 }
  end

  def []=(key, id)
    @hash[key] |= (1 << id)
  end

  def [](key)
    @hash[key]
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bx-0.1.0 lib/bx.rb