ruborithms 0.2.0 → 0.3.0

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
  SHA1:
3
- metadata.gz: 10cd7489ede0df5657b5f23b120d4320fffe8f2e
4
- data.tar.gz: 7f820dbf794f9422e343258e988f630661c3e0c8
3
+ metadata.gz: fcb1af959d7f9e5582758c9ab7a2aa43b09c7fac
4
+ data.tar.gz: 39c1f371e6de97f071f062306de2161f6eccb3bd
5
5
  SHA512:
6
- metadata.gz: b915c0b6d49580899bb594c644bdbd939299101b535f691f510654daf8e513caa0d8ac01aaad880a7b379ce0049f5c272dfff7f84b61bfbb9f54cc548d977c7e
7
- data.tar.gz: bdb98ed962a3a6712cec578d224fb06ed5721a5f01ac34e00ac769465a67301077add14f112827468b6a54382c22e23521235fae5f9752c29d1ee9c5cdeb3c1d
6
+ metadata.gz: 7554268867411a4aaea59515042ccb9c0e4a1f24bf4b3f7574c8a129dc4688225b2a91c9643f918e817d0a4c817d5ee0185714690f0d972100f898ea57eef8e0
7
+ data.tar.gz: 767bf0aba13f50c341ab2cf4bdad01a6567d6c6e4350a5cf61b308082bf126dd8cf9d3d183af76ccf2a6b7268b6732134dbafc79f42aba7744fb73099fd58626
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,8 @@
1
+ Style/Documentation:
2
+ Enabled: false
3
+ Style/SpecialGlobalVars:
4
+ Enabled: false
5
+ Metrics/MethodLength:
6
+ Enabled: false
7
+ Metrics/BlockLength:
8
+ Enabled: false
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,46 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ ruborithms (0.2.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ ast (2.3.0)
10
+ diff-lcs (1.3)
11
+ parser (2.4.0.0)
12
+ ast (~> 2.2)
13
+ powerpack (0.1.1)
14
+ rainbow (2.2.1)
15
+ rspec (3.5.0)
16
+ rspec-core (~> 3.5.0)
17
+ rspec-expectations (~> 3.5.0)
18
+ rspec-mocks (~> 3.5.0)
19
+ rspec-core (3.5.4)
20
+ rspec-support (~> 3.5.0)
21
+ rspec-expectations (3.5.0)
22
+ diff-lcs (>= 1.2.0, < 2.0)
23
+ rspec-support (~> 3.5.0)
24
+ rspec-mocks (3.5.0)
25
+ diff-lcs (>= 1.2.0, < 2.0)
26
+ rspec-support (~> 3.5.0)
27
+ rspec-support (3.5.0)
28
+ rubocop (0.48.1)
29
+ parser (>= 2.3.3.1, < 3.0)
30
+ powerpack (~> 0.1)
31
+ rainbow (>= 1.99.1, < 3.0)
32
+ ruby-progressbar (~> 1.7)
33
+ unicode-display_width (~> 1.0, >= 1.0.1)
34
+ ruby-progressbar (1.8.1)
35
+ unicode-display_width (1.2.1)
36
+
37
+ PLATFORMS
38
+ ruby
39
+
40
+ DEPENDENCIES
41
+ rspec (~> 3.5)
42
+ rubocop (~> 0.48.1)
43
+ ruborithms!
44
+
45
+ BUNDLED WITH
46
+ 1.14.6
data/lib/ruborithms.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'ruborithms/version'
2
2
  require 'ruborithms/algorithms/linear_search'
3
3
  require 'ruborithms/algorithms/binary_search'
4
+ require 'ruborithms/algorithms/selection_sort'
4
5
 
5
6
  module Ruborithms
6
7
  end
@@ -11,17 +11,15 @@ module Ruborithms
11
11
  def binary_search(object, value)
12
12
  min = 0
13
13
  max = object.count - 1
14
- while (max >= min)
14
+ while max >= min
15
15
  avg = ((max + min) / 2).floor
16
- if object[avg] == value
17
- return avg
18
- elsif object[avg] > value
19
- max = avg - 1
16
+ return avg if object[avg] == value
17
+ if object[avg] > value
18
+ max = avg - 1
20
19
  else
21
20
  min = avg + 1
22
21
  end
23
22
  end
24
- nil
25
23
  end
26
24
  end
27
25
 
@@ -1,4 +1,4 @@
1
- module Ruborithms
1
+ module Ruborithms
2
2
  module Algorithms
3
3
  module LinearSearch
4
4
  class << self
@@ -9,9 +9,9 @@ module Ruborithms
9
9
 
10
10
  module ClassMethods
11
11
  def linear_search(object, value)
12
- object.each_with_index do |item, index|
13
- return index if value == item
14
- end
12
+ 0.upto(object.count - 1) do |i|
13
+ return i if value == object[i]
14
+ end; nil
15
15
  end
16
16
  end
17
17
 
@@ -0,0 +1,43 @@
1
+ module Ruborithms
2
+ module Algorithms
3
+ module SelectionSort
4
+ class << self
5
+ def included(mod)
6
+ mod.extend(ClassMethods)
7
+ end
8
+ end
9
+
10
+ module ClassMethods
11
+ def selection_sort(object)
12
+ 0.upto(object.count - 1) do |i|
13
+ min_value_index = find_index_of_min_value(object, i)
14
+ swap(object, i, min_value_index)
15
+ end
16
+ object
17
+ end
18
+
19
+ private
20
+
21
+ def find_index_of_min_value(object, i)
22
+ min_index = i
23
+ min_value = object[i]
24
+ i.upto(object.count - 1) do |j|
25
+ if object[j] < min_value
26
+ min_index = j
27
+ min_value = object[j]
28
+ end
29
+ end
30
+ min_index
31
+ end
32
+
33
+ def swap(object, i, min_index)
34
+ object[i], object[min_index] = object[min_index], object[i]
35
+ end
36
+ end
37
+
38
+ def selection_sort
39
+ self.class.selection_sort(self)
40
+ end
41
+ end
42
+ end
43
+ end
@@ -1,3 +1,3 @@
1
- module Ruborithms
2
- VERSION = '0.2.0'
1
+ module Ruborithms
2
+ VERSION = '0.3.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruborithms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Zinovyev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-11 00:00:00.000000000 Z
11
+ date: 2017-04-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -24,16 +24,35 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.5'
27
- description: Algorithms and data structures built with Ruby
27
+ - !ruby/object:Gem::Dependency
28
+ name: rubocop
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.48.1
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.48.1
41
+ description: Algorithms and data structures implemented in Ruby
28
42
  email: vanyazin@gmail.com
29
43
  executables: []
30
44
  extensions: []
31
45
  extra_rdoc_files: []
32
46
  files:
33
47
  - ".gitignore"
48
+ - ".rspec"
49
+ - ".rubocop.yml"
50
+ - Gemfile
51
+ - Gemfile.lock
34
52
  - lib/ruborithms.rb
35
53
  - lib/ruborithms/algorithms/binary_search.rb
36
54
  - lib/ruborithms/algorithms/linear_search.rb
55
+ - lib/ruborithms/algorithms/selection_sort.rb
37
56
  - lib/ruborithms/version.rb
38
57
  homepage: https://github.com/zinovyev/ruborithms
39
58
  licenses:
@@ -58,5 +77,5 @@ rubyforge_project:
58
77
  rubygems_version: 2.6.8
59
78
  signing_key:
60
79
  specification_version: 4
61
- summary: Algorithms and data structures built with Ruby
80
+ summary: Algorithms and data structures implemented in Ruby
62
81
  test_files: []