home *** CD-ROM | disk | FTP | other *** search
/ PCNET 2006 November - Disc 1 / PCNET_CD_2006_11_1.iso / dergiden / sudoku / sudoku.jar / algorithm / e.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-02-25  |  1.7 KB  |  190 lines

  1. package algorithm;
  2.  
  3. import config.b;
  4. import util.a;
  5.  
  6. // $FF: renamed from: algorithm.e
  7. public final class class_0 {
  8.    // $FF: renamed from: a algorithm.g
  9.    g field_0 = new g();
  10.  
  11.    protected class_0(int var1) {
  12.       this.method_3(var1);
  13.    }
  14.  
  15.    // $FF: renamed from: a () algorithm.g
  16.    protected final g method_0() {
  17.       return this.field_0;
  18.    }
  19.  
  20.    // $FF: renamed from: a (int, int) int
  21.    private static int method_1(int var0, int var1) {
  22.       return g.a(var0, var1);
  23.    }
  24.  
  25.    // $FF: renamed from: a (int, int, int) boolean
  26.    private boolean method_2(int var1, int var2, int var3) {
  27.       if (this.field_0.e[var1][var2] == 0) {
  28.          return false;
  29.       } else {
  30.          this.field_0.b(var1, var2);
  31.  
  32.          for(int var5 = 1; var5 <= 9; ++var5) {
  33.             if (var5 != var3 && this.field_0.a(var1, var2, var5)) {
  34.                this.field_0.b(var1, var2, var3);
  35.                return false;
  36.             }
  37.          }
  38.  
  39.          return true;
  40.       }
  41.    }
  42.  
  43.    // $FF: renamed from: a (int) void
  44.    private void method_3(int var1) {
  45.       if (var1 == 0) {
  46.          this.method_4();
  47.       } else {
  48.          int[] var2 = new int[]{0, 5700, 5800, 40000};
  49.          if (var1 < 0) {
  50.             var1 = 1;
  51.          }
  52.  
  53.          if (var1 > 3) {
  54.             var1 = 3;
  55.          }
  56.  
  57.          String var4 = (new c()).a(var2[var1 - 1], var2[var1]);
  58.          int var6 = 0;
  59.          this.field_0.a();
  60.  
  61.          for(int var7 = 0; var7 < 9; ++var7) {
  62.             for(int var8 = 0; var8 < 9; ++var6) {
  63.                if (var4.charAt(var6) == '\n') {
  64.                   ++var6;
  65.                }
  66.  
  67.                int var5 = var4.charAt(var6) == '.' ? 0 : var4.charAt(var6) - 48;
  68.                this.field_0.b(var7, var8, var5);
  69.                ++var8;
  70.             }
  71.          }
  72.  
  73.       }
  74.    }
  75.  
  76.    // $FF: renamed from: b () void
  77.    private void method_4() {
  78.       int var1 = 0;
  79.       int var2 = b.c;
  80.       int[] var8 = new int[10];
  81.       int[] var9 = new int[10];
  82.       int[] var10 = new int[10];
  83.  
  84.       do {
  85.          this.field_0.a();
  86.          var1 = 0;
  87.  
  88.          for(int var11 = 0; var11 < 10; ++var11) {
  89.             var8[var11] = 0;
  90.             var10[var11] = 0;
  91.             var9[var11] = 0;
  92.          }
  93.  
  94.          label152:
  95.          while(var1 < var2) {
  96.             int var3 = a.a(0, 8);
  97.             if (var8[var3] < 4) {
  98.                int var5 = 0;
  99.  
  100.                while(true) {
  101.                   int var4 = a.a(0, 8);
  102.                   if (var10[var4] < 4 && var9[method_1(var3, var4)] < 4) {
  103.                      int var6 = 0;
  104.  
  105.                      while(true) {
  106.                         int var7 = a.a(1, 9);
  107.                         if (this.field_0.a(var3, var4, var7)) {
  108.                            int var10002 = var8[var3]++;
  109.                            var10002 = var10[var4]++;
  110.                            ++var9[method_1(var3, var4)];
  111.                            this.field_0.b(var3, var4, var7);
  112.                            ++var1;
  113.                            continue label152;
  114.                         }
  115.  
  116.                         ++var6;
  117.                         if (var6 >= 10) {
  118.                            continue label152;
  119.                         }
  120.                      }
  121.                   }
  122.  
  123.                   ++var5;
  124.                   if (var5 >= 10) {
  125.                      break;
  126.                   }
  127.                }
  128.             }
  129.          }
  130.       } while(!(new f(this.field_0)).b());
  131.  
  132.       this.field_0 = (new f(this.field_0)).a();
  133.       var1 = 0;
  134.       boolean[][] var22 = new boolean[10][10];
  135.       boolean[][] var12 = new boolean[10][10];
  136.       boolean[][] var13 = new boolean[10][10];
  137.  
  138.       for(int var14 = 0; var14 < 10; ++var14) {
  139.          var8[var14] = 9;
  140.          var10[var14] = 9;
  141.          var9[var14] = 9;
  142.  
  143.          for(int var15 = 0; var15 < 10; ++var15) {
  144.             var22[var14][var15] = false;
  145.             var12[var14][var15] = false;
  146.             var13[var14][var15] = false;
  147.          }
  148.       }
  149.  
  150.       var2 = 81 - b.c;
  151.  
  152.       for(int var23 = 0; var1 < var2 && var23 < 3; ++var23) {
  153.          for(int var17 = 0; var17 < 9; ++var17) {
  154.             for(int var18 = 0; var18 < 9; ++var18) {
  155.                int var24 = a.a(0, 8);
  156.                int var16 = a.a(0, 8);
  157.                if (var8[var24] > 3 && var10[var16] > 3 && var9[method_1(var24, var16)] > 3 && this.method_2(var24, var16, this.field_0.e[var24][var16])) {
  158.                   this.field_0.b(var24, var16);
  159.                   int var30 = var8[var24]--;
  160.                   var30 = var10[var16]--;
  161.                   --var9[method_1(var24, var16)];
  162.                   var23 = 0;
  163.                   ++var1;
  164.                }
  165.             }
  166.          }
  167.       }
  168.  
  169.       for(int var25 = 0; var25 < 9; ++var25) {
  170.          for(int var27 = 0; var27 < 9; ++var27) {
  171.             if (var8[var25] > 3 && var10[var27] > 3 && var9[method_1(var25, var27)] > 3 && this.method_2(var25, var27, this.field_0.e[var25][var27])) {
  172.                this.field_0.b(var25, var27);
  173.                int var32 = var8[var25]--;
  174.                var32 = var10[var27]--;
  175.                var32 = var9[method_1(var25, var27)]--;
  176.             }
  177.          }
  178.       }
  179.  
  180.       for(int var26 = 0; var26 < 9; ++var26) {
  181.          for(int var28 = 0; var28 < 9; ++var28) {
  182.             if (this.field_0.e[var26][var28] != 0) {
  183.                this.field_0.a[var26][var28] = true;
  184.             }
  185.          }
  186.       }
  187.  
  188.    }
  189. }
  190.