Minor refactoring

master
Abhinav Sarkar 2012-01-10 17:56:15 +05:30
parent 84734e4113
commit 286ab00490
1 changed files with 3 additions and 1 deletions

View File

@ -1,3 +1,4 @@
module SlidingPuzzle where
-- Solves the sliding puzzle problem (http://en.wikipedia.org/wiki/Sliding_puzzle) -- Solves the sliding puzzle problem (http://en.wikipedia.org/wiki/Sliding_puzzle)
-- using A* algorithm -- using A* algorithm
@ -88,6 +89,7 @@ type Point = (Int, Int)
-- A sliding puzzle -- A sliding puzzle
-- blank : which item is considered blank -- blank : which item is considered blank
-- blankPos : position of blank
-- pzState : the current state of the puzzle -- pzState : the current state of the puzzle
data Puzzle a = Puzzle { blank :: a, blankPos :: Point, pzState :: Array Point a } data Puzzle a = Puzzle { blank :: a, blankPos :: Point, pzState :: Array Point a }
deriving (Eq, Ord) deriving (Eq, Ord)
@ -107,7 +109,7 @@ fromList b n xs =
, blankPos = let (d, r) = (fromJust . elemIndex b $ xs) `divMod` n , blankPos = let (d, r) = (fromJust . elemIndex b $ xs) `divMod` n
in (d + 1, r + 1) in (d + 1, r + 1)
, pzState = array ((1, 1), (n, n)) , pzState = array ((1, 1), (n, n))
[((i, j), xs !! (n * (i-1) + (j-1))) [((i, j), xs !! (n * (i - 1) + (j - 1)))
| i <- range (1, n), j <- range (1, n)] | i <- range (1, n), j <- range (1, n)]
} }