Water collected between towers: Difference between revisions

m
(Added AutoHotkey)
Line 497:
=={{header|AutoHotkey}}==
<lang AutoHotkey>WCBT(oTwr){
ltopL := numMax(oTwr*), l := topLnum := 0, inpbarCh := barChlbarCh := "", oLvl := []
for i, h in oTwr
topL := h > topL ? h : topL, inp .= h ", "
inp := "[" Trim(inp, ", ") "]"
while (++l <= topL)
for t, h in oTwr
oLvl[l,t] .:= h ? "██" : "≈≈" , oTwr[t] := oTwr[t]>0 ? oTwr[t]-1 : 0
for il, lobj in oLvl{
, oTwr[t] := oTwr[t]>0 ? oTwr[t]-1 : 0
while (SubStr(oLvl[l, A_Index, 1)] = "≈≈")
for i, l in oLvl{
while (SubStr( oLvl[l, A_Index, 1)] := " ")
while (oLvl[l, obj.Count() +1 - A_Index] = "≈≈")
l := StrReplace(l, "≈", " ",,1)
oLvl[l, obj.Count() +1 - A_Index] := " "
l := reverse(l)
for t, v in obj
while (SubStr(l, A_Index, 1) = "≈")
llbarCh :.= StrReplace(lv, "≈≈", " ≈≈",,1 n), num += n
barCh := lbarCh "`n" barCh, lbarCh := ""
oLvl[i] := reverse(l)
}
return [inp, num, barCh]
for i, l in oLvl
l := StrReplace(l, "≈", "≈≈", n), l := StrReplace(l, " ", " ")
, l := StrReplace(l, "█", "██"), barCh := l "`n" barCh, num += n
return [inp, num, barCh]
}
reverse(n){
for i, v in StrSplit(n)
output := v output
return output
}</lang>
Examples:<lang AutoHotkey>data := [[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]]
 
result := ""
for i, oTwr in data{
inp := ""
for i, h in oTwr
inp .= h ", "
inp := "[" Trim(inp, ", ") "]"
x := WCBT(oTwr)
result .= "Chart " x.1inp " has " x.21 " water units`n" x.32 "------------------------`n"
}
MsgBox % result</lang>
299

edits