Question: Sudoku Java problem involving recursive backtracking and multidimensional arrays. Problem: Finish the given program so that it has the three actions hinted by the three

Sudoku Java problem involving recursive backtracking and multidimensional arrays.

Problem:

Finish the given program so that it has the three actions hinted by the three buttons.

Read file - This will read in a file that is formatted like the following and place the content of the file in the board:

*9x9 format of numbers 0-9*

Check puzzle - given some content entered into the board already, your program should apply the rules of the game and indicate if it is a legal board or not.

Solve puzzle - Solve the puzzle using a brute force recursive backtracking solution.

Apply the general recursive backtracking algorithm to this problem to solve the puzzles presented to you.

Sudoku Java problem involving recursive backtracking and multidimensional arrays. Problem: Finish the

sudokuBoard.java

import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.security.DigestInputStream; import java.util.Arrays;

/* Main runner and form logic for the sudoku puzzle. Logic will be written in sudokuSolver.java to build the actions for the buttons. */

public class sudokuBoard { public static final int SIZE = 9;

private JPanel jp; private JTextField q1r1s1; private JTextField q1r1s2; private JTextField q1r1s3; private JTextField q1r2s1; private JTextField q1r2s2; private JTextField q1r2s3; private JTextField q1r3s1; private JTextField q1r3s2; private JTextField q1r3s3; private JTextField q2r1s1; private JTextField q2r1s2; private JTextField q2r1s3; private JTextField q2r2s1; private JTextField q2r2s2; private JTextField q2r2s3; private JTextField q2r3s1; private JTextField q2r3s2; private JTextField q2r3s3; private JTextField q3r1s1; private JTextField q3r1s2; private JTextField q3r1s3; private JTextField q3r2s1; private JTextField q3r2s2; private JTextField q3r2s3; private JTextField q3r3s1; private JTextField q3r3s2; private JTextField q3r3s3; private JTextField q4r1s1; private JTextField q4r1s2; private JTextField q4r1s3; private JTextField q4r2s1; private JTextField q4r2s2; private JTextField q4r2s3; private JTextField q4r3s1; private JTextField q4r3s2; private JTextField q4r3s3; private JTextField q5r1s1; private JTextField q5r1s2; private JTextField q5r1s3; private JTextField q5r2s1; private JTextField q5r2s2; private JTextField q5r2s3; private JTextField q5r3s1; private JTextField q5r3s2; private JTextField q5r3s3; private JTextField q6r1s1; private JTextField q6r1s2; private JTextField q6r1s3; private JTextField q6r2s1; private JTextField q6r2s2; private JTextField q6r2s3; private JTextField q6r3s1; private JTextField q6r3s2; private JTextField q6r3s3; private JTextField q7r1s1; private JTextField q7r1s2; private JTextField q7r1s3; private JTextField q7r2s1; private JTextField q7r2s2; private JTextField q7r2s3; private JTextField q7r3s1; private JTextField q7r3s2; private JTextField q7r3s3; private JTextField q8r1s1; private JTextField q8r1s2; private JTextField q8r1s3; private JTextField q8r2s1; private JTextField q8r2s2; private JTextField q8r2s3; private JTextField q8r3s1; private JTextField q8r3s2; private JTextField q8r3s3; private JTextField q9r1s1; private JTextField q9r1s2; private JTextField q9r1s3; private JTextField q9r2s1; private JTextField q9r2s2; private JTextField q9r2s3; private JTextField q9r3s1; private JTextField q9r3s2; private JTextField q9r3s3;

private JButton readFile; private JButton checkPuzzle; private JButton solve;

private JTextField[][] puzzleEntry = new JTextField[9][9]; private String digits = "123456789"; private sudokuSolver solver = new sudokuSolver();

private void buildBoard(JTextField[][] puzzleEntry) { puzzleEntry[0][0] = q1r1s1; puzzleEntry[0][1] = q1r1s2; puzzleEntry[0][2] = q1r1s3; puzzleEntry[0][3] = q2r1s1; puzzleEntry[0][4] = q2r1s2; puzzleEntry[0][5] = q2r1s3; puzzleEntry[0][6] = q3r1s1; puzzleEntry[0][7] = q3r1s2; puzzleEntry[0][8] = q3r1s3;

puzzleEntry[1][0] = q1r2s1; puzzleEntry[1][1] = q1r2s2; puzzleEntry[1][2] = q1r2s3; puzzleEntry[1][3] = q2r2s1; puzzleEntry[1][4] = q2r2s2; puzzleEntry[1][5] = q2r2s3; puzzleEntry[1][6] = q3r2s1; puzzleEntry[1][7] = q3r2s2; puzzleEntry[1][8] = q3r2s3;

puzzleEntry[2][0] = q1r3s1; puzzleEntry[2][1] = q1r3s2; puzzleEntry[2][2] = q1r3s3; puzzleEntry[2][3] = q2r3s1; puzzleEntry[2][4] = q2r3s2; puzzleEntry[2][5] = q2r3s3; puzzleEntry[2][6] = q3r3s1; puzzleEntry[2][7] = q3r3s2; puzzleEntry[2][8] = q3r3s3;

puzzleEntry[3][0] = q4r1s1; puzzleEntry[3][1] = q4r1s2; puzzleEntry[3][2] = q4r1s3; puzzleEntry[3][3] = q5r1s1; puzzleEntry[3][4] = q5r1s2; puzzleEntry[3][5] = q5r1s3; puzzleEntry[3][6] = q6r1s1; puzzleEntry[3][7] = q6r1s2; puzzleEntry[3][8] = q6r1s3;

puzzleEntry[4][0] = q4r2s1; puzzleEntry[4][1] = q4r2s2; puzzleEntry[4][2] = q4r2s3; puzzleEntry[4][3] = q5r2s1; puzzleEntry[4][4] = q5r2s2; puzzleEntry[4][5] = q5r2s3; puzzleEntry[4][6] = q6r2s1; puzzleEntry[4][7] = q6r2s2; puzzleEntry[4][8] = q6r2s3;

puzzleEntry[5][0] = q4r3s1; puzzleEntry[5][1] = q4r3s2; puzzleEntry[5][2] = q4r3s3; puzzleEntry[5][3] = q5r3s1; puzzleEntry[5][4] = q5r3s2; puzzleEntry[5][5] = q5r3s3; puzzleEntry[5][6] = q6r3s1; puzzleEntry[5][7] = q6r3s2; puzzleEntry[5][8] = q6r3s3;

puzzleEntry[6][0] = q7r1s1; puzzleEntry[6][1] = q7r1s2; puzzleEntry[6][2] = q7r1s3; puzzleEntry[6][3] = q8r1s1; puzzleEntry[6][4] = q8r1s2; puzzleEntry[6][5] = q8r1s3; puzzleEntry[6][6] = q9r1s1; puzzleEntry[6][7] = q9r1s2; puzzleEntry[6][8] = q9r1s3;

puzzleEntry[7][0] = q7r2s1; puzzleEntry[7][1] = q7r2s2; puzzleEntry[7][2] = q7r2s3; puzzleEntry[7][3] = q8r2s1; puzzleEntry[7][4] = q8r2s2; puzzleEntry[7][5] = q8r2s3; puzzleEntry[7][6] = q9r2s1; puzzleEntry[7][7] = q9r2s2; puzzleEntry[7][8] = q9r2s3;

puzzleEntry[8][0] = q7r3s1; puzzleEntry[8][1] = q7r3s2; puzzleEntry[8][2] = q7r3s3; puzzleEntry[8][3] = q8r3s1; puzzleEntry[8][4] = q8r3s2; puzzleEntry[8][5] = q8r3s3; puzzleEntry[8][6] = q9r3s1; puzzleEntry[8][7] = q9r3s2; puzzleEntry[8][8] = q9r3s3; }

public JTextField getCell(int x, int y){ if(x puzzleEntry.length || y > puzzleEntry[x].length){ throw new IndexOutOfBoundsException("That spot is not in the board."); } return puzzleEntry[x][y]; }

public sudokuBoard() { buildBoard(puzzleEntry);

Arrays.stream(puzzleEntry).forEach( Row -> Arrays.stream(Row).forEach( field -> field.addKeyListener(new boardKeyAdapter(field, digits)) ) );

readFile.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { setBoardContent(solver.readFile()); } });

checkPuzzle.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { solver.checkPuzzle(getBoardContent()); } });

solve.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { setBoardContent(solver.solvePuzzle(getBoardContent())); } }); }

private int[][] getBoardContent() { int[][] boardNumbers = new int[SIZE][SIZE]; for(int x = 0; x 0 ? Integer.parseInt(data) : 0; } } return boardNumbers; }

private void setBoardContent(int[][] intConent) { for(int x = 0; x 9? "" : intConent[x][y] + ""); } } }

private void createUIComponenets(){ }

public static void main(String[] args) { JFrame frame = new JFrame("sudokuBoard"); frame.setContentPane(new sudokuBoard().jp); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } }

boardKeyAdapter.java

import javax.swing.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.KeyListener;

public class boardKeyAdapter extends KeyAdapter { private JTextField field; private String legalEntries;

public boardKeyAdapter(JTextField field, String allowedContent){ this.field = field; legalEntries = allowedContent; }

@Override public void keyTyped(KeyEvent e) { String text = field.getText(); if(text.length() > 0) { String newContent = text.substring(text.length()); field.setText(newContent); } }

@Override public void keyReleased(KeyEvent e){ String text = field.getText(); if(!legalEntries.contains(text)){ field.setText(""); } } }

Any help on this would be much appreciated. I am at a loss...

isi sudokuBoard Read FileCheckSove isi sudokuBoard Read FileCheckSove

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!