Untitled
By: a guest | Mar 10th, 2010 | Syntax:
PHP | Size: 1.39 KB | Hits: 127 | Expires: Never
<?php
function diag_set( & $field, $x, $y )
{
$y_max = count( $field );
if( ! $y_max )
{
return NULL;
}
$x_max = count( $field[0] );
echo 'x_max = ', $x_max, "\n";
echo 'y_max = ', $y_max, "\n";
echo '-----------', "\n";
$x1 = $x - 1;
$x2 = $x + 1;
$y1 = $y - 1;
$y2 = $y + 1;
while( $y1 >= 0 || $y2 < $y_max || $x1 >= 0 || $x2 < $x_max )
{
echo 'x1 = ', $x1, "\n";
echo 'x2 = ', $x2, "\n";
echo 'y1 = ', $y1, "\n";
echo 'y2 = ', $y2, "\n";
echo 'P(', $x1, '|', $y1, ')', "\n";
echo 'P(', $x2, '|', $y1, ')', "\n";
echo 'P(', $x1, '|', $y2, ')', "\n";
echo 'P(', $x2, '|', $y2, ')', "\n";
echo '-----------', "\n";
// TODO: Doppelte Vergleiche entfernen.
if( ( $y1 >= 0 && ( ( $x1 >= 0 && $field[$y1][$x1] ) || ( $x2 < $x_max && $field[$y1][$x2] ) ) ) ||
( $y2 < $y_max && ( ( $x1 >= 0 && $field[$y2][$x1] ) || ( $x2 < $x_max && $field[$y2][$x2] ) ) ) )
{
return true; // Gotcha!
}
if( $x1 >= 0 )
{
$x1--;
}
if( $x2 < $x_max )
{
$x2++;
}
if( $y1 >= 0 )
{
$y1--;
}
if( $y2 < $y_max )
{
$y2++;
}
}
return false; // No match.
}
$field = array(
array( 0, 0, 0, 0, 0, 0, ),
array( 0, 1, 0, 0, 0, 0, ),
array( 0, 0, 0, 0, 0, 0, ),
array( 0, 0, 0, 0, 0, 0, ),
array( 0, 0, 0, 0, 0, 0, ),
array( 0, 0, 0, 0, 0, 0, ),
);
var_dump( diag_set( $field, 3, 3 ) );