X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=lib%2Fgraph.njae%2Fvertex.rb;h=aeabe30559be5f1f0a4cf1acf19a7607ff6a1249;hb=804c1d3850e599aea8cb3258d1a875be148a3b30;hp=bf14dddac07ce079f13a5d4de2409d8292d449c0;hpb=c34def40508c16cfc815fa02c8743d071491af7b;p=graph.njae.git diff --git a/lib/graph.njae/vertex.rb b/lib/graph.njae/vertex.rb index bf14ddd..aeabe30 100644 --- a/lib/graph.njae/vertex.rb +++ b/lib/graph.njae/vertex.rb @@ -6,8 +6,8 @@ module GraphNjae # A vertex in a graph. The edge can have arbitrary attributes,treated as # method names. class Vertex < OpenStruct - def initialize - super + def initialize(values = {}) + super(values) self.edges = [] self end @@ -17,8 +17,8 @@ module GraphNjae def connect(other) e = Edge.new e << self << other - self.edges << e - other.edges << e unless self === other + # self.edges << e + # other.edges << e unless self === other e end @@ -31,10 +31,12 @@ module GraphNjae # Return the set of neighbouring vertices def neighbours - vertices = self.edges.map {|e| e.vertices}.flatten - vertices_to_me = vertices.select {|v| v == self} - other_vertices = vertices.select {|v| v != self} - (vertices_to_me[1..-1] || []) + other_vertices + #vertices = self.edges.map {|e| e.vertices}.flatten + #vertices_to_me = vertices.select {|v| v == self} + #other_vertices = vertices.select {|v| v != self} + #(vertices_to_me[1..-1] || []) + other_vertices# + self.edges.map {|e| e.vertices.take_while {|v| v != self} + + e.vertices.drop_while {|v| v != self}[1..-1]}.flatten end end