Loops/With multiple ranges: Difference between revisions

No edit summary
Line 2,018:
prod = -793,618,560
</pre>
 
=={{header|Picat}}==
Picat has support for multiple loop variables, but the index variables for each range must be different:
<lang Picat>foreach(I in 1..3, J in 4..6, K in 7..9)
% ...
end</lang>
 
Here's a variant using the single loop variable <code>J</code>.
<lang Picat>go =>
Prod= 1,
Sum= 0,
X= +5,
Y= -5,
Z= -2,
One= 1,
Three= 3,
Seven= 7,
Ranges = [-Three..Three..3**3,
-Seven..X.. +Seven,
555..550-Y,
22..-Three..-28,
1927..1939,
X..Z..Y,
11**X..11**X + One
],
foreach(Range in Ranges, J in Range)
Sum := Sum + abs(J),
if abs(Prod) < 2**27, J != 0 then
Prod := Prod * J
end
end,
println(sum=Sum),
println(prod=Prod),
nl.</lang>
 
{{out}}
<pre>sum = 348173
prod = -793618560</pre>
 
Another approach is to first concatenate the ranges and then flatten to a single list:
<lang Picat> % ...
foreach(J in [-Three..Three..3**3,
-Seven..X.. +Seven,
555..550-Y,
22..-Three..-28,
1927..1939,
X..Z..Y,
11**X..11**X + One
].flatten
)
Sum := Sum + abs(J),
if abs(Prod) < 2**27, J != 0 then
Prod := Prod * J
end
end,
% ...
</lang>
 
 
 
=={{header|Prolog}}==
495

edits