Question
For this assignment, you need to implement three functions to complete a Sudoku project, which is a logic-based puzzle game for number placement. The Classic
For this assignment, you need to implement three functions to complete a Sudoku project, which is a logic-based puzzle game for number placement. The Classic Sudoku is a number placing puzzle based on a 9x9 grid with several given numbers. The object is to place the numbers 1 to 9 in the empty squares so that each row, each column and each 3x3 box contains the same number only once.
According to the constraint satisfaction problem (CSP), the definitions of these three functions are as follows:
3) void CSP::arcConsistency(const State state); - Attention: for this function, you need to modify a data member variables[9][9] in the CSP class.
This function has a stronger constraint than the udpateDomain() function. Again, you need to update the domains of the variables[9][9] data member, according to the current state. As talked in the class, you can follow the pseducode to update the domains of the unassigned variables based on the tail and head principle of an arrow.
Two important variables:
Variable variables[9][9];
State cur_state;
Both of the two variables are the data members of the CSP class. But only the first variable (variables[9][9]) needs to be updated inside your implemented functions. For the second variable (cur_state), you do not need to update its value but just read it. Actually you do not need to read this variable directly, as it is given to you as the input parameter of your function - const State state. So you just need to read the information from state variable. They are the same.
(1) variable[9][9] - each variable represents a cell of the sudoku table. For example, variable[0][5] is the cell in the first row and the 6th column. The structure Variable" definition is in the header file CSP.h. It has two data members: domain and assignment. domain is a vector representing the possible values can be assigned for this variable. So it has at most nigh numbers. assignment is an integer, which presents the current assignment for this cell. The value can be any integer between 1 and 9. If it is 0, it means the current variable has not been assigned yet. In your implemented functions, you should update the domains of these unassigned variables.
(2) cur_state - its structure is also defined in the CSP.h file. It only has one data member values[9][9] which has a similar meaning as the assignment data member of the above variables[9][9]. For example, values[2][3] represents the assignment of the cell in the third row and the fourth column of the sudoku table. It can be any integer between 1 and 9. Again, if it is 0, it means the cell has not been assigned yet.
(Hint: if you want to check whether a cell (ith row, jth column) has been assigned yet, you can use any of the three ways: cur_state.value[i-1][j-1] == 0, or variables[i-1][j-1].assignment == 0, or the function input parameter state.value[i -1][j-1] == 0)
#include
#include "CSP.h"
/************************************** Below are the three functions you need to implement ***************************************/
/*Check whether current state satisfy the constraints*/ bool CSP::goalCheck(const State state) {
return false; }
/*Update Domain for the forward checking*/ void CSP::updateDomain(const State state) { }
/*Arc consistency use*/ void CSP::arcConsistency(const State state) {
}
/************************************************ End of Assignment ***********************************************/
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started