$29
Problem 1:
----------
Implement the function
computePolygonArea :: [(Double,Double)] -> Double
that computes the area of the polygon. The formula
for the area of the polygon is given at:
http://mathworld.wolfram.com/PolygonArea.html
You should report an error when the list is empty or contains
only one point.
You should implement the function
det :: (Double,Double) -> (Double,Double) -> Double
that computes the determinate of the 2 x 2 matrix whose
columns are given by the first and second arguments, respectively.
You should use the det function in your computation of the
polygon area.
Problem 2:
----------
See https://en.wikipedia.org/wiki/Chess for more details
We only consider the situation where there is only a single
piece on the board
Given the definitions
---------------------------------------------------------------
type File = Char -- column index
-- valid files are 'a','b',...,'h'
type Rank = Int -- row index
-- valid ranks are 1,2,...8
type Position = (File,Rank)
data Color =
Black | White
deriving (Eq,Show)
data Piece =
King | Queen | Rook | Bishop | Knight | Pawn
deriving (Eq,Show)
---------------------------------------------------------------
implement the functions
---------------------------------------------------------------
isLegalPosition :: Position -> Bool
isLegalMove :: Color -> Piece -> Position -> Position -> Bool
---------------------------------------------------------------
that check whether a position is a legal board position and whether a
move is legal.