TYPE Position = SHORTINT; (* [0..n-1] *)
TYPE Board =
RECORD
nofqueens: SHORTINT;
size: SHORTINT;
queens: ARRAY maxn OF RECORD row, col: Position END;
END;
PROCEDURE Threatened(board: Board;
row, col: Position) : BOOLEAN;
VAR
index: SHORTINT;
r, c: Position;
BEGIN
index := 0;
WHILE index < board.nofqueens DO
r := board.queens[index].row;
c := board.queens[index].col;
IF (row = r) OR (col = c) OR
(row + col = r + c) OR
(ABS(row - col) = ABS(r - c)) THEN
RETURN FALSE
END;
INC(index);
END;
RETURN TRUE
END Threatened;
|