|
@@ -99,11 +99,24 @@ applyi f i xs =
|
|
|
let (xs1, xs2) = splitAt i xs in
|
|
|
concat [xs1, ( (f (head xs2)) : tail xs2 )]
|
|
|
|
|
|
+applyij::(a -> a) -> Int -> Int -> [[a]] -> [[a]]
|
|
|
+applyij f i j xss = applyi (applyi f j) i xss
|
|
|
+
|
|
|
+uncover::(Int, Int) -> Grid -> Grid
|
|
|
+uncover (i, j) g =
|
|
|
+ let Grid cm = g in
|
|
|
+ let neighbours = tail [(i', j') | i' <- [0, -1, 1], j' <- [0, -1, 1]] in
|
|
|
+ let uncoverOneCell = \c -> case c of
|
|
|
+ Covered 0 _ _ -> Uncovered 0 -- TODO : recursion
|
|
|
+ Covered n _ _ -> Uncovered n
|
|
|
+ in
|
|
|
+ Grid (applyij uncoverOneCell i j cm)
|
|
|
+
|
|
|
|
|
|
-- Testing data
|
|
|
|
|
|
dtTinyGrid = Grid [
|
|
|
- [Covered 2 True False, Uncovered 2, Covered 2 True False],
|
|
|
+ [Covered 2 True False, Uncovered 2, Covered 0 True False],
|
|
|
[Selected, Uncovered 0, Covered 2 True True]
|
|
|
]
|
|
|
|