Php 棋盘螺旋显示数组

标签 php

所以我正在寻找如何制作棋盘,但其中有一个螺旋而不是像这样制作的默认棋盘:

$checkerboard=array();
    for($row=0;$row<10;$row++){
    if($row%2==0){
        for($col=0;$col<10;$col++){
            if($col%2==0){
                $checkerboard[$row][$col]="white";
            }else{
                $checkerboard[$row][$col]="black";
            }
        }
    }else{
        for($col=0;$col<10;$col++){
            if($col%2==0){
                $checkerboard[$row][$col]="black";
            }else{
                $checkerboard[$row][$col]="white";
            }
        }
    }
}

我也试过像这样用 2 个对角线:

$diagonal=array();
    for($row=0;$row<10;$row++){
        for($col=0;$col<10;$col++){
            if($row==$col){
                $diagonal[$row][$col]='black';
            }else{
                $diagonal[$row][$col]='white';
            }
            if($row+$col==9){
                $diagonal[$row][$col]='black';
            }
        }
    }

然后像这样简单地回显:

echo "<table>";
for($row=0;$row<count($checkerboard);$row++){
    echo "<tr>";
        for($col=0;$col<count($checkerboard);$col++){
            echo "<td width='50px' height='50px' bgcolor='".$checkerboard[$row][$col]."'></td>";
        }
    echo "</tr>";
}

我想保持代码简单,因为我已经很长时间没有编写 php 代码了,而且它必须使用数组。

我在这里试过这个:

$spiral=array();
    for($row=0;$row<10;$row++){
        for($col=0;$col<10;$col++){
            $spiral[$row][$col]='white';
            if($row==0 or $row==9 or $col==0 or $col==9){
                $spiral[$row][$col]='black';
            }if($row==1 and $col==0){
                $spiral[$row][$col]='white';
            }if($row==2 and $col<8){
                $spiral[$row][$col]='black';
            }if($row>1 and $row<8 and $col==7){
                $spiral[$row][$col]='black';
            }if($row==7 and $col>1 and $col<8){
                $spiral[$row][$col]='black';
            }if($row>3 and $row<7 and $col==2){
                $spiral[$row][$col]='black';
            }if($row==4 and $col>2 and $col<6){
                $spiral[$row][$col]='black';
            }if($row==5 and $col==5){
                $spiral[$row][$col]='black';
            }
        }
    }

但是如果棋盘变大就很难改变了。有没有办法让它更容易?

最佳答案

试试这个:

我创建了一个空板,然后开始绘制水平线和垂直线,每次都从边缘开始。代码可能需要一些调整,但这是一个好的开始

$checkerboard=array();

$size = 12;

for ($row=0; $row<$size; $row++) {
    for ($col=0; $col<$size; $col++) {
        $checkerboard[$row][$col]="red";
    }
}

//horizontal
$pair = 0 ;
while ($pair < (int) $size / 2) {
    //drawing top half rows
    $row = 2 * $pair;
    $end = min($row, $size - $row);
    $start = $end - 2;
    for ($col = $start; ($col < $size - $end) && ($row < $size / 2); $col++){
        $checkerboard[$row][$col]="black";
    }
    //drawing bottom half rows
    $far_row = $size - 1 - 2 * $pair;
    $end = min($far_row, $size - $far_row) + 1 - 2;
    $start = $end ;
    for ($col = $start; ($col < $size - $end) && ($far_row > $size / 2 ); $col++){
        $checkerboard[$far_row][$col]="black";
    }
    $pair++;
}

$pair = 0;
//vertical
while ($pair < (int) $size / 2)  {
    //drawing left half columns
    $col = 2 * $pair;
    $end = min($col, $size - $col);
    $start = $end +2 ;
    for ($row = $start; ($row < $size - $end) && ($col < $size / 2); $row++){
        $checkerboard[$row][$col]="black";
    }
    //drawing right half columns
    $far_columns = $size - 1 - 2 * $pair;
    $end = min($far_columns, $size - $far_columns) - 1;
    $start = $end ;
    for ($row = $start; ($row < $size - $end) && ($far_columns  >= ($size / 2 ) ); $row++){
        $checkerboard[$row][$far_columns]="black";
    }
    $pair++;
}


echo "<table>";
for($row=0;$row< $size;$row++){
    echo "<tr>";
        for($col=0; $col< $size; $col++){
            echo "<td width='50px' height='50px' bgcolor='".$checkerboard[$row][$col]."'></td>";
        }
    echo "</tr>";
}

您可以针对不同的维度更改 $size 变量

关于Php 棋盘螺旋显示数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27289498/

相关文章:

php - 如何检查输入的值是否为货币

php - 从每个定义中读取名称和值 ('NAME' ,'VALUE' );在 .php 文件中

PHP 类引用 PDO 对象

php - 使用xpath获取文本内容

PHP 和 SQL Server - 字段名称被截断

javascript - 将 JavaScript 函数参数转换为 php 变量

php - mysql错误 'TYPE=MyISAM'

php - PHP —未定义索引:

javascript - Google reCaptcha 响应 "Uncaught (in promise) null"

php - WordPress API : Add/Remove Tags on Posts