Guest User

Untitled

a guest
Oct 30th, 2011
137
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Quick Java solution to:
  2.  
  3. http://beust.com/weblog/2011/10/30/a-new-coding-challenge
  4.  
  5. @Test
  6.     public void doIt() {
  7.         final int n = 40;
  8.         int[] max = new int[5];
  9.         for (int i = 1; i < n; i++) {
  10.             for (int j = i + 1; j < n; j++) {
  11.                 for (int k = j + 1; k < n; k++) {
  12.                     for (int l = k + 1; l < n; l++) {
  13.                         final int v = cnt(new int[]{i, j, k, l});
  14.                         if ( v > max[0] ) {
  15.                             max = new int[] {v,i,j,k,l};
  16.                         }
  17.                     }
  18.                 }
  19.             }
  20.         }
  21.         System.out.println( " max: " + max[0] + " (" + max[1] + ", " + max[2] + ", " + max[3] + ", "
  22.  + max[4] + ")" );
  23.     }
  24.  
  25.     public int cnt( final int[] a ) {
  26.         int cnt = 0;
  27.         for (int p = 1; p <= 40; p++) {
  28.             boolean b = false;
  29.             for (int i = 0; i < 4; i++) {
  30.                 b = b || p == a[i];
  31.             }
  32.             for (int i = 0; i < 4; i++) {
  33.                 for (int j = i + 1; j < 4; j++) {
  34.                     b = b || p == a[i] + a[j];
  35.                     b = b || p == a[i] - a[j];
  36.                     b = b || p == a[j] - a[i];
  37.                 }
  38.             }
  39.             for ( int i = 0; i < 4; i++ ) {
  40.                 for ( int j = i + 1; j < 4; j++ ) {
  41.                     for ( int k = j + 1; k < 4; k++ ) {
  42.                         b = b || p == +a[i]+a[j]+a[k];
  43.                         b = b || p == +a[i]+a[j]-a[k];
  44.                         b = b || p == +a[i]-a[j]+a[k];
  45.                         b = b || p == -a[i]+a[j]+a[k];
  46.                         b = b || p == -a[i]-a[j]+a[k];
  47.                         b = b || p == -a[i]+a[j]-a[k];
  48.                         b = b || p == +a[i]-a[j]-a[k];
  49.                     }
  50.                 }
  51.             }
  52.             b = b || p == +a[0]+a[1]+a[2]+a[3];
  53.             b = b || p == -a[0]+a[1]+a[2]+a[3];
  54.             b = b || p == +a[0]-a[1]+a[2]+a[3];
  55.             b = b || p == +a[0]+a[1]-a[2]+a[3];
  56.             b = b || p == +a[0]+a[1]-a[2]-a[3];
  57.             b = b || p == -a[0]-a[1]+a[2]+a[3];
  58.             b = b || p == -a[0]+a[1]-a[2]+a[3];
  59.             b = b || p == -a[0]+a[1]+a[2]-a[3];
  60.             b = b || p == +a[0]-a[1]-a[2]+a[3];
  61.             b = b || p == +a[0]-a[1]+a[2]-a[3];
  62.             b = b || p == +a[0]+a[1]-a[2]-a[3];
  63.             b = b || p == +a[0]-a[1]-a[2]-a[3];
  64.             b = b || p == -a[0]+a[1]-a[2]-a[3];
  65.             b = b || p == -a[0]-a[1]+a[2]-a[3];
  66.             b = b || p == -a[0]-a[1]-a[2]+a[3];
  67.             cnt += b ? 1 : 0;
  68.         }
  69.         return cnt;
  70.     }
  71.  
  72.  
RAW Paste Data