import Data.List main :: IO () main = do input <- readFile "input" let grid = lines input let diagonals = getDiagonals grid let xmas = filter isXMAS diagonals print (length xmas) -- mapM_ print (rotGrid (transpose grid)) isXMAS diag = ((fst diag) == "MAS" || (fst diag) == "SAM") && ((snd diag) == "MAS" || (snd diag) == "SAM") getDiagonals grid = let n = length grid - 1 m = length (grid!!0) - 1 in zip [ [grid!!(i-1)!!(j-1), grid!!i!!j, grid!!(i+1)!!(j+1)] | i <- [1..n-1], j <- [1..m-1] ] [ [grid!!(i-1)!!(j+1), grid!!i!!j, grid!!(i+1)!!(j-1)] | i <- [1..n-1], j <- [1..m-1] ]