1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
{-# OPTIONS -Wno-type-defaults #-}
module Main where
import qualified Data.Array as A
import Data.List
import Data.Maybe
import Input
stencil8 :: (a -> [a] -> b) -> a -> A.Array (Int, Int) a -> A.Array (Int, Int) b
stencil8 f def arr =
A.listArray (A.bounds arr)
[f (arr A.! (y, x))
[get (yi, xi)
| yi <- [y-1 .. y+1]
, xi <- [x-1 .. x+1]
, xi /= 0 || yi /= 0]
| y <- [y1..y2], x <- [x1..x2]]
where
get (y, x) | y1 <= y, y <= y2, x1 <= x, x <= x2 = arr A.! (y, x)
| otherwise = def
((y1, x1), (y2, x2)) = A.bounds arr
step1 :: A.Array (Int, Int) Int -> A.Array (Int, Int) Int
step1 = stencil _ 0
main :: IO ()
main = do
inp <- getInput 11
return ()
|