range_compacter 1.0.0 → 1.0.1

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: 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