class Vertex
attr_accessor :id, :edges
def initialize(id, edges=[])
@id = id
@edges = edges
end
def print
puts "#{ @id }"
@edges.each do |edge|
puts edge
end
end
end
class Edge
attr_accessor :id, :from, :to, :length
def initialize(id, from, to, length)
@id = id
@from = from
@to = to
@length = length
end
def to_s
"#{ from } => #{ to } #{ length }"
end
end
class Graph
attr_accessor :vertexes, :edges
def initialize(data)
@vertexes = []
data.each do |k, v|
edges = []
v.each do |k2, v2|
edges << Edge.new( 0, k ,k2, v2 )
end
@vertexes << Vertex.new( k, edges )
end
end
def print_graph
@vertexes.each do |v|
v.print
end
end
end
data =
{
a: {b: 1, c: 3, d: 4},
b: {b: 3, d: 11},
c: {a: 1},
d: {e: 11},
e: {a: 1},
}
g = Graph.new( data )
g.print_graph
実行結果
a
a => b 1
a => c 3
a => d 4
b
b => b 3
b => d 11
c
c => a 1
d
d => e 11
e
e => a 1