A //$yoko_ofset=0; $anss[$yoko+$yoko_ofset][$tate+$tate_ofset]=$num; //echo "A:".$anss[$yoko+$yoko_ofset][$tate+$tate_ofset].PHP_EOL; $num++; $yoko++; if($num>=$n*$n+1) break 2; } //----------------------------------------------------- for($i=0;$i<$width;$i++){ //down B //$yoko_ofset=0; $anss[$yoko+$yoko_ofset][$tate+$tate_ofset]=$num; //echo "B:".$anss[$yoko+$yoko_ofset][$tate+$tate_ofset].PHP_EOL; $num++; $tate++; if($num>=$n*$n+1) break 2; } //------------------------------------------------------ for($i=0;$i<$width;$i++){ //下・横 <--- C //$yoko_ofset=0; $anss[$yoko+$yoko_ofset][$tate+$tate_ofset]=$num; //echo "C:".$anss[$yoko+$yoko_ofset][$tate+$tate_ofset].PHP_EOL; $num++; $yoko--; if($num>=$n*$n+1) break 2; } //------------------------------------------------------- for($i=0;$i<$width;$i++){ //down D //$yoko_ofset=0; $anss[$yoko+$yoko_ofset][$tate+$tate_ofset]=$num; //echo "D:".$anss[$yoko+$yoko_ofset][$tate+$tate_ofset].PHP_EOL; $num++; $tate--; if($num>=$n*$n+1) break 2; } if($width==0){ $anss[$yoko+$yoko_ofset][$tate+$tate_ofset]=$num; //echo "END:".$anss[$yoko+$yoko_ofset][$tate+$tate_ofset].PHP_EOL; $num++; } $st=$st+1; $yoko_ofset=$yoko_ofset+1; // 横移動 $tate_ofset=$tate_ofset+1; $width=$width-2; if($num>=$n*$n+1) break; } // 表示 for($i=0;$i<$n;$i++){ for($k=0;$k<$n;$k++){ printf("%03d ", $anss[$k][$i]); if($k==$n-1){ echo PHP_EOL; } } }