range_compacter 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 47dd0003237a006c2b0f3f61b3a06f8996a61e77fd80635f7b534767e5d72a56
4
- data.tar.gz: 5d41cd3a06587b9e34b9ddd9d560b5f2efc408a51e936be282d7c3aa2e2f54e6
3
+ metadata.gz: 7384e9e3d87cc521e3d03888c51c6b25965dc24d9c919442bc9cad551e84c657
4
+ data.tar.gz: 6ec4c0b26b25968884faca67fca460da4eed34374889601d844d10ff461ca328
5
5
  SHA512:
6
- metadata.gz: 9ffba25015c7e2627829727c7d39b95d819d72e33a5595f9abfaed6e3be839658082719fcfe1802915cc9f65a18219cf5c5fbdd29a207478775ab2aa85a2e1dd
7
- data.tar.gz: bf794279dd34098b910c3a7b4dd3df45dd07d8c39bd8cf72b8e3c1078df904fffb68f78368221acef6b76bc60e27070a1f37e8b5718a30fb116ceca2e3bb314d
6
+ metadata.gz: de9ec67b6a37b78d8eb37494bb1a9f798295b8619cff04da85088d996be1a104e282ffa7196cf471b5da535efb3656987ef4cbcf3cce4ab5e588b36c9343351a
7
+ data.tar.gz: 8795303d2e31be1ac6296993ab6792175365e436709c9a1d19edbea3cdf8918d9caf1c360e1d1e6467e2b32d0897f4863dc6a912ec75023f7e86a8882bee3188
@@ -5,3 +5,5 @@ cache: bundler
5
5
  rvm:
6
6
  - 2.6.6
7
7
  before_install: gem install bundler -v 2.0.2
8
+ env:
9
+ - BENCH: true
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- range_compacter (1.0.0)
4
+ range_compacter (1.0.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -10,32 +10,29 @@ module RangeCompacter
10
10
 
11
11
  # Main logic
12
12
  def compact(target_range)
13
- used = []
13
+ result = []
14
14
 
15
- items_in_range = @items.select do |item|
15
+ target_items = @items.select do |item|
16
16
  item.cover?(target_range.begin) || target_range.cover?(item.begin)
17
17
  end.sort_by(&:begin)
18
18
 
19
- items_in_range.each_with_object([]) do |item, result|
20
- next if used.include? item
19
+ target_items.each_with_index do |item, idx|
20
+ next if result.flatten.include?(item)
21
21
 
22
22
  if item.begin <= target_range.begin && item.end >= target_range.end
23
23
  result << item
24
- used << item
25
24
  else
26
- item_to_compact = items_in_range.find do |i|
27
- item.end <= i.begin && !used.include?(i)
25
+ item_to_compact = target_items[idx..].bsearch do |i|
26
+ item.end <= i.begin && !result.flatten.include?(i)
28
27
  end
29
28
  if item_to_compact
30
29
  result << [item, item_to_compact]
31
- used << item_to_compact
32
30
  else
33
31
  result << item
34
32
  end
35
- used << item
36
33
  end
37
- result
38
34
  end
35
+ result
39
36
  end
40
37
  end
41
38
  end
@@ -1,3 +1,3 @@
1
1
  module RangeCompacter
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: range_compacter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - OKURA Masafumi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-27 00:00:00.000000000 Z
11
+ date: 2020-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler