-readGrid input = ( S.fromList [ (r, c)
- | r <- [0..maxR], c <- [0..maxC]
- , (grid!!r)!!c == '#']
- , (maxR, maxC)
- )
- where grid = lines input
- maxC = (length $ head grid) - 1
- maxR = (length grid) - 1
-
+readGrid input = (trees, (maxR, maxC))
+ where trees = S.fromList $ concat
+ [ [(r, c) | (t, c) <- zip row [0..], t == '#']
+ | (row, r) <- zip rows [0..] ]
+ rows = lines input
+ maxC = (length $ head rows) - 1
+ maxR = (length rows) - 1