3

I have written a Tcl code which gives me output like below. I am very close to what I need. Code:

for { set row 0 } { $row < 3 } {incr row } {
set row[expr {$row + 1}] [lindex $sub_list $row]
puts "row[expr {$row + 1}] [lindex $sub_list $row]"
set pattern_number [llength [lindex $sub_list $row]]
puts "pattern_number = $pattern number"
set pattern_index [lindex $sub_list $row]

    for {set p 0} { $p < $pattern_number} {incr p} {
      set pattern[expr {$p + 1}] [lindex $pattern_index $p]
      puts "pattern[expr {$p + 1}] [lindex $pattern_index $p]"
    }

}

Output of the above code:

Row1 A B C D
pattern number = 4
pattern1 A
pattern2 B
pattern3 C
pattern4 D

Row2 P Q R S
pattern number = 4
pattern1 P
pattern2 Q
pattern3 R
pattern4 S

Row3 W X Y 
pattern number = 3
pattern1 W
pattern2 X
pattern3 Y

Instead, I want the code to give me output as follows:

Row1 A B C D
pattern number = 4
pattern1 A
pattern2 B
pattern3 C
pattern4 D

Row2 P Q R S
pattern number = 4
pattern5 P
pattern6 Q
pattern7 R
pattern8 S

Row3 W X Y 
pattern number = 3
pattern9 W
pattern10 X
pattern11 Y

Please suggest what should I do

2
  • ... you didn't provide any code. You need to not reset the variable you're appending to Pattern, but we can't help you if you don't provide any code. Commented Aug 23, 2013 at 23:02
  • PherricOxide : I have added the code for your reference Commented Aug 23, 2013 at 23:07

1 Answer 1

1
  1. Use foreach
  2. Don't reset the variable

So your code becomes:

set rownr 0
set patnr 0
foreach row $sub_list {
    incr rownr
    puts "Row$rownr $row"
    puts "pattern number = [llength $row]"
    foreach pattern $row {
        incr patnr
        puts "pattern$patnr $pattern"
    }
}

If you want to process this further, let me know how you need that.
(I assume that you don't really want to generate variable names on the fly.)

Sign up to request clarification or add additional context in comments.

1 Comment

right on the money Johannes, thanks a lot ! Now I am getting what I need. In the above example the 3 is hardcoded. Actually that value comes from a variable. But in your code I am not even specifying it still it is working fine.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.