Advertisement
Creamsteak

test4x4solver

Sep 10th, 2011
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.32 KB | None | 0 0
  1. import java.util.Random;
  2. import java.util.LinkedList;
  3.  
  4. class test4 {
  5.     public static void main(String args[]) {
  6.  
  7.         //Start Time
  8.         long start = System.currentTimeMillis();
  9.  
  10.         //Memory
  11.         LinkedList<Integer> temp = new LinkedList<Integer>();
  12.         LinkedList<Integer> temper = new LinkedList<Integer>();
  13.         LinkedList<Integer> list = new LinkedList<Integer>();
  14.         Random generator = new Random();
  15.         int matrix[][] = new int[4][4];
  16.         int picked[][] = new int[4][4];
  17.         int repicked[][] = new int[4][4];
  18.         int total=0;
  19.         int curtotal=0;
  20.         int colrow=0;
  21.         int picker=0;
  22.         int max=0;
  23.  
  24.         //Build Temporary Default Array.
  25.         temper = new LinkedList<Integer>();
  26.         temper.add(0);
  27.         temper.add(1);
  28.         temper.add(2);
  29.         temper.add(3);
  30.         temper.add(4);
  31.         temper.add(5);
  32.         temper.add(6);
  33.         temper.add(7);
  34.  
  35.         //Number of tests to run
  36.         for(int runs=0;runs<1000;runs++){
  37.  
  38.             //Sets per-run variables
  39.             curtotal=0;
  40.  
  41.             //Builds the matrix and the picked list
  42.             for(int i=0;i<4;i++)for(int j=0;j<4;j++){
  43.                 matrix[i][j]=generator.nextInt(16);
  44.                 picked[i][j]=0;
  45.                 repicked[i][j]=0;
  46.             }
  47.  
  48.             //Solve the Matrix
  49.             for(int a=0;a<8;a++)
  50.             for(int b=0;b<7;b++)
  51.             for(int c=0;c<6;c++)
  52.             for(int d=0;d<5;d++)
  53.             for(int e=0;e<4;e++)
  54.             for(int f=0;f<3;f++)
  55.             for(int g=0;g<2;g++){
  56.  
  57.                 //Create a temp list...
  58.                 temp = new LinkedList<Integer>(temper);
  59.  
  60.                 //Create an ordered list...
  61.                 list = new LinkedList<Integer>();
  62.                 list.add(temp.get(a));
  63.                 temp.remove(a);
  64.                 list.add(temp.get(b));
  65.                 temp.remove(b);
  66.                 list.add(temp.get(c));
  67.                 temp.remove(c);
  68.                 list.add(temp.get(d));
  69.                 temp.remove(d);
  70.                 list.add(temp.get(e));
  71.                 temp.remove(e);
  72.                 list.add(temp.get(f));
  73.                 temp.remove(f);
  74.                 list.add(temp.get(g));
  75.                 temp.remove(g);
  76.                 list.add(temp.get(0));
  77.                 //temp.remove(0);
  78.  
  79.                 //Go through operations in order...
  80.                 while(list.size()>0){
  81.                     colrow = list.get(0);
  82.                     list.remove(0);
  83.                     picker=0;
  84.                     max=0;
  85.  
  86.                     //Switch, if it's a column do this, else do that...
  87.                     switch (colrow){
  88.  
  89.                         //Columns
  90.                         case 0:
  91.                         case 1:
  92.                         case 2:
  93.                         case 3:
  94.                             max=0;
  95.                             picker=5;
  96.                             for(int i=0;i<4;i++){
  97.                                 if(max < matrix[i][colrow] && picked[i][colrow]!=1){
  98.                                     max = matrix[i][colrow];
  99.                                     picker = i;
  100.                                 }
  101.                             }
  102.                             if(picker!=5){
  103.                                 picked[picker][colrow]=1;
  104.                                 total=total+matrix[picker][colrow];
  105.                             }
  106.                         break;
  107.  
  108.                         //Rows
  109.                         case 4:
  110.                         case 5:
  111.                         case 6:
  112.                         case 7:
  113.                             max=0;
  114.                             picker=5;
  115.                             for(int i=0;i<4;i++){
  116.                                 if(max < matrix[colrow-4][i] && picked[colrow-4][i]!=1){
  117.                                     max = matrix[colrow-4][i];
  118.                                     picker = i;
  119.                                 }
  120.                             }
  121.                             if(picker!=5){
  122.                                 picked[colrow-4][picker]=1;
  123.                                 total=total+matrix[colrow-4][picker];
  124.                             }
  125.                         break;
  126.  
  127.                         default:
  128.                             //Shouldn't happen...
  129.                         break;
  130.                     }
  131.                 }
  132.  
  133.                 //Check Total and reset
  134.                 if(total > curtotal) curtotal=total;
  135.                 total=0;
  136.  
  137.                 //Reset Picked
  138.                 for(int i=0;i<4;i++)for(int j=0;j<4;j++){
  139.                     picked[i][j]=0;
  140.                 }
  141.  
  142.             }
  143.  
  144.  
  145.             System.out.println();
  146.             System.out.println(curtotal);
  147.             System.out.println();
  148.  
  149.  
  150.         }
  151.  
  152.         //End Time
  153.         long stop = System.currentTimeMillis();
  154.         System.out.println("Finished at: "+(stop-start));
  155.  
  156.     }
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement