|
@@ -7,6 +7,8 @@ import Data.Char
|
|
|
import Data.Set ( Set )
|
|
|
import qualified Data.Set as S
|
|
|
|
|
|
+import Data.Universe.Helpers ( cartesianProduct ) -- Need to be installed : `cabal install universe`
|
|
|
+
|
|
|
|
|
|
-- Types
|
|
|
|
|
@@ -64,6 +66,13 @@ moveRight m = map (\l -> 0 : init l) m
|
|
|
moveLeft::Mat -> Mat
|
|
|
moveLeft m = map (\l -> concat [tail l, [0]]) m
|
|
|
|
|
|
+gridMoves::Mat -> [Mat]
|
|
|
+gridMoves m =
|
|
|
+ let hMov = [id, moveUp, moveDown] in
|
|
|
+ let wMov = [id, moveLeft, moveRight] in
|
|
|
+ let allMov = tail $ cartesianProduct (.) hMov wMov in
|
|
|
+ map (\f -> f m) allMov
|
|
|
+
|
|
|
|
|
|
-- Testing data
|
|
|
|