Water collected between towers: Difference between revisions

Content added Content deleted
Line 1,352: Line 1,352:


=={{header|M2000 Interpreter}}==
=={{header|M2000 Interpreter}}==
===Scan min-max for each bar===
<lang M2000 Interpreter>
<lang M2000 Interpreter>
Module Water {
Module Water {
Line 1,384: Line 1,385:
}
}
Water
Water

===Drain method===
</lang>
</lang>
Module Water2 {
Flush ' empty stack
Data (1, 5, 3, 7, 2)
Data (5, 3, 7, 2, 6, 4, 5, 9, 1, 2)
Data (2, 6, 3, 5, 2, 8, 1, 4, 2, 2, 5, 3, 5, 7, 4, 1)
Data (5, 5, 5, 5), (5, 6, 7, 8),(8, 7, 7, 6)
Data (6, 7, 10, 7, 6)
bars=stack.size ' mark stack frame
Dim bar()
For bar=1 to bars
bar()=Array ' pop an array from stack
acc=0
range=bar()#max()-bar()#min()
if range>0 then
dim water(len(bar()))=bar()#max()
water(0)=bar(0)
water(len(bar())-1)=bar(len(bar())-1)
For j=1 to range-1
For i=1 to len(bar())-2
if water(i)>bar(i) then if water(i-1)<water(i) Then water(i)--
Next i
For i=len(bar())-2 to 1
if water(i)>bar(i) then if water(i+1)<water(i) Then water(i)--
Next i
Next j
Data water()#sum()-bar()#sum()
Else
Data 0
End if
Next bar
finalwater=[]
Print finalwater
}
Water2
<lang M2000 Interpreter>

</lang>

{{out}}
{{out}}
<pre>
<pre>