fork(27) download
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6.  
  7.  
  8.  
  9. import java.util.ArrayList;
  10. import java.util.Collections;
  11. import java.util.HashSet;
  12. import java.util.Set;
  13.  
  14. class Sudo {
  15.  
  16. public static boolean checker(int[][] bs, int i, ArrayList<Integer> ar) {
  17. ArrayList<Integer> temp_ar = new ArrayList<Integer>();
  18. boolean check1 = true; //For returning true for good Sudoku
  19. for(int e=0;e<9;e++){
  20. bs[i][e] = ar.get(e);
  21. }
  22.  
  23. for(int t=0;t<9;t++){
  24. for(int e=0;e<=i;e++){
  25.  
  26. temp_ar.add(e, bs[e][t]);
  27.  
  28. }
  29. Set<Integer> temp_set = new HashSet<Integer>(temp_ar);
  30. if(temp_set.size()<temp_ar.size()){
  31. check1 = false; break; //Something smelly
  32. }
  33. else {
  34. temp_ar.clear();
  35. temp_set.clear();
  36. }
  37. }
  38. return check1;
  39. }
  40. /**
  41.   * @param args the command line arguments
  42.   */
  43.  
  44. public static void main(String[] args) {
  45. ArrayList<Integer> ar = new ArrayList<Integer>();
  46. int[][] bs = new int[9][9];
  47. for(int i=0;i<9;i++){
  48. ar.add(i+1);
  49. // System.out.print(ar.get(i));
  50. }
  51. Collections.shuffle(ar);
  52.  
  53.  
  54.  
  55. for(int i=0;i<1;i++){
  56. for(int j=0;j<9;j++){
  57.  
  58. bs[i][j] = ar.get(j);
  59. }
  60.  
  61. }
  62. boolean check = true;
  63. for(int i=0;i<9;i++){
  64. if(i==3 ){
  65. check = checkPath(bs, i);
  66. if(check==false)
  67. i=i-2;
  68. //System.out.print("Haiii");
  69. }
  70. if(i==6){
  71. check = checkPath(bs,i);
  72. if(check==false){
  73. i=i-2;
  74. }
  75. }
  76.  
  77. for(int j=0;j<9;j++){
  78. if(i>0) {
  79. check = checker(bs,i,ar);
  80. if(check==false){
  81. i--;
  82. break;
  83. }
  84. else {
  85. bs[i][j]=ar.get(j);
  86. }
  87. }
  88.  
  89. }
  90.  
  91. Collections.shuffle(ar);
  92. }
  93.  
  94. for(int i=0;i<9;i++){
  95. for(int j=0;j<9;j++){
  96.  
  97. System.out.print(bs[i][j]+" ");
  98. if(j==2)
  99. System.out.print("| ");
  100. if(j==5) System.out.print("| ");
  101.  
  102. }
  103. System.out.print("\n");
  104. if(i==2) System.out.print("- - - - - - - - - - -\n");
  105. if(i==5) System.out.print("- - - - - - - - - - -\n");
  106. }
  107. }
  108.  
  109. public static boolean checkPath(int[][] bs, int i) {
  110. //boolean check_cP = false;
  111. ArrayList<Integer> temp_cP = new ArrayList<Integer>();
  112. Set<Integer> temp_setcP = new HashSet<Integer>();
  113. boolean denoter = true;
  114. while(i==3){
  115. for(int k =0;k<i;k++ ){
  116. for(int e=0;e<3;e++){
  117. temp_cP.add(e, bs[k][e]);
  118. }
  119. }
  120. temp_setcP = new HashSet<Integer>(temp_cP);
  121. if(temp_cP.size()>temp_setcP.size()){
  122. denoter = false;break;
  123.  
  124. }
  125. else {
  126. temp_cP.clear();
  127. temp_setcP.clear();
  128.  
  129. for(int k =0;k<i;k++ ){
  130. for(int e=3;e<6;e++){
  131. temp_cP.add(bs[k][e]);
  132. }
  133. }
  134. temp_setcP = new HashSet<Integer>(temp_cP);
  135. if(temp_cP.size()>temp_setcP.size()){
  136. denoter = false;break;
  137.  
  138. }
  139. else {
  140. break;
  141. }
  142. }
  143. }
  144. while(i==6){
  145.  
  146. for(int k =3;k<i;k++ ){
  147. for(int e=0;e<3;e++){
  148. temp_cP.add(e, bs[k][e]);
  149. }
  150. }
  151. temp_setcP = new HashSet<Integer>(temp_cP);
  152. if(temp_cP.size()>temp_setcP.size()){
  153. denoter = false;break;
  154.  
  155. }
  156. else {
  157. temp_cP.clear();
  158. temp_setcP.clear();
  159.  
  160. for(int k =3;k<i;k++ ){
  161. for(int e=3;e<6;e++){
  162. temp_cP.add(bs[k][e]);
  163. }
  164. }
  165. temp_setcP = new HashSet<Integer>(temp_cP);
  166. if(temp_cP.size()>temp_setcP.size()){
  167. denoter = false;break;
  168.  
  169. }
  170. else {
  171. break;
  172. }
  173. }
  174.  
  175. }
  176. return denoter;
  177. }
  178.  
  179. }
Success #stdin #stdout 2.16s 320448KB
stdin
Standard input is empty
stdout
9 5 3 | 8 4 6 | 2 7 1 
7 4 1 | 2 5 9 | 8 6 3 
2 8 6 | 1 3 7 | 4 5 9 
- - - - - - - - - - -
1 2 8 | 3 9 5 | 6 4 7 
3 7 4 | 6 1 8 | 5 9 2 
5 6 9 | 7 2 4 | 3 1 8 
- - - - - - - - - - -
4 9 2 | 5 8 1 | 7 3 6 
6 3 5 | 9 7 2 | 1 8 4 
8 1 7 | 4 6 3 | 9 2 5