Advertisement
Guest User

Untitled

a guest
Mar 30th, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class Sudoku {
  4.  
  5. private static final int SIZE = 9;
  6.  
  7. //solver//
  8. public static boolean solve(int[][] b) {
  9. if(b.length != SIZE) return false;
  10. for(int k = 0; k < SIZE; k++) {
  11. for(int l = 0; l < SIZE; l++) {
  12. if(b[k][l] != 0) continue;
  13. for(int m = 1; m < 10; m++) {
  14. if(valid(b, m, k, l)) {
  15. b[k][l] = m;
  16. if(solve(b)) {
  17. return true;
  18. } else {
  19. b[k][l] = 0;
  20. }
  21. }
  22. } return false;
  23. }
  24. } System.out.println(toString(b));
  25. return true;
  26. }
  27.  
  28.  
  29. //check valid move//
  30. public static boolean valid(int[][] b, int number, int row, int col) {
  31. if(number == 0) return true;
  32. if((row<0||row>8)||(col<0||col>8)) return false;
  33.  
  34. //check row//
  35. for(int k = 0; k < SIZE; k++) {
  36. if(k != col) {
  37. if(b[row][k] == number) return false;
  38. }
  39. }
  40.  
  41. //check column//
  42. for(int k = 0; k < SIZE; k++) {
  43. if(k != row) {
  44. if(b[k][col] == number) return false;
  45. }
  46. }
  47.  
  48. //check grids//
  49. for(int k = (row/3)*3; k < (row/3)*3+3; k++) {
  50. for(int l = (col/3)*3; l < (col/3)*3+3; l++) {
  51. if(k != row && l != col) {
  52. if(b[row][col] == number) return false;
  53. }
  54. }
  55. } return true;
  56. }
  57.  
  58. //show board//
  59. public static String toString(int[][] b) {
  60. String result = "";
  61. if(b.length != SIZE || b[0].length != SIZE) return null;
  62. for(int k = 0; k < 9; k++) {
  63. if(k%3 == 0) result+=("+++++++++++++++++++++++++\n");
  64. for(int l = 0; l < 9; l++) {
  65. if(l == 0) result+=("+ "+b[k][l]+" ");
  66. else if(l == 8) result+=(b[k][l]+" +\n");
  67. else if((l+1)%3 == 0) result+=(b[k][l]+" + ");
  68. else result+=(b[k][l]+" ");
  69. }
  70. } result+=("+++++++++++++++++++++++++");
  71. return result;
  72. }
  73.  
  74.  
  75.  
  76. //tester//
  77. public static void main(String[] args) {
  78.  
  79. Scanner scan = new Scanner(System.in);
  80.  
  81. int[][] board = {
  82. {6, 9, 3, 0, 5, 7, 1, 2, 0},
  83. {0, 0, 0, 0, 0, 0, 3, 0, 0},
  84. {0, 0, 2, 4, 0, 0, 0, 0, 6},
  85. {0, 0, 0, 7, 0, 0, 2, 5, 0},
  86. {4, 0, 5, 9, 0, 8, 6, 0, 1},
  87. {0, 7, 8, 0, 0, 6, 0, 0, 0},
  88. {8, 0, 0, 0, 0, 4, 7, 0, 0},
  89. {0, 0, 1, 0, 0, 0, 0, 0, 0},
  90. {0, 6, 7, 1, 8, 0, 4, 3, 2},
  91. };
  92.  
  93. System.out.println(toString(board));
  94. System.out.println("solving");
  95. solve(board);
  96.  
  97. scan.close();
  98.  
  99. }
  100.  
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement