Water collected between towers: Difference between revisions

Content added Content deleted
m (→‎{{header|REXX}}: re-instated whitespace from another edit that added a language entry.)
(added Tcl)
Line 1,087: Line 1,087:
[2, 14, 35, 0, 0, 0, 0]
[2, 14, 35, 0, 0, 0, 0]
</pre>
</pre>

=={{header|Tcl}}==
Tcl makes for a surprisingly short and readable implementation, next to some of the more functional-oriented languages.
<lang Tcl>namespace path {::tcl::mathfunc ::tcl::mathop}

proc flood {ground} {
set lefts [
set d 0
lmap g $ground {
set d [max $d $g]
}
]
set ground [lreverse $ground]
set rights [
set d 0
lmap g $ground {
set d [max $d $g]
}
]
set rights [lreverse $rights]
set ground [lreverse $ground]
set water [lmap l $lefts r $rights {min $l $r}]
set depths [lmap g $ground w $water {- $w $g}]
+ {*}$depths
}

foreach p {
{5 3 7 2 6 4 5 9 1 2}
{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}
} {
puts [flood $p]:\t$p
}</lang>

{{out}}
<pre>14: 5 3 7 2 6 4 5 9 1 2
2: 1 5 3 7 2
14: 5 3 7 2 6 4 5 9 1 2
35: 2 6 3 5 2 8 1 4 2 2 5 3 5 7 4 1
0: 5 5 5 5
0: 5 6 7 8
0: 8 7 7 6
0: 6 7 10 7 6</pre>


=={{header|zkl}}==
=={{header|zkl}}==