使用php的螺旋2d矩阵

时间:2016-04-25 10:01:28

标签: php arrays algorithm

我有一个使用循环计算1到15的代码,它的模式是螺旋形的。请帮我改变给定数组的输出而不是循环计数器中的数字。你可以看到它有5个数组我想随机选择array1到array5并以螺旋方式显示它。例如,它从array1到array3中随机选择,数组中从1到3的所有值都应该以螺旋形方式显示。谢谢!

function getSpiralArray($n) {
    $array1 = ['1', '2', '3', '4', '5'];
    $array2 = ['4', '5', '6', '7', '8'];
    $array3 = ['5', '6', '7', '8', '9'];
    $array4 = ['6', '7', '8', '9', 'a'];
    $array5 = ['2', '3', '4', '5', '6'];

    $pos = $n * $n - 1;
    $count = $n;
    $value = -$n;
    $sum = -1;

    do {
        $value = -1 * $value / $n;
        for ($i = 0; $i < $count; $i++) {
            $sum += $value;
            $result[$sum / $n][$sum % $n] = $pos--;
        }
        $value *= $n;
        $count--;
        for ($i = 0; $i < $count; $i++) {
            $sum += $value;
            $result[$sum / $n][$sum % $n] = $pos--;
        }
    } while ($count > 0);

    return $result;
}

function PrintArray($array) {
    for ($i = 0; $i < count($array); $i++) {
        for ($j = 0; $j < count($array); $j++) {
            echo str_pad($array[$i][$j],3,' ');
        }
        echo '<br/>';
    }
}

$arr = getSpiralArray(4);
echo '<pre>';
PrintArray($arr);
echo '</pre>';

0 个答案:

没有答案