zadt 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/zadt/AbstractDataTypes/ADT.rb +1 -1
- data/lib/zadt/AbstractDataTypes/Graph/edge.rb +17 -9
- data/lib/zadt/AbstractDataTypes/Graph/face.rb +6 -1
- data/lib/zadt/AbstractDataTypes/Graph/face_graph.rb +37 -28
- data/lib/zadt/AbstractDataTypes/Graph/graph.rb +36 -27
- data/lib/zadt/AbstractDataTypes/Graph/vertex.rb +32 -23
- data/lib/zadt/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a5c19deae423e0c9c58bd1a0ca3426f9f5c35247
|
4
|
+
data.tar.gz: 90eccd3bfea079e453115d2f37adc811050281f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 06af58c05476e6e9b876aa73db9d966ec36dd28a417aff76f5dede74648627eed9a28afae75de7f874aad8efa7ac592cf821959bf35e407dfeb6ba8e4af08160
|
7
|
+
data.tar.gz: 3a3ec25e47c7c5c5c031ff03d5275b5959450fedee8176e6ea99be9b87fa2bcb91f9174078d3b0cd9401fd80ccbd55dd9fd8fdb610be4ad9110432d71e68d3e9
|
@@ -14,7 +14,7 @@ module Zadt
|
|
14
14
|
puts "--Vertex, a 'spot' on the graph"
|
15
15
|
puts "--Edge, connects two vertices"
|
16
16
|
puts "-FaceGraph, a sub-class of Graph which includes Faces"
|
17
|
-
puts "--Face, a space surrounded by Edges. Consists of Vertices and the Edges connecting them"
|
17
|
+
puts "--Face, a space surrounded by a cycle of Edges. Consists of Vertices and the Edges connecting them"
|
18
18
|
puts ""
|
19
19
|
puts "Each data type also has a help function. Type Zadt::Stack::help or Zadt::Stack::methods for a list of Stack methods, and so on for each data type."
|
20
20
|
end
|
@@ -1,19 +1,23 @@
|
|
1
1
|
module Zadt
|
2
2
|
class Edge
|
3
|
-
|
4
|
-
|
3
|
+
# Made up of a
|
4
|
+
attr_reader :connection
|
5
|
+
# Contains
|
6
|
+
attr_accessor :value
|
7
|
+
def initialize(v1, v2, value = Hash.new)
|
5
8
|
@connection = [v1, v2]
|
6
|
-
|
7
|
-
|
8
|
-
def self.help
|
9
|
-
puts "Edge has one method:"
|
10
|
-
puts "#connection, which returns the vertices the edge connects"
|
9
|
+
@value = value
|
11
10
|
end
|
12
11
|
|
13
12
|
def self.methods
|
14
13
|
self.help
|
15
14
|
end
|
16
15
|
|
16
|
+
|
17
|
+
def inspect
|
18
|
+
@connection.to_s
|
19
|
+
end
|
20
|
+
|
17
21
|
def help
|
18
22
|
self.help
|
19
23
|
end
|
@@ -22,8 +26,12 @@ module Zadt
|
|
22
26
|
help
|
23
27
|
end
|
24
28
|
|
25
|
-
def
|
26
|
-
|
29
|
+
def self.help
|
30
|
+
puts "Edge has one method:"
|
31
|
+
puts "#connection, which returns the vertices the edge connects"
|
27
32
|
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
28
36
|
end
|
29
37
|
end
|
@@ -3,17 +3,22 @@
|
|
3
3
|
module Zadt
|
4
4
|
class Face
|
5
5
|
attr_reader :edges, :vertices, :neighboring_faces
|
6
|
-
|
6
|
+
# Contains
|
7
|
+
attr_accessor :value
|
8
|
+
def initialize(edges_array, neighboring_faces = {}, value = Hash.new)
|
7
9
|
raise "Not enough edges" if edges_array.length < 3
|
8
10
|
@edges = edges_array
|
9
11
|
vertices = edges_array.map{ |edge| edge.connection}.inject(:+).uniq
|
10
12
|
@vertices = ensure_cyclic(vertices)
|
11
13
|
@neighboring_faces = neighboring_faces
|
12
14
|
@neighbor_id = @neighboring_faces.length
|
15
|
+
@value = value
|
13
16
|
end
|
14
17
|
|
18
|
+
# TODO: Neighbors shouldn't be stored in Face, as FaceGraph takes care of this
|
15
19
|
def self.help
|
16
20
|
puts "Here are the functions for Face:"
|
21
|
+
|
17
22
|
puts "#add_neighbor(face)"
|
18
23
|
puts "#remove_neighbor(neighbor)"
|
19
24
|
end
|
@@ -3,7 +3,12 @@ require_relative 'graph.rb'
|
|
3
3
|
|
4
4
|
module Zadt
|
5
5
|
class FaceGraph < Graph
|
6
|
+
# Made up of
|
6
7
|
attr_reader :faces
|
8
|
+
# in addition to its parent's :vertices and :edges
|
9
|
+
|
10
|
+
# Contains
|
11
|
+
# attr_accessor :value
|
7
12
|
|
8
13
|
def initialize
|
9
14
|
#@faces is ALL faces on the graph
|
@@ -11,37 +16,10 @@ module Zadt
|
|
11
16
|
super
|
12
17
|
end
|
13
18
|
|
14
|
-
def self.help
|
15
|
-
puts "Here are the functions for FaceGraph:"
|
16
|
-
puts "#add_face(edges_array), makes a face with the given edges (must be cyclicly connected)"
|
17
|
-
puts "#make_original_face(num_edges), which makes a standard disconnected face"
|
18
|
-
puts "#add_attached_face(vertex_array, num_edges), which adds a face connected to the vertex_array"
|
19
|
-
puts "#find_neighbors(vertex_array), lists all faces containing the given vertices"
|
20
|
-
puts "#find_face_neighbors(vertex_array), which finds all neighbors of the given face"
|
21
|
-
puts "--a neighbor of a face is defined as one that shares a vertex (not necessarily an edge)"
|
22
|
-
puts "#make_vertex_line(vertex_array), reorders a list of connected vertices by connection sequence"
|
23
|
-
puts ""
|
24
|
-
puts "FaceGraph also inherits the following functions from Graph:"
|
25
|
-
puts "#add_vertex"
|
26
|
-
puts "#remove_vertex(vertex)"
|
27
|
-
puts "#make_connection(v1,v2), adds an edge between two vertices"
|
28
|
-
puts "#break_connection(v1,v2)"
|
29
|
-
puts "#find_connection(v1,v2), returns edge connecting two given vertices"
|
30
|
-
puts "#is_connected?(v1,v2)"
|
31
|
-
end
|
32
|
-
|
33
19
|
def self.methods
|
34
20
|
self.help
|
35
21
|
end
|
36
22
|
|
37
|
-
def help
|
38
|
-
self.help
|
39
|
-
end
|
40
|
-
|
41
|
-
def methods
|
42
|
-
help
|
43
|
-
end
|
44
|
-
|
45
23
|
def add_face(edges_array)
|
46
24
|
face = Face.new(edges_array)
|
47
25
|
@faces << face
|
@@ -142,6 +120,37 @@ module Zadt
|
|
142
120
|
neighbors - [face]
|
143
121
|
end
|
144
122
|
|
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
|
+
|
152
|
+
private
|
153
|
+
|
145
154
|
def make_vertex_line(vertex_array)
|
146
155
|
connection_line = []
|
147
156
|
connection_line << vertex_array.first
|
@@ -158,7 +167,7 @@ module Zadt
|
|
158
167
|
end
|
159
168
|
connection_line
|
160
169
|
end
|
161
|
-
|
170
|
+
|
162
171
|
def make_neighbors(face1, face2)
|
163
172
|
face1.add_neighbor(face2)
|
164
173
|
face2.add_neighbor(face1)
|
@@ -1,8 +1,15 @@
|
|
1
1
|
require_relative 'vertex.rb'
|
2
|
-
|
2
|
+
require_relative 'edge.rb'
|
3
3
|
module Zadt
|
4
4
|
class Graph
|
5
|
-
|
5
|
+
# Made up of
|
6
|
+
attr_reader :vertices
|
7
|
+
|
8
|
+
# Which are connected by
|
9
|
+
attr_reader :edges
|
10
|
+
|
11
|
+
# Contains
|
12
|
+
attr_accessor :value
|
6
13
|
|
7
14
|
#init_v allows for initial vertices (not generally used)
|
8
15
|
def initialize
|
@@ -10,30 +17,13 @@ module Zadt
|
|
10
17
|
@vertices = []
|
11
18
|
#@edges is ALL edges on the graph
|
12
19
|
@edges = []
|
13
|
-
|
14
|
-
|
15
|
-
def self.help
|
16
|
-
puts "Here are the functions for Graph:"
|
17
|
-
puts "#add_vertex"
|
18
|
-
puts "#remove_vertex(vertex)"
|
19
|
-
puts "#make_connection(v1,v2), adds an edge between two vertices"
|
20
|
-
puts "#break_connection(v1,v2)"
|
21
|
-
puts "#find_connection(v1,v2), returns edge connecting two given vertices"
|
22
|
-
puts "#is_connected?(v1,v2)"
|
20
|
+
@value = Hash.new
|
23
21
|
end
|
24
22
|
|
25
23
|
def self.methods
|
26
24
|
self.help
|
27
25
|
end
|
28
26
|
|
29
|
-
def help
|
30
|
-
self.help
|
31
|
-
end
|
32
|
-
|
33
|
-
def methods
|
34
|
-
help
|
35
|
-
end
|
36
|
-
|
37
27
|
# Add a vertex
|
38
28
|
def add_vertex
|
39
29
|
vertex = Vertex.new
|
@@ -59,12 +49,24 @@ module Zadt
|
|
59
49
|
def make_connection(v1, v2)
|
60
50
|
raise "already connected" if is_connected?(v1, v2)
|
61
51
|
# Connect the two using the vertex method "connect"
|
52
|
+
|
62
53
|
edge = v1.connect(v2)
|
63
54
|
# Add to edge catalog
|
64
55
|
@edges << edge
|
65
56
|
edge
|
66
57
|
end
|
67
58
|
|
59
|
+
# Find the edge connecting two vertices
|
60
|
+
def find_connection(v1, v2)
|
61
|
+
connection = v1.edges.select {|edge| edge.connection.include?(v2)}
|
62
|
+
connection.first
|
63
|
+
end
|
64
|
+
|
65
|
+
# Returns whether two vertices are connected
|
66
|
+
def is_connected?(v1, v2)
|
67
|
+
v1.connections.include?(v2)
|
68
|
+
end
|
69
|
+
|
68
70
|
def break_connection(v1, v2)
|
69
71
|
raise "First vertex does not exist" if !v1
|
70
72
|
raise "Second vertex does not exist" if !v2
|
@@ -84,15 +86,22 @@ module Zadt
|
|
84
86
|
end
|
85
87
|
end
|
86
88
|
|
87
|
-
|
88
|
-
|
89
|
-
connection = v1.edges.select {|edge| edge.connection.include?(v2)}
|
90
|
-
connection.first
|
89
|
+
def help
|
90
|
+
Graph.help
|
91
91
|
end
|
92
92
|
|
93
|
-
|
94
|
-
|
95
|
-
|
93
|
+
def methods
|
94
|
+
help
|
95
|
+
end
|
96
|
+
|
97
|
+
def self.help
|
98
|
+
puts "Here are the functions for Graph:"
|
99
|
+
puts "#add_vertex"
|
100
|
+
puts "#remove_vertex(vertex)"
|
101
|
+
puts "#make_connection(v1,v2), adds an edge between two vertices"
|
102
|
+
puts "#break_connection(v1,v2)"
|
103
|
+
puts "#find_connection(v1,v2), returns edge connecting two given vertices"
|
104
|
+
puts "#is_connected?(v1,v2)"
|
96
105
|
end
|
97
106
|
end
|
98
107
|
end
|
@@ -1,39 +1,29 @@
|
|
1
|
-
require_relative 'edge.rb'
|
2
1
|
module Zadt
|
3
2
|
class Vertex
|
4
|
-
|
5
|
-
|
3
|
+
# Connected by
|
4
|
+
attr_accessor :edges
|
5
|
+
|
6
|
+
# Connected with
|
7
|
+
attr_accessor :connections
|
8
|
+
|
9
|
+
# Contains
|
10
|
+
attr_accessor :value
|
11
|
+
|
12
|
+
def initialize(value = Hash.new)
|
6
13
|
# List of edges attached to vertex
|
7
14
|
@edges = []
|
8
15
|
# List of vertices "connected" to this one
|
9
16
|
@connections = []
|
10
|
-
|
11
|
-
|
12
|
-
def self.help
|
13
|
-
puts "Here are the functions for Vertex:"
|
14
|
-
puts "#connect(other_vertex)"
|
15
|
-
puts "#is_connected?(other_vertex)"
|
16
|
-
puts "#make_connection(v1,v2)"
|
17
|
-
puts "#break_connection(v1,v2)"
|
18
|
-
puts "#find_connection(v1,v2)"
|
19
|
-
puts "#is_connected?(v1,v2)"
|
17
|
+
@value = value
|
20
18
|
end
|
21
19
|
|
22
20
|
def self.methods
|
23
21
|
self.help
|
24
22
|
end
|
25
23
|
|
26
|
-
def help
|
27
|
-
self.help
|
28
|
-
end
|
29
|
-
|
30
|
-
def methods
|
31
|
-
help
|
32
|
-
end
|
33
|
-
|
34
24
|
# Make an edge between this vertex and another
|
35
25
|
def connect(other_vertex)
|
36
|
-
return nil if !other_vertex
|
26
|
+
return nil if !other_vertex.is_a?(Vertex) || other_vertex == self
|
37
27
|
raise "already connected" if is_connected?(other_vertex)
|
38
28
|
|
39
29
|
edge = Edge.new(self, other_vertex)
|
@@ -51,7 +41,8 @@ module Zadt
|
|
51
41
|
end
|
52
42
|
|
53
43
|
def inspect
|
54
|
-
"Vertex"
|
44
|
+
description = "Vertex"
|
45
|
+
description += ": empty" if @value.empty?
|
55
46
|
end
|
56
47
|
|
57
48
|
# Used to store connection info in the second vertex
|
@@ -62,5 +53,23 @@ module Zadt
|
|
62
53
|
@connections << vertex
|
63
54
|
end
|
64
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
|
65
74
|
end
|
66
75
|
end
|
data/lib/zadt/version.rb
CHANGED
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.7
|
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-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|