Faster
This commit is contained in:
@@ -137,31 +137,38 @@ module Day10 =
|
||||
|
||||
let floodFill (stackBuf : ResizeArray<_>) (s : Arr2D<byte>) (currX : int) (currY : int) =
|
||||
stackBuf.Clear ()
|
||||
stackBuf.Add (currX, currY)
|
||||
stackBuf.Add currX
|
||||
stackBuf.Add currY
|
||||
|
||||
while stackBuf.Count > 0 do
|
||||
let currX, currY = stackBuf.[stackBuf.Count - 1]
|
||||
let currY = stackBuf.[stackBuf.Count - 1]
|
||||
stackBuf.RemoveAt (stackBuf.Count - 1)
|
||||
let currX = stackBuf.[stackBuf.Count - 1]
|
||||
stackBuf.RemoveAt (stackBuf.Count - 1)
|
||||
|
||||
if currX > 0 then
|
||||
if Arr2D.get s (currX - 1) currY = 0uy then
|
||||
Arr2D.set s (currX - 1) currY 2uy
|
||||
stackBuf.Add ((currX - 1, currY))
|
||||
stackBuf.Add (currX - 1)
|
||||
stackBuf.Add currY
|
||||
|
||||
if currX < s.Width - 1 then
|
||||
if Arr2D.get s (currX + 1) currY = 0uy then
|
||||
Arr2D.set s (currX + 1) currY 2uy
|
||||
stackBuf.Add ((currX + 1, currY))
|
||||
stackBuf.Add (currX + 1)
|
||||
stackBuf.Add currY
|
||||
|
||||
if currY > 0 then
|
||||
if Arr2D.get s currX (currY - 1) = 0uy then
|
||||
Arr2D.set s currX (currY - 1) 2uy
|
||||
stackBuf.Add ((currX, currY - 1))
|
||||
stackBuf.Add currX
|
||||
stackBuf.Add (currY - 1)
|
||||
|
||||
if currY < s.Height - 1 then
|
||||
if Arr2D.get s currX (currY + 1) = 0uy then
|
||||
Arr2D.set s currX (currY + 1) 2uy
|
||||
stackBuf.Add ((currX, currY + 1))
|
||||
stackBuf.Add currX
|
||||
stackBuf.Add (currY + 1)
|
||||
|
||||
let print (s : Arr2D<byte>) =
|
||||
for y = 0 to s.Height - 1 do
|
||||
|
Reference in New Issue
Block a user