|
|
|||||
Регистрация: Jan 2011
Сообщений: 247
|
Сдвиг елементов двухмерного массива
Облазил в инете везде, и нашел только вставку\удаление\перемещение одномерного массива, а как это осуществить в двухмерном массиве примеров в избытке.
Суть вопроса в том как правильно написать функцию которая будет "сдвигать" елементы массива "вниз или вверх" . private var a:Array = ["a1", "a2", "a3", "a4"]; private var b:Array = ["b1", "b2", "b3", "b4"]; private var c:Array = ["c1", "c2", "c3", "c4"]; private var d:Array = ["d1", "d2", "d3", "d4"]; private var myArray:Array = [[a], [b], [c], [d]]; // после вызова функции двухмерный массив myArray должен выглядить так : ["a1", "a2", "a3", "d4"];// нижний елемент массива "d4" не удалился а переместился сюда на "пустое место" ["b1", "b2", "b3", "a4"];// т.е. при каждом вызове функции, 4 колона должна сдвигаться на 1 елемент вниз( не знаю как это технически обьяснить ;) ) ["c1", "c2", "c3", "b4"]; ["d1", "d2", "d3", "c4"]; |
|
|||||
Для чего это нужно?
Попахивает задачей из разряда, лучше выкинуть, и придумать совершенно другой способ. Но, тем не менее. Каков алгоритм смещения? Что должно быть после второго, третьего, четвертого.. и т.д. вызова? |
|
|||||
Может тогда лучше "перевернуть" массив, чтобы он выглядел так, и легче будет решить задачу
Цитата:
ps.Визуально похоже на игровой автомат "однорукий бандит" Последний раз редактировалось samana; 20.04.2013 в 19:24. |
|
|||||
Регистрация: Jan 2011
Сообщений: 247
|
Цитата:
алгоритм смещения : ["a1", "a2", "a3", "a4"]; ["b1", "b2", "b3", "b4"]; ["c1", "c2", "c3", "c4"]; ["d1", "d2", "d3", "d4"]; // первый вызов функции и результат ["a1", "a2", "a3", "d4"]; ["b1", "b2", "b3", "a4"]; ["c1", "c2", "c3", "b4"]; ["d1", "d2", "d3", "c4"]; // второй вызов функции и результат ["a1", "a2", "a3", "c4"]; ["b1", "b2", "b3", "d4"]; ["c1", "c2", "c3", "a4"]; ["d1", "d2", "d3", "b4"]; // третий вызов функции и результат ["a1", "a2", "a3", "b4"]; ["b1", "b2", "b3", "c4"]; ["c1", "c2", "c3", "d4"]; ["d1", "d2", "d3", "a4"]; // ну если еще раз вызвать функцию то вернемся к изначальному виду ["a1", "a2", "a3", "a4"]; ["b1", "b2", "b3", "b4"]; ["c1", "c2", "c3", "c4"]; ["d1", "d2", "d3", "d4"]; Цитата:
Цитата:
визуально да, что-то похожее есть типа крутиться как барабан, ну это совсем не игровой автомат. |
|
|||||
Регистрация: Dec 2002
Адрес: Живу вот где-то
Сообщений: 493
|
var a:Array = [ ["a1", "a2", "a3", "a4"], ["b1", "b2", "b3", "b4"], ["c1", "c2", "c3", "c4"], ["d1", "d2", "d3", "d4"]]; tracer(a); shiftulator(a); tracer(a); shiftulator(a); tracer(a); shiftulator(a); tracer(a); shiftulator(a); tracer(a); // function tracer(arg:Array):void { for (var i:String in arg) trace(arg[i]); trace('**************************\n'); } //:)) function shiftulator(arg:Array):void { var ind:int = arg[0].length - 1, tmp:Array=[]; for (var i:String in arg) tmp.push(arg[i][ind]); tmp.unshift(tmp.pop()); for (i in arg) arg[i][ind] = tmp[i]; } output: a1,a2,a3,a4 b1,b2,b3,b4 c1,c2,c3,c4 d1,d2,d3,d4 ************************** a1,a2,a3,d4 b1,b2,b3,a4 c1,c2,c3,b4 d1,d2,d3,c4 ************************** a1,a2,a3,c4 b1,b2,b3,d4 c1,c2,c3,a4 d1,d2,d3,b4 ************************** a1,a2,a3,b4 b1,b2,b3,c4 c1,c2,c3,d4 d1,d2,d3,a4 ************************** a1,a2,a3,a4 b1,b2,b3,b4 c1,c2,c3,c4 d1,d2,d3,d4 ************************** |
|
|||||
Ну как бы влоб: просто меняем занчения
private function swapElements(array:Array, i1:int, j1:int, i2:int, j2:int):void { var cash:* = array[i1][j1]; array[i1][j1] = array[i2][j2]; array[i2][j2] = cash; } private function moveUp(array:Array, i1:int, j1:int):void { var nextIndex:int = j1 != 0 ? j1 - 1 : array.length - 1; //Если в вверху, то перемещаем вконец swapElements(array, i1, j1, i1, nextIndex) } //Аналагчино: private function moveLeft(array:Array, i1:int, j1:int):void private function moveRight(array:Array, i1:int, j1:int):void private function moveDown(array:Array, i1:int, j1:int):void
__________________
... |
|
|||||
Регистрация: Jan 2011
Сообщений: 247
|
Цитата:
Добавлено через 1 минуту Цитата:
|
Часовой пояс GMT +4, время: 21:54. |
|
« Предыдущая тема | Следующая тема » |
|
|