victory 0.0.3 → 0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a5e64928d031b6be133644fd849867f1d46e75f7e0108be66a67cf467c0f9c9a
4
- data.tar.gz: d3c34f8ce085866f68156fcd74511e4cbf291a45bccb9806d97cbbea31c0a61d
3
+ metadata.gz: b16cdc713345fce798e6fc148c348cac1b0f0d0e0e108c9fa5d57f6ea1c287af
4
+ data.tar.gz: 8ea12344ad30454d80bf0117ed4473fe760f7cbd30aac7731e0d6fc9d5f81696
5
5
  SHA512:
6
- metadata.gz: ddf907234d226d92f3c8ff17718d7815b29867a65bcb2c80421b875d5d2f66d90078257c67fd38df838c38b49e983b7b4448a347873220ccb22ca90d309add98
7
- data.tar.gz: c1571c770798a8f97b1ae258876a5913c20c26d6cd66035ee2e9666407811005ef93b54bcd6163938965f24babf5d05c0f407ca34502d5f57e6764c59e6b3f7c
6
+ metadata.gz: 674bec3c86ced7d31427151b8988970c0f7cf79d061f0c1a3c28f7ee5474ffd8db4694b2125ed4d26131ce869e16f1db0e897526a5db62f3b597bb9dda9ca9b5
7
+ data.tar.gz: e4b93c1c9809b4c094f847392d9b4caf08277afb9dcacfe1c166c513bbd5991a025800f54d0d48fe10a7f1d63878cbf827636c47189433882802dd7f399dbaeb
data/USAGE.md CHANGED
@@ -10,6 +10,7 @@ In this markdown you will see the usage of all the datastructures and algorithms
10
10
  * [Struct](#struct)
11
11
  * [OpenStruct](#openstruct)
12
12
  * [Tuple](#tuple)
13
+ * [Graph](#graph)
13
14
 
14
15
  <a name="array" />
15
16
 
@@ -137,6 +138,8 @@ x
137
138
  # => #<OpenStruct a=0, b=123>
138
139
  ```
139
140
 
141
+ For the following datastructures you will need to include `Containers` or prefix every container with it.
142
+
140
143
  <a name="tuple" />
141
144
 
142
145
  ## Tuple
@@ -153,6 +156,24 @@ t[2]
153
156
  # => 2
154
157
  ```
155
158
 
159
+ <a name="graph" />
160
+
161
+ ## Graph
162
+
163
+ ### Graph (undirected)
164
+ ```ruby
165
+ g = Graph[1,2, 2,3, 2,4]
166
+ g.to_s
167
+ # => "(1=2)(2=3)(2=4)"
168
+ ```
169
+
170
+ ### Directed Graph
171
+ ```ruby
172
+ dg = DirectedGraph[1,2 ,2,3 ,2,4, 4,5, 6,4, 1,6]
173
+ dg.to_s
174
+ # => "(1-2)(1-6)(2-3)(2-4)(4-5)(6-4)"
175
+ ```
176
+
156
177
  # Other useful links
157
178
 
158
179
  * https://github.com/kumar91gopi/Algorithms-and-Data-Structures-in-Ruby/
@@ -1,81 +1,83 @@
1
- class List
2
- Node = Struct.new(:data, :prev, :next)
3
- def initialize
4
- @first = nil
5
- @last = nil
6
- end
7
-
8
- def self.[](*arr)
9
- from_a(arr)
10
- end
1
+ module Containers
2
+ class List
3
+ Node = Struct.new(:data, :prev, :next)
4
+ def initialize
5
+ @first = nil
6
+ @last = nil
7
+ end
11
8
 
12
- def self.from_a(arr)
13
- l = new
14
- arr.each(&l.method(:push_front))
15
- l
16
- end
9
+ def self.[](*arr)
10
+ from_a(arr)
11
+ end
17
12
 
18
- def empty?
19
- @first == @last && @first.nil?
20
- end
13
+ def self.from_a(arr)
14
+ l = new
15
+ arr.each(&l.method(:push_front))
16
+ l
17
+ end
21
18
 
22
- def push_front(element)
23
- node = Node.new(element, nil, @first)
24
- if @first.nil?
25
- @last = node
26
- else
27
- @first.prev = node
19
+ def empty?
20
+ @first == @last && @first.nil?
28
21
  end
29
- @first = node
30
- end
31
22
 
32
- def pop_front
33
- to_return = @first&.data
34
- unless @first.nil?
35
- @first = @first.next
23
+ def push_front(element)
24
+ node = Node.new(element, nil, @first)
36
25
  if @first.nil?
37
- @last = nil
26
+ @last = node
38
27
  else
39
- @first.prev = nil unless @first.nil?
28
+ @first.prev = node
40
29
  end
30
+ @first = node
41
31
  end
42
- to_return
43
- end
44
32
 
45
- def push_back(element)
46
- node = Node.new(element, @last, nil)
47
- if @last.nil?
48
- @first = node
49
- else
50
- @last.next = node
33
+ def pop_front
34
+ to_return = @first&.data
35
+ unless @first.nil?
36
+ @first = @first.next
37
+ if @first.nil?
38
+ @last = nil
39
+ else
40
+ @first.prev = nil unless @first.nil?
41
+ end
42
+ end
43
+ to_return
51
44
  end
52
- @last = node
53
- end
54
45
 
55
- def pop_back
56
- to_return = @last&.data
57
- unless @last.nil?
58
- @last = @last.prev
46
+ def push_back(element)
47
+ node = Node.new(element, @last, nil)
59
48
  if @last.nil?
60
- @first = nil
49
+ @first = node
61
50
  else
62
- @last.next = nil unless @last.nil?
51
+ @last.next = node
63
52
  end
53
+ @last = node
64
54
  end
65
- to_return
66
- end
67
55
 
68
- def peek_front
69
- @first&.data
70
- end
56
+ def pop_back
57
+ to_return = @last&.data
58
+ unless @last.nil?
59
+ @last = @last.prev
60
+ if @last.nil?
61
+ @first = nil
62
+ else
63
+ @last.next = nil unless @last.nil?
64
+ end
65
+ end
66
+ to_return
67
+ end
71
68
 
72
- def peek_back
73
- @last&.data
74
- end
69
+ def peek_front
70
+ @first&.data
71
+ end
75
72
 
76
- alias push push_back
77
- alias pop pop_back
78
- alias unshift push_front
79
- alias shift pop_front
80
- end
81
- L = List
73
+ def peek_back
74
+ @last&.data
75
+ end
76
+
77
+ alias push push_back
78
+ alias pop pop_back
79
+ alias unshift push_front
80
+ alias shift pop_front
81
+ end
82
+ L = List
83
+ end
@@ -1,61 +1,61 @@
1
- require 'containers/list'
2
-
3
- class PrefixTree
4
- class Node
5
- attr_accessor :data, :children
1
+ module Containers
2
+ class PrefixTree
3
+ class Node
4
+ attr_accessor :data, :children
5
+
6
+ def initialize
7
+ @data = nil
8
+ @children = {}
9
+ end
10
+ end
6
11
 
7
12
  def initialize
8
- @data = nil
9
- @children = {}
13
+ @root = Node.new
10
14
  end
11
- end
12
15
 
13
- def initialize
14
- @root = Node.new
15
- end
16
-
17
- def <<(str, value = true)
18
- insert(str, value)
19
- end
16
+ def <<(str, value = true)
17
+ insert(str, value)
18
+ end
20
19
 
21
- def insert(str, value = true)
22
- current = @root
23
- str.each_char do |c|
24
- current.children[c] = Node.new if current.children[c].nil?
25
- current = current.children[c]
20
+ def insert(str, value = true)
21
+ current = @root
22
+ str.each_char do |c|
23
+ current.children[c] = Node.new if current.children[c].nil?
24
+ current = current.children[c]
25
+ end
26
+ current.data = value
26
27
  end
27
- current.data = value
28
- end
29
28
 
30
- def [](str)
31
- find(str)
32
- end
29
+ def [](str)
30
+ find(str)
31
+ end
33
32
 
34
- def find(str)
35
- current = @root
36
- str.each_char do |c|
37
- return nil if current.children[c].nil?
33
+ def find(str)
34
+ current = @root
35
+ str.each_char do |c|
36
+ return nil if current.children[c].nil?
38
37
 
39
- current = current.children[c]
38
+ current = current.children[c]
39
+ end
40
+ current.data
40
41
  end
41
- current.data
42
- end
43
42
 
44
- def count_partial(str)
45
- current = @root
46
- str.each_char do |c|
47
- return 0 if current.children[c].nil?
43
+ def count_partial(str)
44
+ current = @root
45
+ str.each_char do |c|
46
+ return 0 if current.children[c].nil?
48
47
 
49
- current = current.children[c]
50
- end
51
- stack = List.new
52
- count = 0
53
- current.children.each_value(&stack.method(:push))
54
- until stack.empty?
55
- current = stack.pop
56
- count += 1 unless current.data.nil?
48
+ current = current.children[c]
49
+ end
50
+ stack = List.new
51
+ count = 0
57
52
  current.children.each_value(&stack.method(:push))
53
+ until stack.empty?
54
+ current = stack.pop
55
+ count += 1 unless current.data.nil?
56
+ current.children.each_value(&stack.method(:push))
57
+ end
58
+ count
58
59
  end
59
- count
60
60
  end
61
61
  end
@@ -1,20 +1,26 @@
1
- class Tuple
2
- @elements = []
3
- def self.[](*elements)
4
- new(elements)
5
- end
1
+ module Containers
2
+ class Tuple
3
+ @elements = []
4
+ def self.[](*elements)
5
+ new(elements)
6
+ end
6
7
 
7
- def initialize(elements)
8
- @elements = elements
9
- end
8
+ def initialize(elements)
9
+ @elements = elements
10
+ end
10
11
 
11
- def [](idx)
12
- @elements[idx]
13
- end
12
+ def [](idx)
13
+ @elements[idx]
14
+ end
15
+
16
+ def to_a
17
+ @elements.to_a
18
+ end
14
19
 
15
- def to_a
16
- @elements.to_a
20
+ def to_s
21
+ "(#{@elements.join(',')})"
22
+ end
17
23
  end
18
- end
19
24
 
20
- T = Tuple
25
+ T = Tuple
26
+ end
@@ -0,0 +1,29 @@
1
+ require 'rgl/adjacency'
2
+ require 'rgl/base'
3
+ require 'rgl/bellman_ford'
4
+ require 'rgl/bidirectional'
5
+ require 'rgl/bipartite'
6
+ require 'rgl/condensation'
7
+ require 'rgl/connected_components'
8
+ require 'rgl/dijkstra'
9
+ require 'rgl/dijkstra_visitor'
10
+ require 'rgl/dot'
11
+ require 'rgl/edge_properties_map'
12
+ require 'rgl/edmonds_karp'
13
+ require 'rgl/graph_iterator'
14
+ require 'rgl/graph_visitor'
15
+ require 'rgl/graph_wrapper'
16
+ require 'rgl/graphxml'
17
+ require 'rgl/implicit'
18
+ require 'rgl/mutable'
19
+ require 'rgl/path_builder'
20
+ require 'rgl/prim'
21
+ require 'rgl/rdot'
22
+ require 'rgl/topsort'
23
+ require 'rgl/transitiv_closure'
24
+ require 'rgl/transitivity'
25
+ require 'rgl/traversal'
26
+
27
+ Containers::Graph = RGL::AdjacencyGraph
28
+ Containers::DirectedGraph = RGL::DirectedAdjacencyGraph
29
+ Containers::ImplicitGraph = RGL::ImplicitGraph
@@ -1,3 +1,3 @@
1
1
  module Victory
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/victory.gemspec CHANGED
@@ -39,5 +39,6 @@ Gem::Specification.new do |spec|
39
39
  spec.add_development_dependency 'rake', '~> 10.0'
40
40
  spec.add_development_dependency 'rake-compiler'
41
41
  spec.add_development_dependency 'require_all'
42
+ spec.add_development_dependency 'rgl', '~> 0.5.4'
42
43
  spec.add_development_dependency 'rspec'
43
44
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: victory
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arnold Szederjesi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-03-13 00:00:00.000000000 Z
11
+ date: 2019-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rgl
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.5.4
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.5.4
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: rspec
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -151,6 +165,7 @@ files:
151
165
  - lib/containers/suffix_array.rb
152
166
  - lib/containers/trie.rb
153
167
  - lib/containers/tuple.rb
168
+ - lib/include_rgl.rb
154
169
  - lib/victory.rb
155
170
  - lib/victory/version.rb
156
171
  - victory.gemspec