-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnode.rb
53 lines (42 loc) · 1.22 KB
/
node.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
require 'byebug'
class Node
attr_accessor :edges, :root
def initialize(root, *edges) # Node oluşturulurken ismi ve kenarları alınır.
@root = root
@edges = edges
@edges.each do |edge|
edge.add_edge(self)
end
end
def add_edge(node) # kenar yoksa eklenmesi için bu method kullanılır.
unless @edges.include? node
@edges << node
node.add_edge(self) # diğer node sınıfını günceller.
end
end
def neighbors
edges
end
def neighbor?(node)
edges.include?(node)
end
def fix_edges
puts edges
edges.each do |node|
self.add_edge(node)
end
end
def edges_count
edges.count
end
def to_s # Düğümü ve komşularını yazdırmak için kullanılan method
"Bu düğüm : " + self.root + "\n -> Komşuları ise: " + edges.map(&:root).join(', ')
end
end
# a = Node.new("A") # A düğümünü oluştur
# b = Node.new("B", a) # B nodunu oluştur ve a düğümü ile bağla
# c = Node.new("C") # C düğümünü oluştur
# c.add_edge(b) # C düğümü ile a düğümünü bağla
# puts a.to_s
# puts b.to_s # Düğümleri ve komşuları ekrana bastırır.
# puts c.to_s