Share Pastebin
Guest
Public paste!

Untitled

By: a guest | Mar 10th, 2010 | Syntax: PHP | Size: 1.39 KB | Hits: 127 | Expires: Never
Copy text to clipboard
  1. <?php
  2. function diag_set( & $field, $x, $y )
  3. {
  4.         $y_max = count( $field );
  5.         if( ! $y_max )
  6.         {
  7.                 return NULL;
  8.         }
  9.  
  10.         $x_max = count( $field[0] );
  11.  
  12.         echo 'x_max = ', $x_max, "\n";
  13.         echo 'y_max = ', $y_max, "\n";
  14.         echo '-----------', "\n";
  15.  
  16.         $x1 = $x - 1;
  17.         $x2 = $x + 1;
  18.         $y1 = $y - 1;
  19.         $y2 = $y + 1;
  20.  
  21.         while( $y1 >= 0 || $y2 < $y_max || $x1 >= 0 || $x2 < $x_max )
  22.         {
  23.                 echo 'x1 = ', $x1, "\n";
  24.                 echo 'x2 = ', $x2, "\n";
  25.                 echo 'y1 = ', $y1, "\n";
  26.                 echo 'y2 = ', $y2, "\n";
  27.  
  28.                 echo 'P(', $x1, '|', $y1, ')', "\n";
  29.                 echo 'P(', $x2, '|', $y1, ')', "\n";
  30.                 echo 'P(', $x1, '|', $y2, ')', "\n";
  31.                 echo 'P(', $x2, '|', $y2, ')', "\n";
  32.                 echo '-----------', "\n";
  33.  
  34.                 // TODO: Doppelte Vergleiche entfernen.
  35.                 if( ( $y1 >= 0 && ( ( $x1 >= 0 && $field[$y1][$x1] ) || ( $x2 < $x_max && $field[$y1][$x2] ) ) ) ||
  36.                         ( $y2 < $y_max && ( ( $x1 >= 0 && $field[$y2][$x1] ) || ( $x2 < $x_max && $field[$y2][$x2] ) ) ) )
  37.                 {
  38.                         return true; // Gotcha!
  39.                 }
  40.  
  41.                 if( $x1 >= 0 )
  42.                 {
  43.                         $x1--;
  44.                 }
  45.                 if( $x2 < $x_max )
  46.                 {
  47.                         $x2++;
  48.                 }
  49.  
  50.                 if( $y1 >= 0 )
  51.                 {
  52.                         $y1--;
  53.                 }
  54.                 if( $y2 < $y_max )
  55.                 {
  56.                         $y2++;
  57.                 }
  58.  
  59.         }
  60.  
  61.         return false; // No match.
  62. }
  63.  
  64. $field = array(
  65.         array( 0, 0, 0, 0, 0, 0, ),
  66.         array( 0, 1, 0, 0, 0, 0, ),
  67.         array( 0, 0, 0, 0, 0, 0, ),
  68.         array( 0, 0, 0, 0, 0, 0, ),
  69.         array( 0, 0, 0, 0, 0, 0, ),
  70.         array( 0, 0, 0, 0, 0, 0, ),
  71. );
  72.  
  73. var_dump( diag_set( $field, 3, 3 ) );