Guest User

Untitled

a guest
May 9th, 2012
189
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.io.BufferedWriter;
  2. import java.io.File;
  3. import java.io.FileWriter;
  4. import java.io.IOException;
  5.  
  6. public class KnightMain {
  7.  
  8.     static int getnewx(int oldx, int rand) {
  9.         int newx = oldx;
  10.         switch (rand) {
  11.         case 0: // NNE
  12.             newx += 1;
  13.             break;
  14.         case 1: // NE
  15.             newx += 2;
  16.             break;
  17.         case 2: // SE
  18.             newx += 2;
  19.             break;
  20.         case 3: // SSE
  21.             newx += 1;
  22.             break;
  23.         case 4: // SSW
  24.             newx -= 1;
  25.             break;
  26.         case 5: // SW
  27.             newx -= 2;
  28.             break;
  29.         case 6: // NW
  30.             newx -= 2;
  31.             break;
  32.         case 7: // NNW
  33.             newx -= 1;
  34.             break;
  35.         default:
  36.             ;
  37.         }
  38.         return newx;
  39.     }
  40.  
  41.     static int getnewy(int oldy, int rand) {
  42.         int newy = oldy;
  43.         switch (rand) {
  44.         case 0: // NNE
  45.             newy -= 2;
  46.             break;
  47.         case 1: // NE
  48.             newy -= 1;
  49.             break;
  50.         case 2: // SE
  51.             newy += 1;
  52.             break;
  53.         case 3: // SSE
  54.             newy += 2;
  55.             break;
  56.         case 4: // SSW
  57.             newy += 2;
  58.             break;
  59.         case 5: // SW
  60.             newy += 1;
  61.             break;
  62.         case 6: // NW
  63.             newy -= 1;
  64.             break;
  65.         case 7: // NNW
  66.             newy += 2;
  67.             break;
  68.         default:
  69.             ;
  70.         }
  71.         return newy;
  72.     }
  73.  
  74.     public static void main(String[] args) throws IOException {
  75.        
  76.         File f = new File("/home/matze/knight.csv");
  77.         BufferedWriter bw = new BufferedWriter(new FileWriter(f));
  78.         long sum = 0;
  79.         for (int i = 0; i < 1000000; i++) {
  80.             int x = 0;
  81.             int y = 0;
  82.             int rand = 0;
  83.             int movecounter = 0;
  84.             do {// move until starting position
  85.                
  86.                 while (true) { // make valid random move
  87.                     double drand = Math.random() * 8;
  88.                     rand = (int) Math.floor(drand);
  89.                     int newx = getnewx(x, rand);
  90.                     int newy = getnewy(y, rand);
  91.                     if (newx >= 0 && newx < 8 && newy >= 0 && newy < 8) {
  92.                         x = newx;
  93.                         y = newy;
  94.                         break;
  95.                     }
  96.                 }
  97.                 movecounter++;
  98.             } while (x != 0 && y != 0);
  99.             bw.write(i+"," + movecounter);
  100.             bw.newLine();
  101.             sum += movecounter;
  102.         }
  103.         bw.close();
  104.         System.out.println(sum/1000000.0);
  105.     }
  106.  
  107. }
RAW Paste Data