How to programmatically specify multiple iterators?
What you actually want is to create a Sequence
from the Table
to be used as your iterators.
You can do this with
Do[Print[B[0] + B[1] + B[2]], Sequence @@ Table[{B[i], 0, i}, {i, 0, 2}] //
Evaluate]
(*0
1
2
1
2
3*)
Or, so you don't have to force evaluation,
Do[Print[B[0] + B[1] + B[2]], ##] & @@ Table[{B[i], 0, i}, {i, 0, 2}]
Perhaps you can avoid Do
and instead use Tuples
:
Tuples @ Range[0, {0, 1, 2}]
{{0, 0, 0}, {0, 0, 1}, {0, 0, 2}, {0, 1, 0}, {0, 1, 1}, {0, 1, 2}}
You can then use Total
to sum each tuple:
Total[
Tuples @ Range[0, {0, 1, 2}],
{2}
]
{0, 1, 2, 1, 2, 3}
Do[Print[B[0] + B[1] + B[2]],
Evaluate[Sequence @@ First@ Row[Table[{B[i], 0, i}, {i, 0, 2}], ","]]]
or
row = Row[Table[{B[i], 0, i}, {i, 0, 2}], ","];
Do[Print[B[0] + B[1] + B[2]], Evaluate[Sequence @@ row[[1]]]]