ruby-heap 1.0.2 → 1.0.4
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 +5 -5
- data/.gitignore +1 -1
- data/.tool-versions +1 -0
- data/Gemfile.lock +22 -0
- data/Heap.gemspec +2 -4
- data/README.md +10 -12
- data/README_ru.md +131 -0
- data/lib/Heap/version.rb +1 -1
- metadata +20 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a75592e069ff9bc6d12e7c4edd27c564a49a17c8f60e13a40bb53a79c533a2f8
|
4
|
+
data.tar.gz: 243c19ac2859deddf570ab38ebd1f6c9d8962f482f69f7a114117a9590035bd9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2895bb61d6f02985c73fe5c392f6781c28797c04f42335d421e3b909055446cdb3f4e968ca85671ad07eaac8d996de988efce9406add86b91b9fff573b6e7649
|
7
|
+
data.tar.gz: cf5588e1671b4e6b2bb93821d937680bb441520e9a1818e42499a770a192dbff265decede40fadd284760420eddd4371db11936129f5ba61c7e3eceef2aa9189
|
data/.gitignore
CHANGED
data/.tool-versions
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby 2.7.1
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
ruby-heap (1.0.2)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
minitest (5.14.4)
|
10
|
+
rake (13.0.6)
|
11
|
+
|
12
|
+
PLATFORMS
|
13
|
+
x86_64-darwin-20
|
14
|
+
|
15
|
+
DEPENDENCIES
|
16
|
+
bundler (>= 2.2.10)
|
17
|
+
minitest (~> 5.0)
|
18
|
+
rake (~> 13.0)
|
19
|
+
ruby-heap!
|
20
|
+
|
21
|
+
BUNDLED WITH
|
22
|
+
2.2.29
|
data/Heap.gemspec
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
1
|
lib = File.expand_path('../lib', __FILE__)
|
4
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
3
|
require 'Heap/version'
|
@@ -21,7 +19,7 @@ Gem::Specification.new do |spec|
|
|
21
19
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
20
|
spec.require_paths = ['lib']
|
23
21
|
|
24
|
-
spec.add_development_dependency 'bundler', '~>
|
25
|
-
spec.add_development_dependency 'rake', '~>
|
22
|
+
spec.add_development_dependency 'bundler', '~> 2.2', '>= 2.2.10'
|
23
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
26
24
|
spec.add_development_dependency 'minitest', '~> 5.0'
|
27
25
|
end
|
data/README.md
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
[](https://badge.fury.io/rb/ruby-heap)
|
2
|
+
[](https://rubygems.org/gems/ruby-heap)
|
3
|
+
[](https://travis-ci.org/pups3s/ruby-heap)
|
2
4
|
[](https://codeclimate.com/github/pups3s/ruby-heap)
|
3
|
-
# Heap (ruby heapsort)
|
4
5
|
|
5
|
-
|
6
|
+
[Русская версия](README_ru.md)
|
7
|
+
|
8
|
+
# Heap (ruby heapsort)
|
9
|
+
Gem is using for making Heaps.
|
6
10
|
|
7
11
|
## Installation
|
8
12
|
|
@@ -76,10 +80,10 @@ b_heap.sort # [3, 2, 1, -1]
|
|
76
80
|
# Count of elements in Heap
|
77
81
|
b_heap.count # 4
|
78
82
|
|
79
|
-
# Return
|
83
|
+
# Return max element without removing from Heap
|
80
84
|
b_heap.extract_max # 3
|
81
85
|
|
82
|
-
# Return
|
86
|
+
# Return max element and remove it from Heap
|
83
87
|
b_heap.extract_max! # 3
|
84
88
|
b_heap.count # 3
|
85
89
|
b_heap.elements # [2, -1, 1]
|
@@ -120,17 +124,11 @@ min_heap = Heap::MultipleHeap::MinHeap.new(5, [10, 20, 30])
|
|
120
124
|
max_heap = Heap::MultipleHeap::MaxHeap.new(7)
|
121
125
|
```
|
122
126
|
|
123
|
-
## Development
|
124
|
-
|
125
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
126
|
-
|
127
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
128
|
-
|
129
127
|
## Contributing
|
130
128
|
|
131
|
-
Bug reports and pull requests are welcome on GitHub at [Project page](https://github.com/pups3s/ruby-heap).
|
129
|
+
Bug reports and pull requests are welcome on GitHub at [Project page](https://github.com/pups3s/ruby-heap).
|
132
130
|
|
133
131
|
|
134
132
|
## License
|
135
133
|
|
136
|
-
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
134
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/README_ru.md
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
[](https://badge.fury.io/rb/ruby-heap)
|
2
|
+
[](https://codeclimate.com/github/pups3s/ruby-heap)
|
3
|
+
# Heap (ruby сортировка кучей)
|
4
|
+
Библиотека используется для создания бинарной или d-ичной кучи (Heap).
|
5
|
+
|
6
|
+
## Установка
|
7
|
+
|
8
|
+
Добавьте данную строчку в Gemfile Вашего приложения:
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
gem 'ruby-heap'
|
12
|
+
```
|
13
|
+
|
14
|
+
Затем выполните:
|
15
|
+
|
16
|
+
$ bundle
|
17
|
+
|
18
|
+
Или установите библиотеку отдельно, выполнив:
|
19
|
+
|
20
|
+
$ gem install ruby-heap
|
21
|
+
|
22
|
+
## Использование
|
23
|
+
|
24
|
+
### Двоичные кучи
|
25
|
+
|
26
|
+
#### Двоичная куча с минимальным корнем
|
27
|
+
Во время инициализации (и после создания кучи) Вы можете добавить в нее любые сравниваемые объекты (не только числа).
|
28
|
+
Используемые объекты должны иметь функции сравнения (>, >=, <, <=).
|
29
|
+
```ruby
|
30
|
+
require 'Heap'
|
31
|
+
|
32
|
+
# Инициализация
|
33
|
+
b_heap = Heap::BinaryHeap::MinHeap.new([2, 3, 1, -1])
|
34
|
+
|
35
|
+
# Получение элементов кучи (доступ только для чтения)
|
36
|
+
b_heap.elements # [-1, 1, 3, 2]
|
37
|
+
|
38
|
+
# Получение отсортированных элементов кучи без
|
39
|
+
# изменения её элементов
|
40
|
+
b_heap.sort # [-1, 1, 2, 3]
|
41
|
+
|
42
|
+
# Количество элементов в куче
|
43
|
+
b_heap.count # 4
|
44
|
+
|
45
|
+
# Получение минимального элемента без удаления его из кучи
|
46
|
+
b_heap.extract_min # -1
|
47
|
+
|
48
|
+
# Получение минимального элемента и его удаление из кучи
|
49
|
+
b_heap.extract_min! # -1
|
50
|
+
b_heap.count # 3
|
51
|
+
b_heap.elements # [1, 2, 3]
|
52
|
+
|
53
|
+
# Также Вы можете добавить новые элементы с помощью
|
54
|
+
# функции add
|
55
|
+
b_heap.add -1
|
56
|
+
b_heap.elements # [-1, 1, 3, 2]
|
57
|
+
b_heap.add [0, 9, 200, -15, 6]
|
58
|
+
b_heap.elements # [-15, -1, 3, 0, 1, 9, 200, 2, 6]
|
59
|
+
b_heap.sort # [-15, -1, 0, 1, 2, 3, 6, 9, 200]
|
60
|
+
```
|
61
|
+
|
62
|
+
#### Те же действия с кучей (с максимальным корнем)
|
63
|
+
```ruby
|
64
|
+
require 'Heap'
|
65
|
+
|
66
|
+
# Инициализация
|
67
|
+
b_heap = Heap::BinaryHeap::MaxHeap.new([2, 3, 1, -1])
|
68
|
+
|
69
|
+
# Получение элементов кучи (доступ только для чтения)
|
70
|
+
b_heap.elements # [3, 2, 1, -1]
|
71
|
+
|
72
|
+
# Получение отсортированных элементов кучи без
|
73
|
+
# изменения её элементов
|
74
|
+
b_heap.sort # [3, 2, 1, -1]
|
75
|
+
|
76
|
+
# Количество элементов в куче
|
77
|
+
b_heap.count # 4
|
78
|
+
|
79
|
+
# Получение максимального элемента без удаления его из кучи
|
80
|
+
b_heap.extract_max # 3
|
81
|
+
|
82
|
+
# Получение максимального элемента и его удаление из кучи
|
83
|
+
b_heap.extract_max! # 3
|
84
|
+
b_heap.count # 3
|
85
|
+
b_heap.elements # [2, -1, 1]
|
86
|
+
|
87
|
+
# Также Вы можете добавить новые элементы с помощью
|
88
|
+
# функции add
|
89
|
+
b_heap.add -1
|
90
|
+
b_heap.elements # [2, -1, 1, -1]
|
91
|
+
b_heap.add [0, 9, 200, -15, 6]
|
92
|
+
b_heap.elements # [200, 6, 9, 0, -1, 1, 2, -15, -1]
|
93
|
+
b_heap.sort # [200, 9, 6, 2, 1, 0, -1, -1, -15]
|
94
|
+
```
|
95
|
+
|
96
|
+
#### Слияние куч
|
97
|
+
```ruby
|
98
|
+
require 'Heap'
|
99
|
+
|
100
|
+
# Инициализация
|
101
|
+
min_heap = Heap::BinaryHeap::MinHeap.new [1, 2, 3]
|
102
|
+
max_heap = Heap::BinaryHeap::MaxHeap.new [9, -1, 4]
|
103
|
+
|
104
|
+
# Слияние
|
105
|
+
min_heap.add max_heap
|
106
|
+
|
107
|
+
min_heap.count # 6
|
108
|
+
min_heap.sort # [-1, 1, 2, 3, 4, 9]
|
109
|
+
```
|
110
|
+
|
111
|
+
### Многомерные кучи
|
112
|
+
|
113
|
+
Многомерные (d-ичные) кучи имеют **те же методы, что и бинарные**. Однако, отличается инициализация:
|
114
|
+
|
115
|
+
```ruby
|
116
|
+
require 'Heap'
|
117
|
+
|
118
|
+
# Первый параметр - измерение кучи (d)
|
119
|
+
# Второй параметр опционален и может содержать первые элементы в куче
|
120
|
+
min_heap = Heap::MultipleHeap::MinHeap.new(5, [10, 20, 30])
|
121
|
+
max_heap = Heap::MultipleHeap::MaxHeap.new(7)
|
122
|
+
```
|
123
|
+
|
124
|
+
## Вклад в проект
|
125
|
+
|
126
|
+
**Баг репорты** и **pull реквесты** приветствуются на GitHub [Страница проекта](https://github.com/pups3s/ruby-heap).
|
127
|
+
|
128
|
+
|
129
|
+
## Лицензия
|
130
|
+
|
131
|
+
Библиотека является open source и регламентируется [MIT License](http://opensource.org/licenses/MIT).
|
data/lib/Heap/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-heap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexandr Sysoev
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,28 +16,34 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.2'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 2.2.10
|
20
23
|
type: :development
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
27
|
- - "~>"
|
25
28
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
29
|
+
version: '2.2'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 2.2.10
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: rake
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - "~>"
|
32
38
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
39
|
+
version: '13.0'
|
34
40
|
type: :development
|
35
41
|
prerelease: false
|
36
42
|
version_requirements: !ruby/object:Gem::Requirement
|
37
43
|
requirements:
|
38
44
|
- - "~>"
|
39
45
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
46
|
+
version: '13.0'
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
48
|
name: minitest
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,7 +58,7 @@ dependencies:
|
|
52
58
|
- - "~>"
|
53
59
|
- !ruby/object:Gem::Version
|
54
60
|
version: '5.0'
|
55
|
-
description:
|
61
|
+
description:
|
56
62
|
email:
|
57
63
|
- sanchous.ok@gmail.com
|
58
64
|
executables: []
|
@@ -60,11 +66,14 @@ extensions: []
|
|
60
66
|
extra_rdoc_files: []
|
61
67
|
files:
|
62
68
|
- ".gitignore"
|
69
|
+
- ".tool-versions"
|
63
70
|
- ".travis.yml"
|
64
71
|
- Gemfile
|
72
|
+
- Gemfile.lock
|
65
73
|
- Heap.gemspec
|
66
74
|
- LICENSE.txt
|
67
75
|
- README.md
|
76
|
+
- README_ru.md
|
68
77
|
- Rakefile
|
69
78
|
- bin/console
|
70
79
|
- bin/setup
|
@@ -81,7 +90,7 @@ homepage: https://github.com/pups3s/ruby-heap
|
|
81
90
|
licenses:
|
82
91
|
- MIT
|
83
92
|
metadata: {}
|
84
|
-
post_install_message:
|
93
|
+
post_install_message:
|
85
94
|
rdoc_options: []
|
86
95
|
require_paths:
|
87
96
|
- lib
|
@@ -96,9 +105,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
96
105
|
- !ruby/object:Gem::Version
|
97
106
|
version: '0'
|
98
107
|
requirements: []
|
99
|
-
|
100
|
-
|
101
|
-
signing_key:
|
108
|
+
rubygems_version: 3.1.2
|
109
|
+
signing_key:
|
102
110
|
specification_version: 4
|
103
111
|
summary: Binary or multiple heap
|
104
112
|
test_files: []
|