I am searching for someone who could write me a script to output the following pattern:
http://img84.imageshack.us/img84/3038/82351644.png
its starting with 0 in the center, then 1 to the left, 2 down, 3 right...you get the idea. - its always 0 to 9 and starting over again...
i found this topic , but it is clearly different from my request. since i have no good understanding of php and the "pros" are here, i am asking nicely if someone would spend some time doing this for me. That would be great! Also if I could set in a variable how many "rounds" the script is performing, that would be awesome! - Thanks a lot
Just because I had nothing better to do and I always like a challenge:
<?php
// A few constants.
define('DOWN', 0);
define('LEFT', 3);
define('RIGHT', 1);
define('UP', 2);
// Dictates the size of the spiral.
$size = 11;
// The initial number.
$number = 0;
// The initial direction.
$direction = RIGHT;
// The distance and number of points remaining before switching direction.
$remain = $distance = 1;
// The initial "x" and "y" point.
$y = $x = round($size / 2);
// The dimension of the spiral.
$dimension = $size * $size;
// Loop
for ( $count = 0; $count < $dimension; $count++ )
{
// Add the current number to the "x" and "y" coordinates.
$spiral[$x][$y] = $number;
// Depending on the direction, set the "x" or "y" value.
switch ( $direction )
{
case LEFT: $y--; break;
case UP: $x--; break;
case DOWN: $x++; break;
case RIGHT: $y++; break;
}
// If the distance remaining is "0", switch direction.
if ( --$remain == 0 )
{
switch ( $direction )
{
case DOWN:
$direction = LEFT;
$distance++;
break;
case UP:
$distance++;
default:
$direction--;
break;
}
// Reset the distance remaining.
$remain = $distance;
}
// Increment the number or reset it to 0 if the number is 9.
if ( $number < 9 )
$number++;
else
$number = 0;
}
// Sort by "x" numerically.
ksort($spiral, SORT_NUMERIC);
foreach ( $spiral as &$x )
{
// Sort by "y" numerically.
ksort($x, SORT_NUMERIC);
foreach ( $x as $ykey => $y )
// Output the number.
echo $y . ' ';
// Skip a line.
echo PHP_EOL;
}
Outputs:
0 1 2 3 4 5 6 7 8 9 0
9 2 3 4 5 6 7 8 9 0 1
8 1 2 3 4 5 6 7 8 9 2
7 0 1 0 1 2 3 4 5 0 3
6 9 0 9 6 7 8 9 6 1 4
5 8 9 8 5 0 1 0 7 2 5
4 7 8 7 4 3 2 1 8 3 6
3 6 7 6 5 4 3 2 9 4 7
2 5 6 5 4 3 2 1 0 5 8
1 4 3 2 1 0 9 8 7 6 9
0 9 8 7 6 5 4 3 2 1 0