27.10.2015, 16:53
|
Профессор
|
|
Регистрация: 13.04.2012
Сообщений: 210
|
|
перебор массива с отступом
Добрый день,
Кто-нибудь знает как называется алгоритм который перебирает точки массива (матрицы) с отступом или по кругу не знаю как точно описать. Пример:
МАССИВ
[01, 02, 03, 04]
[05, 06, 07, 08]
[09, 10, 11, 12]
[13, 14, 15, 16]
На выходе перебора с шагом 1 (4 массива 2х2):
#1 | #2
[01, 02] | [03, 04]
[05, 06] | [07, 08]
----------+-----------
#3 | #4
[09, 10] | [11, 12]
[13, 14] | [15, 16]
На выходе перебора с шагом 2 (1 массив 2х2):
#1
[01, 03]
[09, 11]
На выходе перебора с шагом 3 (1 массив 2х2):
#1
[01, 04]
[13, 16]
P.S. - обернул в [html] что бы не потерять отступы... не обращайте на это внимание
P.P.S. - Для тех кто не знает как читать многомерные массивы добавил рамки
Последний раз редактировалось Brook, 29.10.2015 в 09:29.
|
|
27.10.2015, 17:23
|
Профессор
|
|
Регистрация: 13.04.2012
Сообщений: 210
|
|
так сделать сам я сдела но может что знает вариант получше а то этот какой то деревянный
var arr = [[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
[13,14,15,16]
],
step = 1;
for(i=0; i < 4; i=i+step*2) {
for(j=0; j < 4; j=j+step*2) {
var dot1 = arr[i][j],
dot2 = arr[i][j+step],
dot3 = arr[i+step][j],
dot4 = arr[i+step][j+step];
alert("Section" + (i+j) + ": [" + dot1 + ", " + dot2 + ", " + dot3 + ", " + dot4 + "]");
}
}
Последний раз редактировалось Brook, 27.10.2015 в 18:44.
|
|
27.10.2015, 17:23
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
array.slice()
|
|
27.10.2015, 17:25
|
Профессор
|
|
Регистрация: 13.04.2012
Сообщений: 210
|
|
laimas,
и как это поможет с двумерным массивом?!
а если шаг будет не еденица а 3 тогда как?!
|
|
27.10.2015, 17:31
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Какая разница какой он у вас, вам же нужно получать срезы массива, что и делает slice(), указывайте необходимую длину, получайте, выводите, и также в цикле.
На php можно было бы и короче, одной функций можно разбить массив на массивы по N элементов сразу.
|
|
27.10.2015, 17:33
|
Профессор
|
|
Регистрация: 13.04.2012
Сообщений: 210
|
|
не не мне нужны только крайние точки а не срезы... в этом то и вся разница
то есть если следовать примеру из Топика то если установить шаг 3, тогда вернется массив:
[
[1,4]
[13,16]
]
конечно можно получить крайние точки но что делать с точками ниже?... хммм ну в общем да можно использовать слайс.. ок = спасибо ... но всеже это не совсем то
Последний раз редактировалось Brook, 27.10.2015 в 17:39.
|
|
27.10.2015, 17:42
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Brook
|
но всеже это не совсем то
|
Оригинально:
[ 01, 02, 03, 04]
...
На выходе перебора (4 массива 2х2): показать чистый исходник в новом окне Скрыть/показать номера строк печать кода с сохранением подсветки
#1 #2
[01, 02] [03, 04]
....
Что здесь тогда крайнее? )
|
|
27.10.2015, 18:30
|
Профессор
|
|
Регистрация: 13.04.2012
Сообщений: 210
|
|
массив №1 [[01,02][05,06]]
массив №2 [[03,04][07,08]]
массив №3 [[09,10][13,14]]
массив №4 [[11,12][15,16]]
Надеюсь тперь понятнее )
|
|
27.10.2015, 18:44
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Изначально так и надо было написать. Ну и в чем проблема - зная вложения массива, получать по их индексам их срезы, четные и нечетные?
|
|
27.10.2015, 18:58
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
Сообщение от laimas
|
Ну и в чем проблема - зная вложения массива, получать по их индексам их срезы, четные и нечетные?
|
было бы интересно вглянуть, пока не понимаю причём тут чётность ...
|
|
|
|