Advertisement
Guest User

Untitled

a guest
Nov 5th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
TCL 1.62 KB | None | 0 0
  1.  package require nx
  2.  
  3.  nx::Class create Node {}
  4.  
  5.  
  6.   nx::Class create Edge {
  7.     :property n1:object,type=Node
  8.     :property n2:object,type=Node
  9.    
  10.     :public method equals {e:object,type=Edge,required} {
  11.       # Check if the nodes are equal
  12.       if {[$e cget -n1] == ${:n1} && [$e cget -n2] == ${:n2}} {
  13.         return true
  14.       } elseif {[$e cget -n2] == ${:n1} && [$e cget -n1] == ${:n2}} {
  15.         return true
  16.       } else {
  17.         return false
  18.       }
  19.     }
  20.   }
  21.  
  22.   nx::Class create Graph {
  23.     :property edges {}
  24.     :property nodes {}
  25.     :variable graph_string
  26.    
  27.     :private method add_edge {n1:object,type=Node,required n2:object,type=Node,required} {
  28.       Edge create e1 -n1 $n1 -n2 $n2
  29.       set checker 0
  30.       foreach {key value} [array get ${:edges}] {
  31.         if {e equals $value} {
  32.           set checker 1
  33.         }
  34.       }
  35.      
  36.       if {checker == 1} {
  37.         puts "The edge is in the list already"
  38.       } else {
  39.         lappend :edges $e
  40.         :add_node $n1
  41.         :add_node $n2
  42.         :graph_string append
  43.       }
  44.     }
  45.    
  46.     :private method add_node {n:object,type=Node,required} {
  47.       set checker 0
  48.       foreach {key value} [array get :nodes] {
  49.         if {$n == $value} {
  50.           set checker 1
  51.         }
  52.       }
  53.      
  54.       if {checker == 0} {
  55.         lappend :nodes $n
  56.       }
  57.     }
  58.    
  59.     :public method add {n1:object,type=Node,required n2:object,type=Node,required} {
  60.         :add_edge $n1 $n2
  61.     }
  62.   }
  63.  
  64.   Node create n1
  65.   Node create n2
  66.   Edge create e1 -n1 n1 -n2 n2
  67.   puts [e1 equals e1]
  68.   Graph create g
  69.  
  70.   g add n1 n2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement