Water collected between towers: Difference between revisions

Added XPL0 example.
(Ada version)
(Added XPL0 example.)
Line 3,996:
0 from [8, 7, 7, 6]
0 from [6, 7, 10, 7, 6]
</pre>
 
=={{header|XPL0}}==
<lang XPL0>func WaterCollected(Array, Width); \Return amount of water collected
int Array, Width, Height, I, Row, Col, Left, Right, Water;
[Water:= 0; Height:= 0;
for I:= 0 to Width-1 do \find max height
if Array(I) > Height then Height:= Array(I);
for Row:= 2 to Height do
for Col:= 1 to Width-2 do \(zero-based)
if Row > Array(Col) then \empty location
[Left:= false; Right:= false; \check for barriers
for I:= 0 to Width-1 do
if Array(I) >= Row then \have barrier
[if I < Col then Left:= true;
if I > Col then Right:= true;
];
if Left & Right then Water:= Water+1;
];
return Water;
];
 
int Towers, I;
[Towers:=[[1, 5, 3, 7, 2],
[5, 3, 7, 2, 6, 4, 5, 9, 1, 2],
[2, 6, 3, 5, 2, 8, 1, 4, 2, 2, 5, 3, 5, 7, 4, 1],
[5, 5, 5, 5],
[5, 6, 7, 8],
[8, 7, 7, 6],
[6, 7, 10, 7, 6],
[0]]; \for determining sub-array lengths
for I:= 0 to 7-1 do
[IntOut( 0, WaterCollected(Towers(I), (Towers(I+1)-Towers(I))/4) );
ChOut(0, ^ );
];
]</lang>
 
{{out}}
<pre>
2 14 35 0 0 0 0
</pre>
 
772

edits