Posted to tcl by greycat at Thu Apr 30 16:15:24 GMT 2020view raw
- #!/usr/bin/env tclsh
- set input1 {SYNC 1 1;SYNC 2 2;K1_SP4_SPA_FINISH_TURN 4}
- set input2 {SYNC 1 1;K2_SP4_SPA_GROOVE_OD 4;K2_SP4_SPA_SQUARE_SIDE_3_CUTCOM_SPA_DRILLING_FRONT 4;SYNC 2 2}
- set L1 [split $input1 ";"]
- set L2 [split $input2 ";"]
- set out1 [list]
- set out2 [list]
- set i1 0
- set i2 0
- while {$i1 < [llength $L1] || $i2 < [llength $L2]} {
- set tmp1 [lindex $L1 $i1]
- set tmp2 [lindex $L2 $i2]
- if {[string match SYNC* $tmp1] && [string match SYNC* $tmp2]} {
- lappend out1 $tmp1
- lappend out2 $tmp2
- incr i1
- incr i2
- continue
- }
- if {[string match SYNC* $tmp1]} {
- # Out of sync -- list 1 is "ahead". Add a NOOP to output list 1.
- # Only advance in list 2.
- lappend out1 NOOP
- lappend out2 $tmp2
- incr i2
- continue
- }
- if {[string match SYNC* $tmp2]} {
- # Opposite of above.
- lappend out1 $tmp1
- incr i1
- lappend out2 NOOP
- continue
- }
- # Otherwise, we just advance normally in each list.
- lappend out1 $tmp1
- lappend out2 $tmp2
- incr i1
- incr i2
- }
- puts "out1: $out1"
- puts "out2: $out2"