Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p><strong>Just because I had nothing better to do and I always like a challenge:</strong></p> <pre><code>&lt;?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 &lt; $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 &lt; 9 ) $number++; else $number = 0; } // Sort by "x" numerically. ksort($spiral, SORT_NUMERIC); foreach ( $spiral as &amp;$x ) { // Sort by "y" numerically. ksort($x, SORT_NUMERIC); foreach ( $x as $ykey =&gt; $y ) // Output the number. echo $y . ' '; // Skip a line. echo PHP_EOL; } </code></pre> <p><strong>Outputs:</strong></p> <pre><code>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 </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload