Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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;

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote