diff options
Diffstat (limited to '2019/19.hs')
-rw-r--r-- | 2019/19.hs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/2019/19.hs b/2019/19.hs new file mode 100644 index 0000000..17598b2 --- /dev/null +++ b/2019/19.hs @@ -0,0 +1,32 @@ +module Main where + +import Data.List +import Data.Maybe + +import Input +import IntCode + + +main :: IO () +main = do + program <- parse . head <$> getInput 19 + + let samplePoint x y = head (snd (run program [x, y])) + + print (sum [samplePoint x y | y <- [0..49], x <- [0..49]]) + + let pollDist = 1000 + hitsAt d = let d' = fromIntegral d in [(x, y) | x <- [0..d'], let y = d' - x, samplePoint x y == 1] + pollHits = hitsAt pollDist + + guessDist = 100 * pollDist `div` length pollHits + (minDist, maxDist) = (995 * guessDist `div` 1000, 1005 * guessDist `div` 1000) + + hitsList = map hitsAt [minDist..maxDist] + dist = fromJust (findIndex ((>= 100) . length) hitsList) + minDist + finalHits = hitsList !! (dist - minDist) + + (lbX, lbY) = head finalHits + ltY = lbY - 99 + + print (10000 * lbX + ltY) |