xor_reverse_bitswap 0.1.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d1f93033512a439e8fb22494b9142a0cebb1a0a01e1b98a77663d88b86ad9210
4
- data.tar.gz: 385dc2881b5e581e456e44351c4a85858ae53702e32531c996087fe391599c0f
3
+ metadata.gz: 3c4f84e853e259548cdee96fa12ec29414e9eae0760d53d64103821927787e7a
4
+ data.tar.gz: c0b8c0133120a5aa99336c13a320e376d3e35e9b5d7fc6b9785409d5daca563c
5
5
  SHA512:
6
- metadata.gz: 5b7aaa5d691f45fe01096d576795f423892b1c6949a9060ab16470b693a6f5c0d7f997fee31805f814af648e3942236b60d3bcacb2ef30fbe19d8b4c8b90d427
7
- data.tar.gz: f4127f207273af8a9d020e07c3138510bb41f0eed44303de3fed27d44d91280557b671f713d9db155ed3e13a5214f0baab358b9882ca2c7ab6c73513f3e94639
6
+ metadata.gz: 985581c86d84420a7078b9cbbd4fd4ce49411c8eadd7ea23119efaa1ff29883623492facc28b20b276e3590c5a237694a32c32f058f6c22592c74c642ec23a9a
7
+ data.tar.gz: bb5355721632e1f44340bb658820fb5e1aed3dc4f8c185e00f68f751d39a1f22b914addd0e0e0d8e363163b2c0b4c56ffc899776c7c176c554b679c911e53900
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- xor_reverse_bitswap (0.1.0)
4
+ xor_reverse_bitswap (0.3.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module XorReverseBitswap
4
- VERSION = "0.1.0"
4
+ VERSION = "0.3.0"
5
5
  end
@@ -21,17 +21,30 @@ module XorReverseBitswap
21
21
 
22
22
  def self.ranger(start_range:, end_range:, step_size: 1)
23
23
  range_size = (end_range - start_range) / step_size
24
- offset = (end_range - start_range)
25
24
  raise "range_size must be full 1s binary" unless range_size.to_s(2).count("0").zero?
26
25
 
27
26
  bit_range_size = range_size.to_s(2).size
28
- (1..range_size).map do |n|
29
- value = (n ^ range_size).to_s(2).rjust(bit_range_size, "0").reverse.to_i(2)
30
- Range.new(
31
- offset + (value * step_size),
32
- offset + ((value + 1) * step_size)
33
- ).tap do |r|
34
- raise "range #{r} is out of bounds" unless (start_range..end_range).cover?(r)
27
+ if step_size > 1
28
+ (0..range_size).lazy.map do |n|
29
+ value = (n ^ range_size).to_s(2).rjust(bit_range_size, "0").reverse.to_i(2)
30
+ [
31
+ start_range + (value * step_size),
32
+ start_range + ((value + 1) * step_size) - 1
33
+ ].tap do |r1, r2|
34
+ raise "range #{r1} is out of bounds" unless (start_range..end_range).cover?(r1)
35
+ raise "range #{r2} is out of bounds" unless (start_range..end_range).cover?(r2)
36
+ end
37
+ end
38
+ else
39
+ (1..range_size).lazy.map do |n|
40
+ value = (n ^ range_size).to_s(2).rjust(bit_range_size, "0").reverse.to_i(2)
41
+ [
42
+ start_range + (value * step_size),
43
+ start_range + ((value + 1) * step_size)
44
+ ].tap do |r1, r2|
45
+ raise "range #{r1} is out of bounds" unless (start_range..end_range).cover?(r1)
46
+ raise "range #{r2} is out of bounds" unless (start_range..end_range).cover?(r2)
47
+ end
35
48
  end
36
49
  end
37
50
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xor_reverse_bitswap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patryk Ptasinski