Как я могу сканировать квадратные матрицы, используя цикл php / for? - PullRequest
0 голосов
/ 18 сентября 2011

Мне нужно написать некоторый код, используя несколько циклов for, которые проверяют значения некоторых данных массива.

1-й проход: проверка следующего ...

{x0,y0}

2-й проход:проверка 4 бит данных ...

{x0,y0}, {x1,y0}, 
{x0,y1}, {x1,y1}.

3-й проход: проверка 9 бит данных ...

{x0,y0}, {x1,y0}, {x2,y0}, 
{x0,y1}, {x1,y1}, {x2,y1},
{x0,y2}, {x1,y2}, {x2,y2}.

Кажется, мой маленький мозг не хочет функционироватьполучить ответ.Кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 18 сентября 2011

Вы можете начать с простой функции, которая работает с матрицей:

function scan($x, $y) {...}

Кроме того, у холста есть диапазон для x и y, начальный номер и его конечный номер:

range x/y: 0,0/0,0

или позже:

range x/y: 0,2/0,2

Если вы говорите, что диапазоны всегда начинаются с 0, и оба диапазона всегда имеют одинаковое верхнее значение, это можно уменьшить как одну переменную: $range. Затем вы можете легко перебрать матрицу ( Demo ):

$range = 2;

foreach(range(0, $range) as $y)
    foreach(range(0, $range) as $x)
        scan($x, $y);

function scan($x, $y)
{
...
}

Поскольку $range зависит от номера текущего прохода, вы можете указать максимальное количество проходов в $passes и выполнить итерацию по нему, изменяя $range на основе $pass ( Demo ) :

$passes = 3;

foreach(range(1, $passes) as $pass)
{
    $range = $pass-1;
    foreach(range(0, $range) as $y)
        foreach(range(0, $range) as $x)
            scan($x, $y);
}
0 голосов
/ 18 сентября 2011
<?php

for ($pass = 0; $pass < count($matrix); $pass++)
{
    for ($i = 0; $i <= $pass; $i++)
    {
        for ($j = 0; $j <= $pass; $j++)
        {
            checkbit($matrix[$i][$j]);
        }
    }   
}

?>

Может быть, как-то так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...