Write a program (in Python, Java, or etc) that solves the generalized mutilated
ID: 3792933 • Letter: W
Question
Write a program (in Python, Java, or etc) that solves the generalized mutilated checkerboard problem for an 8x8 checkerboard. Your program should read in the "blocked" positions. A blocked position is one that is not allowed to have a domino on it. Your program needs to create an input to Microsoft Z3 which determines if there is a way to place the dominoes on the checkerboard so the all unblocked positions are covered, all blocked positions are not covered, and you cannot have more than one domino on a position. Recall that a domino covers two squares, horizontally or vertically.
Explanation / Answer
#define N 4
#include<stdio.h>
void printSolution(int board[N][N])
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
printf(" %d ", board[i][j]);
printf(" ");
}
}
bool isSafe(int board[N][N], int row, int col)
{
int i, j;
for (i = 0; i < col; i++)
if (board[row][i])
return false;
for (i=row, j=col; i>=0 && j>=0; i--, j--)
if (board[i][j])
return false;
for (i=row, j=col; j>=0 && i<N; i++, j--)
if (board[i][j])
return false;
return true;
}
bool solveNQUtil(int board[N][N], int col)
{
if (col >= N)
return true;
for (int i = 0; i < N; i++)
{
if ( isSafe(board, i, col) )
{
board[i][col] = 1;
if ( solveNQUtil(board, col + 1) )
return true;
board[i][col] = 0;
}
}
return false;
}
bool solveNQ()
{
int board[N][N] = { {0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0}
};
if ( solveNQUtil(board, 0) == false )
{
printf("Solution does not exist");
return false;
}
printSolution(board);
return true;
}
int main()
{
solveNQ();
return 0;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.