@@ -29,8 +29,7 @@ genRCell rn cn val = do
29
29
30
30
genRCellFromSet :: Set Cell -> IO [Cell ]
31
31
genRCellFromSet set = if Set. null set
32
- then do
33
- return []
32
+ then return []
34
33
else do
35
34
let size = Set. size set
36
35
r <- randomRIO (0 , size - 1 )
@@ -50,11 +49,10 @@ generateRandom rn cn ratio = do
50
49
let obs_matrix = foldl editMatrixCell matrix (take cant_obs randomCells)
51
50
first_cell <- genRCell rn cn 1
52
51
let newMatrix = editMatrixCell obs_matrix first_cell
53
- if validateTemplate newMatrix then do
52
+ if validateTemplate newMatrix then
54
53
return newMatrix
55
- else do
56
- result <- generateRandom rn cn ratio
57
- return result
54
+ else
55
+ generateRandom rn cn ratio
58
56
59
57
60
58
data Difficulty = Easy | Normal | Hard deriving (Ord , Eq , Show , Read )
@@ -69,20 +67,18 @@ emptyRatio Hard = 70/100
69
67
generateRandomGame :: Int -> Int -> Float -> IO Matrix
70
68
generateRandomGame rn cn ratio = do
71
69
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
75
72
else do
76
- let template = maybe (blankMatrix rn cn) ( \ x -> x) maybeTemplate
73
+ let template = maybe (blankMatrix rn cn) id maybeTemplate
77
74
seed <- randomIO :: IO Int
78
75
let gen = mkStdGen seed
79
76
let seeds = randoms gen :: [Int ]
80
77
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
86
82
87
83
88
84
removeCells :: Matrix -> [Cell ] -> Int -> Int -> [Int ] -> Matrix
@@ -109,7 +105,7 @@ generateGame rn cn ratio dif to = do
109
105
if isNothing maybeMatrix then do
110
106
return (False , blankMatrix 1 1 )
111
107
else do
112
- let solution = maybe (blankMatrix rn cn) ( \ x -> x) maybeMatrix
108
+ let solution = maybe (blankMatrix rn cn) id maybeMatrix
113
109
let setForRemove = Set. filter (\ x -> let v = value x in v > 1 && v < rn * cn) (matrix solution) :: Set Cell
114
110
randomCells <- genRCellFromSet setForRemove
115
111
let total = Set. size setForRemove
0 commit comments