Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.61 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Arrays;
  3. import java.util.HashSet;
  4. import java.util.Set;
  5.  
  6. public class Solver {
  7. int [][] input;
  8. int[] added = {0, 1, 2, 9, 10, 11, 18, 19, 20};
  9. ArrayList<ArrayList<Integer>> aid = new ArrayList<>(81);
  10. Boolean change = true;
  11. Boolean second = true;
  12.  
  13. Solver(int[][] solve){
  14. input = solve;
  15. for (int i = 0; i<81; i++){
  16. aid.add(new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9)));
  17. }
  18. }
  19. private void fuck(Integer al1, Integer al2, Integer a13, Integer a14, Set<ArrayList> okay) {
  20. if( aid.get((al1/3)*27+((al2/3)*3+a13)).size()==2){
  21. if (!(okay.add(aid.get((al1 / 3) * 27 + (al2 / 3)*3+a13)))) {
  22. for (int i : added) {
  23. if (!(aid.get((al1 / 3) * 27 + (al2 / 3) * 3 + a13).equals(aid.get((al1 / 3) * 27 + (al2 / 3) * 3 + i)))) {
  24. for (int d : aid.get((al1 / 3) * 27 + (al2 / 3) * 3 + a13)) {
  25. if (aid.get((al1 / 3) * 27 + (al2 / 3) * 3 + i).remove(Integer.valueOf(d))) second = true;
  26.  
  27. }
  28. }
  29. }
  30. }
  31. }
  32. }
  33. private void checkIfOne(int i, int j){
  34. if (aid.get(i*9+j).size() == 1){
  35.  
  36. input[i][j] = aid.get(i*9+j).get(0);
  37. aid.get(i*9+j).remove(0);
  38. change = true;
  39. second = true;
  40. }
  41. }
  42. void solve(){
  43. change = false;
  44. for (int i = 0; i < 9; i++){
  45. for(int j = 0; j < 9; j++){
  46. if (input[i][j]!= 0){
  47. aid.get(i*9+j).clear();
  48. for (int c = 0; c < 9; c++){
  49. if( aid.get(i*9+c).remove(Integer.valueOf(input[i][j]))){
  50. change = true;
  51. second=true;
  52.  
  53. }
  54. if( aid.get(c*9+j).remove(Integer.valueOf(input[i][j]))){
  55. second=true;
  56. change = true;
  57. }
  58. }
  59. for (int g: added){
  60. if(aid.get((i/3)*27+(j/3)*3+g).remove(Integer.valueOf(input[i][j]))) {
  61. change=true;
  62. second = true;
  63.  
  64. }
  65. }
  66.  
  67.  
  68. }
  69. checkIfOne(i,j);}
  70. }}
  71. void hardSolve(){
  72. for (int i = 0; i < 9; i++){
  73. Set<ArrayList> usedNums = new HashSet<>();
  74. for (int j = 0; j < 9; j++){
  75. if (aid.get(i*9+j).size() == 2){
  76. if(! usedNums.add(aid.get(i*9+j))){
  77. for (int c = 0; c < 9; c++){
  78. if(!(aid.get(i*9+c).equals(aid.get(i*9+j)))){
  79. for (int d : aid.get(i*9+j)){
  80. if(aid.get(i*9+c).remove(Integer.valueOf(d))){
  81. change = true;
  82. second=true;
  83. }
  84. System.out.println("test");
  85. System.out.println(aid.get(58));
  86. }
  87. }
  88. }
  89. }
  90. }
  91. checkIfOne(i,j);}
  92. }
  93. for (int j = 0; j < 9; j++){
  94. Set<ArrayList> usedNums = new HashSet<>();
  95. for (int i = 0; i < 9; i++){
  96. if (aid.get(i*9+j).size() == 2){
  97. if(! usedNums.add(aid.get(i*9+j))){
  98. for (int c = 0; c < 9; c++){
  99. if(!(aid.get(c*9+j).equals(aid.get(i*9+j)))){
  100. for (int d : aid.get(i*9+j)){
  101. if(aid.get(c*9+j).remove(Integer.valueOf(d))) change = true;
  102.  
  103. System.out.println("test");
  104. }
  105. }
  106. }
  107. }
  108. }
  109. }
  110. }
  111.  
  112. for (int i = 0; i < 9; i++){
  113. for (int j = 0; j < 9; j++){
  114. Set<ArrayList> usedNums = new HashSet<>();
  115. for (int d : added){
  116. for (int g : added){
  117. fuck(i,j,d,g,usedNums);
  118. }
  119. }
  120. }
  121. }
  122. for (int i = 0; i < 9; i++){
  123. for (int j = 0; j < 9; j++) {
  124. checkIfOne(i, j);
  125. }
  126. }solve();}
  127.  
  128.  
  129.  
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement