Posted to tcl by jima at Tue Sep 25 21:47:17 GMT 2018view raw
- proc PatExpand {R pa {sub {}} {i 0} {buf {}}} {
- set L [llength $pa]
- for {} {$i < $L} {incr i} {
- set new [list {*}$sub [lindex $pa $i]]
- foreach {x1 x2 x3} $R {
- if {$x1 in $new && $x2 in $new && $x3 in $new} {
- return $buf
- }
- }
- lappend buf $new
- set buf [PatExpand $R $pa $new [expr {$i+1}] $buf[set buf {}]]
- }
- return $buf
- }