zadt 0.1.7 → 0.1.8
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 +4 -4
- data/README.md +25 -3
- data/lib/zadt/AbstractDataTypes/ADT.rb +1 -1
- data/lib/zadt/AbstractDataTypes/Graph/edge.rb +0 -22
- data/lib/zadt/AbstractDataTypes/Graph/face.rb +0 -20
- data/lib/zadt/AbstractDataTypes/Graph/face_graph.rb +26 -30
- data/lib/zadt/AbstractDataTypes/Graph/graph.rb +13 -12
- data/lib/zadt/AbstractDataTypes/Graph/vertex.rb +2 -37
- data/lib/zadt/version.rb +1 -1
- data/zadt.gemspec +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 14d5d23662aa56e1c863e096a68657364b276574
|
4
|
+
data.tar.gz: 10f4b9da70a96defbe4c75c2c4920b09a3dab714
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40eb3b8f4ab8ae3fa098838ba4416ef035c1f1bedd8bd5fa7aefb77f7fccc5dbe4d4853446c9f9a2569e8624cd361944f07f0b8c721dad03385d88d1646358f6
|
7
|
+
data.tar.gz: cf59f864501efdc60b3388e337afddfcf4cc0bb0abac48127871715785590cbd81591899cb807b80b8f0571da69ad9df4b6e06c5cab9366f3cdd14451d418788
|
data/README.md
CHANGED
@@ -22,7 +22,7 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
Zadt::ADT::help will return a list of objects in the collection, as well as a brief description of each type.
|
24
24
|
|
25
|
-
I also made a "help" function for each Data Type. Type Zadt::StackQueue.help get a list of
|
25
|
+
I also made a "help" function for each Data Type. Type Zadt::StackQueue.help get a list of methods for the StackQueue, and so on.
|
26
26
|
|
27
27
|
And don't forget to require 'zadt' at the top!
|
28
28
|
|
@@ -32,11 +32,33 @@ A MinMaxStackQueue is an Queue object that allows the minimum and maximum values
|
|
32
32
|
|
33
33
|
Since it is made out of Queues and Stacks, those data types are also available. I also provided StackQueue (functionally the same as a Queue), and a MinMaxStack, which is a Stack version of MinMaxStackQueue.
|
34
34
|
|
35
|
-
###
|
35
|
+
### Graphs
|
36
36
|
|
37
37
|
A Graph is a data type that consists of Vertices, which are connected by Edges. In addition, a FaceGraph is a Graph which also consists of Faces: the space defined inside a set of cyclic edges.
|
38
38
|
|
39
|
-
I'm still working on the exact functionality of FaceGraph, since I mainly built it to use for a different project, but it should still prove useful for certain situations. If you have any suggestions of useful bits to add, feel free to contact me
|
39
|
+
I'm still working on the exact functionality of FaceGraph, since I mainly built it to use for a different project, but it should still prove useful for certain situations. If you have any suggestions of useful bits to add, feel free to contact me!
|
40
|
+
|
41
|
+
Below are the specifics of such data types.
|
42
|
+
|
43
|
+
#### Graph
|
44
|
+
|
45
|
+
A Graph has the following methods
|
46
|
+
* add_vertex, adds a vertex to your graph
|
47
|
+
* remove_vertex(vertex), removes the given vertex from the graph (vertex must not be connected)
|
48
|
+
* make_connection(v1,v2), adds an edge between two vertices
|
49
|
+
* break_connection(v1,v2), removes an edge between two vertices
|
50
|
+
* find_connection(v1,v2), returns edge connecting two given vertices
|
51
|
+
* is_connected?(v1,v2), returns true if the two vertices are connected with an edge, false otherwise
|
52
|
+
|
53
|
+
#### FaceGraph
|
54
|
+
|
55
|
+
A FaceGraph has the following methods, in addition to its inheritance from Graph
|
56
|
+
* add_face(edges_array), makes a face with the given edges (must be cyclicly connected)
|
57
|
+
* make_original_face(num_edges), which makes a standard disconnected face
|
58
|
+
* add_attached_face(vertex_array, num_edges), which adds a face connected to the vertex_array
|
59
|
+
* find_neighbors(vertex_array), lists all faces containing the given vertices
|
60
|
+
* find_face_neighbors(face), which finds all neighbors of the given face. A neighbor of a face is defined as one that shares a vertex (not necessarily an edge)
|
61
|
+
* make_vertex_line(vertex_array), reorders a list of connected vertices by connection sequence
|
40
62
|
|
41
63
|
## Development
|
42
64
|
|
@@ -16,7 +16,7 @@ module Zadt
|
|
16
16
|
puts "-FaceGraph, a sub-class of Graph which includes Faces"
|
17
17
|
puts "--Face, a space surrounded by a cycle of Edges. Consists of Vertices and the Edges connecting them"
|
18
18
|
puts ""
|
19
|
-
puts "Each data type also has a help function. Type Zadt::Stack::help
|
19
|
+
puts "Each data type also has a help function. Type Zadt::Stack::help for a list of Stack methods, and so on for each data type."
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
module Zadt
|
2
1
|
class Edge
|
3
2
|
# Made up of a
|
4
3
|
attr_reader :connection
|
@@ -9,29 +8,8 @@ module Zadt
|
|
9
8
|
@value = value
|
10
9
|
end
|
11
10
|
|
12
|
-
def self.methods
|
13
|
-
self.help
|
14
|
-
end
|
15
|
-
|
16
|
-
|
17
11
|
def inspect
|
18
12
|
@connection.to_s
|
19
13
|
end
|
20
14
|
|
21
|
-
def help
|
22
|
-
self.help
|
23
|
-
end
|
24
|
-
|
25
|
-
def methods
|
26
|
-
help
|
27
|
-
end
|
28
|
-
|
29
|
-
def self.help
|
30
|
-
puts "Edge has one method:"
|
31
|
-
puts "#connection, which returns the vertices the edge connects"
|
32
|
-
end
|
33
|
-
|
34
|
-
private
|
35
|
-
|
36
15
|
end
|
37
|
-
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
# require_relative 'vertex.rb'
|
2
2
|
# require_relative 'edge.rb'
|
3
|
-
module Zadt
|
4
3
|
class Face
|
5
4
|
attr_reader :edges, :vertices, :neighboring_faces
|
6
5
|
# Contains
|
@@ -16,24 +15,6 @@ module Zadt
|
|
16
15
|
end
|
17
16
|
|
18
17
|
# TODO: Neighbors shouldn't be stored in Face, as FaceGraph takes care of this
|
19
|
-
def self.help
|
20
|
-
puts "Here are the functions for Face:"
|
21
|
-
|
22
|
-
puts "#add_neighbor(face)"
|
23
|
-
puts "#remove_neighbor(neighbor)"
|
24
|
-
end
|
25
|
-
|
26
|
-
def self.methods
|
27
|
-
self.help
|
28
|
-
end
|
29
|
-
|
30
|
-
def help
|
31
|
-
self.help
|
32
|
-
end
|
33
|
-
|
34
|
-
def methods
|
35
|
-
help
|
36
|
-
end
|
37
18
|
|
38
19
|
def add_neighbor(face)
|
39
20
|
# face_info is a catalog of information about the face's neighbor
|
@@ -86,4 +67,3 @@ module Zadt
|
|
86
67
|
connected_vertices
|
87
68
|
end
|
88
69
|
end
|
89
|
-
end
|
@@ -16,10 +16,15 @@ module Zadt
|
|
16
16
|
super
|
17
17
|
end
|
18
18
|
|
19
|
-
def self.
|
20
|
-
|
19
|
+
def self.help
|
20
|
+
FaceGraph.show_help_message
|
21
|
+
end
|
22
|
+
|
23
|
+
def help
|
24
|
+
FaceGraph.help
|
21
25
|
end
|
22
26
|
|
27
|
+
|
23
28
|
def add_face(edges_array)
|
24
29
|
face = Face.new(edges_array)
|
25
30
|
@faces << face
|
@@ -120,34 +125,6 @@ module Zadt
|
|
120
125
|
neighbors - [face]
|
121
126
|
end
|
122
127
|
|
123
|
-
def help
|
124
|
-
FaceGraph.help
|
125
|
-
end
|
126
|
-
|
127
|
-
def methods
|
128
|
-
help
|
129
|
-
end
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
def self.help
|
134
|
-
puts "Here are the functions for FaceGraph:"
|
135
|
-
puts "#add_face(edges_array), makes a face with the given edges (must be cyclicly connected)"
|
136
|
-
puts "#make_original_face(num_edges), which makes a standard disconnected face"
|
137
|
-
puts "#add_attached_face(vertex_array, num_edges), which adds a face connected to the vertex_array"
|
138
|
-
puts "#find_neighbors(vertex_array), lists all faces containing the given vertices"
|
139
|
-
puts "#find_face_neighbors(vertex_array), which finds all neighbors of the given face"
|
140
|
-
puts "--a neighbor of a face is defined as one that shares a vertex (not necessarily an edge)"
|
141
|
-
puts "#make_vertex_line(vertex_array), reorders a list of connected vertices by connection sequence"
|
142
|
-
puts ""
|
143
|
-
puts "FaceGraph also inherits the following functions from Graph:"
|
144
|
-
puts "#add_vertex"
|
145
|
-
puts "#remove_vertex(vertex)"
|
146
|
-
puts "#make_connection(v1,v2), adds an edge between two vertices"
|
147
|
-
puts "#break_connection(v1,v2)"
|
148
|
-
puts "#find_connection(v1,v2), returns edge connecting two given vertices"
|
149
|
-
puts "#is_connected?(v1,v2)"
|
150
|
-
end
|
151
128
|
|
152
129
|
private
|
153
130
|
|
@@ -177,5 +154,24 @@ module Zadt
|
|
177
154
|
face2.remove_neighbor(face1)
|
178
155
|
face1.remove_neighbor(face2)
|
179
156
|
end
|
157
|
+
|
158
|
+
def self.show_help_message
|
159
|
+
puts "Here are the methods for FaceGraph:"
|
160
|
+
puts "#add_face(edges_array), makes a face with the given edges (must be cyclicly connected)"
|
161
|
+
puts "#make_original_face(num_edges), which makes a standard disconnected face"
|
162
|
+
puts "#add_attached_face(vertex_array, num_edges), which adds a face connected to the vertex_array"
|
163
|
+
puts "#find_neighbors(vertex_array), lists all faces containing the given vertices"
|
164
|
+
puts "#find_face_neighbors(face), which finds all neighbors of the given face"
|
165
|
+
puts "--a neighbor of a face is defined as one that shares a vertex (not necessarily an edge)"
|
166
|
+
puts "#make_vertex_line(vertex_array), reorders a list of connected vertices by connection sequence"
|
167
|
+
puts ""
|
168
|
+
puts "FaceGraph also inherits the following functions from Graph:"
|
169
|
+
puts "#add_vertex"
|
170
|
+
puts "#remove_vertex(vertex)"
|
171
|
+
puts "#make_connection(v1,v2), adds an edge between two vertices"
|
172
|
+
puts "#break_connection(v1,v2)"
|
173
|
+
puts "#find_connection(v1,v2), returns edge connecting two given vertices"
|
174
|
+
puts "#is_connected?(v1,v2)"
|
175
|
+
end
|
180
176
|
end
|
181
177
|
end
|
@@ -20,8 +20,12 @@ module Zadt
|
|
20
20
|
@value = Hash.new
|
21
21
|
end
|
22
22
|
|
23
|
-
def
|
24
|
-
|
23
|
+
def help
|
24
|
+
Graph.help
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.help
|
28
|
+
Graph.show_help_message
|
25
29
|
end
|
26
30
|
|
27
31
|
# Add a vertex
|
@@ -48,9 +52,12 @@ module Zadt
|
|
48
52
|
# Make an edge between two vertices
|
49
53
|
def make_connection(v1, v2)
|
50
54
|
raise "already connected" if is_connected?(v1, v2)
|
55
|
+
# Make new edge
|
56
|
+
edge = Edge.new(v1, v2)
|
51
57
|
# Connect the two using the vertex method "connect"
|
58
|
+
v1.connect(v2, edge)
|
59
|
+
v2.connect(v1, edge)
|
52
60
|
|
53
|
-
edge = v1.connect(v2)
|
54
61
|
# Add to edge catalog
|
55
62
|
@edges << edge
|
56
63
|
edge
|
@@ -86,16 +93,10 @@ module Zadt
|
|
86
93
|
end
|
87
94
|
end
|
88
95
|
|
89
|
-
|
90
|
-
Graph.help
|
91
|
-
end
|
96
|
+
private
|
92
97
|
|
93
|
-
def
|
94
|
-
|
95
|
-
end
|
96
|
-
|
97
|
-
def self.help
|
98
|
-
puts "Here are the functions for Graph:"
|
98
|
+
def self.show_help_message
|
99
|
+
puts "Here are the methods for Graph:"
|
99
100
|
puts "#add_vertex"
|
100
101
|
puts "#remove_vertex(vertex)"
|
101
102
|
puts "#make_connection(v1,v2), adds an edge between two vertices"
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
|
2
2
|
class Vertex
|
3
3
|
# Connected by
|
4
4
|
attr_accessor :edges
|
@@ -17,21 +17,13 @@ module Zadt
|
|
17
17
|
@value = value
|
18
18
|
end
|
19
19
|
|
20
|
-
def self.methods
|
21
|
-
self.help
|
22
|
-
end
|
23
|
-
|
24
20
|
# Make an edge between this vertex and another
|
25
|
-
def connect(other_vertex)
|
21
|
+
def connect(other_vertex, edge)
|
26
22
|
return nil if !other_vertex.is_a?(Vertex) || other_vertex == self
|
27
23
|
raise "already connected" if is_connected?(other_vertex)
|
28
|
-
|
29
|
-
edge = Edge.new(self, other_vertex)
|
30
24
|
# Store connection info in this vertex
|
31
25
|
@edges << edge
|
32
26
|
@connections << other_vertex
|
33
|
-
# Store connection info in other vertex
|
34
|
-
other_vertex.store_connection_info(self, edge)
|
35
27
|
edge
|
36
28
|
end
|
37
29
|
|
@@ -45,31 +37,4 @@ module Zadt
|
|
45
37
|
description += ": empty" if @value.empty?
|
46
38
|
end
|
47
39
|
|
48
|
-
# Used to store connection info in the second vertex
|
49
|
-
# involved in a connection
|
50
|
-
# Must needs be public, since it's called by a different vertex
|
51
|
-
def store_connection_info(vertex, edge)
|
52
|
-
@edges << edge
|
53
|
-
@connections << vertex
|
54
|
-
end
|
55
|
-
|
56
|
-
def self.help
|
57
|
-
puts "Here are the functions for Vertex:"
|
58
|
-
puts "#connect(other_vertex)"
|
59
|
-
puts "#is_connected?(other_vertex)"
|
60
|
-
puts "#make_connection(v1,v2)"
|
61
|
-
puts "#break_connection(v1,v2)"
|
62
|
-
puts "#find_connection(v1,v2)"
|
63
|
-
puts "#is_connected?(v1,v2)"
|
64
|
-
end
|
65
|
-
|
66
|
-
def help
|
67
|
-
Vertex.methods
|
68
|
-
end
|
69
|
-
|
70
|
-
def methods
|
71
|
-
help
|
72
|
-
end
|
73
|
-
private
|
74
40
|
end
|
75
|
-
end
|
data/lib/zadt/version.rb
CHANGED
data/zadt.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.summary = %q{Zagorski ADT is a collection of advanced data types that are not included in the standard Ruby library.}
|
13
13
|
spec.description = %q{Includes two different categories of Advanced Data Types: Array-Based, and Graphs.
|
14
14
|
Array-Based Data Types include Stack, Queue, StackQueue, MinMaxStack, and MinMaxStackQueue.
|
15
|
-
Graph Data Types include Graph,
|
15
|
+
Graph Data Types include Graph, which consists of Vertices and Edges, and FaceGraph, which includes Faces.
|
16
16
|
Once installed, type "Zadt::ADT::help" for a list of datatypes
|
17
17
|
and basic functionality.}
|
18
18
|
spec.homepage = "https://github.com/MrMicrowaveOven/zadt.git"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zadt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Benjamin Zagorski
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -55,7 +55,7 @@ dependencies:
|
|
55
55
|
description: |-
|
56
56
|
Includes two different categories of Advanced Data Types: Array-Based, and Graphs.
|
57
57
|
Array-Based Data Types include Stack, Queue, StackQueue, MinMaxStack, and MinMaxStackQueue.
|
58
|
-
Graph Data Types include Graph,
|
58
|
+
Graph Data Types include Graph, which consists of Vertices and Edges, and FaceGraph, which includes Faces.
|
59
59
|
Once installed, type "Zadt::ADT::help" for a list of datatypes
|
60
60
|
and basic functionality.
|
61
61
|
email:
|