Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package require nx
- nx::Class create Node {}
- nx::Class create Edge {
- :property n1:object,type=Node
- :property n2:object,type=Node
- :public method equals {e:object,type=Edge,required} {
- # Check if the nodes are equal
- if {[$e cget -n1] == ${:n1} && [$e cget -n2] == ${:n2}} {
- return true
- } elseif {[$e cget -n2] == ${:n1} && [$e cget -n1] == ${:n2}} {
- return true
- } else {
- return false
- }
- }
- }
- nx::Class create Graph {
- :property edges {}
- :property nodes {}
- :variable graph_string
- :private method add_edge {n1:object,type=Node,required n2:object,type=Node,required} {
- Edge create e1 -n1 $n1 -n2 $n2
- set checker 0
- foreach {key value} [array get ${:edges}] {
- if {e equals $value} {
- set checker 1
- }
- }
- if {checker == 1} {
- puts "The edge is in the list already"
- } else {
- lappend :edges $e
- :add_node $n1
- :add_node $n2
- :graph_string append
- }
- }
- :private method add_node {n:object,type=Node,required} {
- set checker 0
- foreach {key value} [array get :nodes] {
- if {$n == $value} {
- set checker 1
- }
- }
- if {checker == 0} {
- lappend :nodes $n
- }
- }
- :public method add {n1:object,type=Node,required n2:object,type=Node,required} {
- :add_edge $n1 $n2
- }
- }
- Node create n1
- Node create n2
- Edge create e1 -n1 n1 -n2 n2
- puts [e1 equals e1]
- Graph create g
- g add n1 n2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement