Skip to content

Instantly share code, notes, and snippets.

@paf31

paf31/water.hs Secret

Last active August 17, 2022 04:28
Show Gist options
  • Save paf31/9d84ecf6a6a9b69cdb597a390f25764d to your computer and use it in GitHub Desktop.
Save paf31/9d84ecf6a6a9b69cdb597a390f25764d to your computer and use it in GitHub Desktop.
> import Control.Monad.Tardis
> :{
let levels hs = evalTardis (traverse
(\h -> do x <- min <$> getFuture <*> getPast -- Get the height of the enclosing walls
modifyBackwards (`max` h) -- Send the right max back to the past
modifyForwards (`max` h) -- Send the left max into the future
pure (max 0 (x - h)) -- Calculate the height of the water itself
) hs) (0, 0)
:}
> sum $ levels [5,3,7,2,6,4,5,9,1,2]
14
@paf31
Copy link
Author

paf31 commented Dec 10, 2019

@lalaithion Oh, you're right, well spotted! I think we could fix it perhaps by swapping those two lines?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment