@@ -29,8 +29,7 @@ genRCell rn cn val = do
2929
3030genRCellFromSet :: Set Cell -> IO [Cell ]
3131genRCellFromSet set = if Set. null set
32- then do
33- return []
32+ then return []
3433 else do
3534 let size = Set. size set
3635 r <- randomRIO (0 , size - 1 )
@@ -50,11 +49,10 @@ generateRandom rn cn ratio = do
5049 let obs_matrix = foldl editMatrixCell matrix (take cant_obs randomCells)
5150 first_cell <- genRCell rn cn 1
5251 let newMatrix = editMatrixCell obs_matrix first_cell
53- if validateTemplate newMatrix then do
52+ if validateTemplate newMatrix then
5453 return newMatrix
55- else do
56- result <- generateRandom rn cn ratio
57- return result
54+ else
55+ generateRandom rn cn ratio
5856
5957
6058data Difficulty = Easy | Normal | Hard deriving (Ord , Eq , Show , Read )
@@ -69,20 +67,18 @@ emptyRatio Hard = 70/100
6967generateRandomGame :: Int -> Int -> Float -> IO Matrix
7068generateRandomGame rn cn ratio = do
7169 maybeTemplate <- timeout 1000000 $ generateRandom rn cn ratio
72- if isNothing maybeTemplate then do
73- game <- generateRandomGame rn cn ratio
74- return game
70+ if isNothing maybeTemplate then
71+ generateRandomGame rn cn ratio
7572 else do
76- let template = maybe (blankMatrix rn cn) ( \ x -> x) maybeTemplate
73+ let template = maybe (blankMatrix rn cn) id maybeTemplate
7774 seed <- randomIO :: IO Int
7875 let gen = mkStdGen seed
7976 let seeds = randoms gen :: [Int ]
8077 let solutions = solveAll template seeds
81- if null solutions then do
82- game <- generateRandomGame rn cn ratio
83- return game
84- else do
85- return $ head solutions
78+ if null solutions then
79+ generateRandomGame rn cn ratio
80+ else
81+ return $ head solutions
8682
8783
8884removeCells :: Matrix -> [Cell ] -> Int -> Int -> [Int ] -> Matrix
@@ -109,7 +105,7 @@ generateGame rn cn ratio dif to = do
109105 if isNothing maybeMatrix then do
110106 return (False , blankMatrix 1 1 )
111107 else do
112- let solution = maybe (blankMatrix rn cn) ( \ x -> x) maybeMatrix
108+ let solution = maybe (blankMatrix rn cn) id maybeMatrix
113109 let setForRemove = Set. filter (\ x -> let v = value x in v > 1 && v < rn * cn) (matrix solution) :: Set Cell
114110 randomCells <- genRCellFromSet setForRemove
115111 let total = Set. size setForRemove
0 commit comments