rendered paste body<?php$N = 4;$data = array();for ( $i = 0; $i < $N; $i ++ ){ $data[ $i ] = array(); for ( $j = 0; $j < $N; $j ++ ) { $data[ $i ][ $j ] = 0; } }process_data( $data );print_data( $data );function process_data( &$data ){ $N = count( $data ); // min/max wiersz $w0 = 0; $w1 = $N-1; // min max kolumna $k0 = 0; $k1 = $N-1; // $i - wiersze // $j - koluny $data[0][0] = 1; $c = 2; while ( true ) { $j = $k0; $i = $w0; ps( $i, $j, $w0, $w1, $k0, $k1 ); // w prawo for ( $i = $w0+1; $i <= $w1; $i++ ) { $data[ $j ][ $i ] = $c; $c++; } ps( $i, $j, $w0, $w1, $k0, $k1 ); $w0++; $i = $w1; // w dol for ( $j = $k0+1; $j <= $k1; $j++ ) { $data[ $j ][ $i ] = $c; $c++; } $k1--; $j = $k1; ps( $i, $j, $w0, $w1, $k0, $k1, "w lewo" ); // w lewo for ( $i = $w1; $i >= $w0; $i-- ) { $data[ $j ][ $i ] = $c; $c++; } ps( $i, $j, $w0, $w1, $k0, $k1 ); break; }}function ps( $i, $j, $w0, $w1, $k0, $k1, $msg = "" ){ print( '<pre>'); print( "====================<br />" ); print( $msg . "<br />" ); printf( "i = %d; j = %d<br />", $i, $j ); printf( "w0 = %d; w1 = %d<br />", $w0, $w1 ); printf( "k0 = %d; k1 = %d<br />", $k0, $k1 ); print( '</pre>');}function print_data( $data ){ print( '<pre>' ); $N = count( $data ); for ( $i = 0; $i < $N; $i ++ ) { for ( $j = 0; $j < $N; $j ++ ) { printf( "%4d ", $data[ $i ][ $j ] ); } print( "<br />" ); } print( '</pre>' );}?>