Question: Overview You are to write a Java program to allow a user to play Sudoku. Sudoku is a popular logic puzzle that uses a 9

Overview

You are to write a Java program to allow a user to play Sudoku.

Sudoku is a popular logic puzzle that uses a 9 x 9 array of squares that are organized into 3 x 3 subarrays. The puzzle solver must fill in the squares with the digits 1 to 9 such that no digit is repeated in any row, column, or any of the nine 3 x 3 subgroups of squares. Initially, some squares are filled in already and cannot be changed. For example, the following might be a starting configuration for a Sudoku puzzle.

Create a class SudokuPuzzle that has the attributes:

board a 9x9 array of integers that represents the current state of the puzzle, where 0 indicates a blank square

start a 9 x 9 array of boolean values that indicate which squares in board are given values that cannot be changed. And the following methods:

SudokuPuzzle a constructor that creates an empty puzzle

toString returns a string representation of the puzzle that can be printed

addInitial(row, col, value) sets the given square to the given value as an initial value that cannot be changed by the puzzle solver

addGuess(row, col, value) sets the given square to the given value; the value can be changed later by another call to addGuess

checkPuzzle returns true if the values in the puzzle do not violate the restrictions

getValueIn(row, col) returns the value in the given square

getAllowedValues(row, col) returns a one-dimensional array of nine Booleans, each of which corresponds to a digit, and is true if the digit can be placed in the given square without violating the restrictions

isFull returns true if every square has a value

reset changes all nonpermanent squares back to blanks

Write a main method in the class Sudoku that creates a SudokuPuzzle object and sets its initial configuration. Then use a loop to allow someone to play Sudoku. Display the current configuration and ask for a row, column, and value. Update the game board and display it again. If the configuration does not satisfy the restrictions, let the user know. Indicate when the puzzle has been solved correctly. In that case both checkPuzzle, and isFull would return true. You should also allow options for resetting the puzzle, and displaying the values that can be placed in any given square.

Suggestions (Use at your discretion)

Write the method to display the board first. This will be instrumental in debugging

All row and col values should be 0 based.

Must not be an Applet, do it as a text based game.

One (1) run of the program, should show the following:

-a completed correct puzzle -an invalid move -the list of available numbers for any square in the game -the completed array for a game, and the Boolean array for the same game

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!