@@ -26,8 +26,7 @@ genRCell rn cn val = do
2626
2727genRCellFromSet :: Set Cell -> IO [Cell ]
2828genRCellFromSet set = if Set. null set
29- then do
30- return []
29+ then return []
3130 else do
3231 let size = Set. size set
3332 r <- randomRIO (0 , size - 1 )
@@ -46,11 +45,10 @@ generateRandom rn cn ratio = do
4645 let obs_matrix = foldl editMatrixCell matrix (take cant_obs randomCells)
4746 first_cell <- genRCell rn cn 1
4847 let newMatrix = editMatrixCell obs_matrix first_cell
49- if validateTemplate newMatrix then do
48+ if validateTemplate newMatrix then
5049 return newMatrix
51- else do
52- result <- generateRandom rn cn ratio
53- return result
50+ else
51+ generateRandom rn cn ratio
5452
5553data Dificulty = Easy | Normal | Hard deriving (Ord , Eq , Show , Read )
5654
@@ -62,20 +60,18 @@ emptyRatio Hard = 70/100
6260generateRandomGame :: Int -> Int -> Float -> IO Matrix
6361generateRandomGame rn cn ratio = do
6462 maybeTemplate <- timeout 1000000 $ generateRandom rn cn ratio
65- if isNothing maybeTemplate then do
66- game <- generateRandomGame rn cn ratio
67- return game
63+ if isNothing maybeTemplate then
64+ generateRandomGame rn cn ratio
6865 else do
69- let template = maybe (blankMatrix rn cn) ( \ x -> x) maybeTemplate
66+ let template = maybe (blankMatrix rn cn) id maybeTemplate
7067 seed <- randomIO :: IO Int
7168 let gen = mkStdGen seed
7269 let seeds = randoms gen :: [Int ]
7370 let solutions = solveAll template seeds
74- if null solutions then do
75- game <- generateRandomGame rn cn ratio
76- return game
77- else do
78- return $ head solutions
71+ if null solutions then
72+ generateRandomGame rn cn ratio
73+ else
74+ return $ head solutions
7975
8076removeCells :: Matrix -> [Cell ] -> Int -> Int -> [Int ] -> Matrix
8177removeCells sol@ (Matrix rn cn cs) cells ite n seeds =
@@ -97,10 +93,10 @@ removeCells sol@(Matrix rn cn cs) cells ite n seeds =
9793generateGame :: Int -> Int -> Float -> Dificulty -> IO Matrix
9894generateGame rn cn ratio dif = do
9995 maybeMatrix <- timeout 60000000 $ generateRandomGame rn cn ratio
100- if isNothing maybeMatrix then do
96+ if isNothing maybeMatrix then
10197 return $ error " Game not found"
10298 else do
103- let solution = maybe (blankMatrix rn cn) ( \ x -> x) maybeMatrix
99+ let solution = maybe (blankMatrix rn cn) id maybeMatrix
104100 let setForRemove = Set. filter (\ x -> let v = value x in v > 1 && v < rn * cn) (matrix solution) :: Set Cell
105101 randomCells <- genRCellFromSet setForRemove
106102 let total = Set. size setForRemove
0 commit comments