Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.01.2012, 23:36
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 11  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
да как бы поровну столбцов или строк, если речь в конечном итоге об одномерном массиве, проблемы, надо понимать, должны быть у него, не?

Старый 21.01.2012, 23:52
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 12  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Проблемы будут при динамическом изменении количества столбцов в "одномерной" реализации. Но точно ли их имел в виду iNils, я не берусь утверждать.
__________________
Поймай яблоко 2!

Старый 21.01.2012, 23:57
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 13  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
упс, ну да, понятно
я чего не туда подумал

Старый 22.01.2012, 01:34
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 14  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
4 294 967 295 последняя длинна с которой удалось создать массив, с бОльшей длинной он не создается )

Старый 22.01.2012, 04:26
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 15  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ну, пришлось бы определить дополнительные функции для удаления / добавления столбцов (как будто в эмуляции вложенными массивами они есть - там просто тривиально их прикрутить, а с одним массивом - менее тривиально, но не нейтронная сеть, все-таки )

А какие будут проблемы при возрастании? Я вижу только проблему в том, что вложенные массивы могут вместить int.MAX_VALUE * int.MAX_VALUE (это в далеком будущем, когда у любого ПК будет столько же памяти как у современных суперкомпьютеров ), а у одномерного массива будет всего int.MAX_VALUE.
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 22.01.2012 в 04:36.
Старый 22.01.2012, 07:48
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 16  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
Цитата:
вложенные массивы могут вместить int.MAX_VALUE * int.MAX_VALUE
(int.MAX_VALUE * 2) * ( int.MAX_VALUE * 2 ) (то то мне число 4 294 967 295 подозрительным показалось )

и это только двухмерные, если предположить, что вложенность может равняться примерно тому же imt.MAX_VALUE * 2 получается: теоретически макс. кол-во эл-тов может равняться imt.MAX_VALUE * 2 в степени imt.MAX_VALUE * 2 (Number-a то хватит чтобы отразить это число?).


Последний раз редактировалось fish_r; 22.01.2012 в 07:57.
Старый 22.01.2012, 11:47
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 17  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
то то мне число 4 294 967 295 подозрительным показалось
Диапазон значений представленных классом uint составляет от 0 до 4294967295 (2 в степени 32 - 1).
И length массива uint, кстати.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 22.01.2012, 15:09
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 18  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Цитата:
Сообщение от Zebestov Посмотреть сообщение
речь, наверное, шла об увеличении количества столбцов
Именно об этом.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 22.01.2012, 18:33
LOS2008 вне форума Посмотреть профиль Отправить личное сообщение для LOS2008 Найти все сообщения от LOS2008
  № 19  
Ответить с цитированием
LOS2008

Регистрация: Aug 2008
Сообщений: 27
Типизированные данные хранить надо в Vector.

Старый 23.01.2012, 02:06
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 20  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код AS3:
package tld.doodles.collections
{
	public class Array2D
	{
		public static const COLUMN:Array2D = new Array2D();
 
		public static const ROW:Array2D = new Array2D();
 
		public function get length():uint { return this._items.length; }
 
		public function get columns():uint { return this._columns; }
 
		public function get rows():uint
		{
			return this._items.length / this._columns;
		}
 
		protected const _items:Array = [];
 
		protected var _columns:uint;
 
		public function Array2D() { super(); }
 
		public static function make(columns:uint, 
			rows:uint = 0, array:Array = null):Array2D
		{
			var result:Array2D = new Array2D();
 
			if (!array) array = []; 
			result._columns = columns;
			array.length = Math.max(array.length, columns * rows);
			result._items.push.apply(result, array);
			return result;
		}
 
		public static function get(array:Array2D, x:uint, y:uint):Object
		{
			return array._items[x * array._columns + y];
		}
 
		public static function set(array:Array2D, x:uint, y:uint, 
			value:Object):Object
		{
			return array._items[x * array._columns + y] = value;
		}
 
		public static function insertColumns(array:Array2D, 
			position:uint, howMany:uint, feeder:Function):Array2D
		{
			var times:uint = array.rows;
			for (var i:int; i < times; i++)
				array._items.splice.apply(
					array._items, 
					[position + howMany * i + array._columns * i, 0].concat(
						new Array(howMany).map(feeder)));
			array._columns += howMany;
			return array;
		}
 
		public static function insertRows(array:Array2D, 
			position:uint, howMany:uint, feeder:Function):Array2D
		{
			array._items.splice.apply(
				array._items, [position * array._columns, 0].concat(
					new Array(howMany * array._columns).map(feeder)));
			return array;
		}
 
		public static function forEach(array:Array2D, kind:Array2D, 
			callback:Function):Array2D
		{
			var element:Array;
			var iterations:uint;
 
			if (kind == COLUMN)
			{
				iterations = array._columns;
				for (var i:int; i < iterations; i++)
				{
					callback(fetchColumn(
						i, array._columns, array._items, element), i);
					setColumn(array, i, element);
				}
			}
			return array;
		}
 
		public static function setColumn(array:Array2D, column:uint, 
			elements:Array):Array2D
		{
			var arrayLength:uint = array.length;
 
			for (var i:int; column < arrayLength; column += array._columns, i++)
				array._items[column] = elements[i];
			return array;
		}
 
		public static function setRow(array:Array2D, row:uint, 
			elements:Array):Array2D
		{
			elements.length = array._columns;
			array._items.splice.apply(
				array._items, [row * array._columns, elements.length]
					.concat(elements));
			return array;
		}
 
		private static function fetchColumn(offset:uint, step:uint, 
			source:Array, destination:Array):Array
		{
			destination.length = 0;
			var sourceLength:uint = source.length;
			for (; offset < sourceLength; offset += step)
				destination.push(source[offset]);
			return destination;
		}
 
		private static function fetchRow(row:uint, rowLength:uint, 
			destination:Array, source:Array):Array
		{
			var start:uint = row * rowLength;
			var end:uint = start + rowLength;
 
			destination.length = 0;
			for (var j:int, i:int = start; i < end; i++, j++)
				destination[j] = source[i];   
			return destination;
		}
 
		public static function print(array:Array2D):String
		{
			var filler:String;
			var top:String;
			var bottom:String;
			var rows:Array = [];
			var totalRows:uint = array.rows;
			var row:Array = [];
			var maxLength:uint;
			var rowString:String;
			var column:Array = [];
			var mask:Array = [];
			var columnsDestination:Array = new Array(array.rows + 1).join("&#9474;").split("");
			var j:uint;
 
			for (var i:uint; i < array._columns; i++)
			{
				column = fetchColumn(i, array._columns, array._items, column);
				maxLength = 0;
				for (j = 0; j < totalRows; j++)
				{
					if (i == array._columns - 1)
						column[j] = rowString = " " + String(column[j]);
					else column[j] = rowString = " " + String(column[j]) + ",";
					maxLength = Math.max(maxLength, rowString.length);
				}
				for (j = 0; j < totalRows; j++)
				{
					rowString = column[j];
					mask.length = (maxLength - rowString.length) + 1;
					columnsDestination[j] += rowString + mask.join(" ");
					if (i == array._columns - 1)
						columnsDestination[j] += " &#9474;\n"; 
				}
			}
			filler = new Array(String(columnsDestination[0]).length - 2).join("&#9472;");
			top = "&#9484;" + filler + "&#9488;\n";
			bottom = "&#9492;" + filler + "&#9496;";
			return top + columnsDestination.join("") + bottom;
		}
	}
}
Дело было вечером, делать было... на самом деле было чего
Код AS3:
private function testArray2D():void
{
	var array:Array2D = Array2D.make(4, 5);
	trace(Array2D.print(array));
	Array2D.setColumn(array, 2, [1, 2, 3]);
	trace(Array2D.print(array));
	Array2D.setRow(array, 2, [5, 6, 7]);
	trace(Array2D.print(array));
	Array2D.insertColumns(array, 3, 4, Math.max);
	trace(Array2D.print(array));
}
Код:
┌────────────────────────────────────────────┐
│ undefined, undefined, undefined, undefined │
│ undefined, undefined, undefined, undefined │
│ undefined, undefined, undefined, undefined │
│ undefined, undefined, undefined, undefined │
│ undefined, undefined, undefined, undefined │
└────────────────────────────────────────────┘
┌────────────────────────────────────────────┐
│ undefined, undefined, 1,         undefined │
│ undefined, undefined, 2,         undefined │
│ undefined, undefined, 3,         undefined │
│ undefined, undefined, undefined, undefined │
│ undefined, undefined, undefined, undefined │
└────────────────────────────────────────────┘
┌────────────────────────────────────────────┐
│ undefined, undefined, 1,         undefined │
│ undefined, undefined, 2,         undefined │
│ 5,         6,         7,         undefined │
│ undefined, undefined, undefined, undefined │
│ undefined, undefined, undefined, undefined │
└────────────────────────────────────────────┘
┌────────────────────────────────────────────────────────────────┐
│ undefined, undefined, 1,         NaN, NaN, NaN, NaN, undefined │
│ undefined, undefined, 2,         NaN, NaN, NaN, NaN, undefined │
│ 5,         6,         7,         NaN, NaN, NaN, NaN, undefined │
│ undefined, undefined, undefined, NaN, NaN, NaN, NaN, undefined │
│ undefined, undefined, undefined, NaN, NaN, NaN, NaN, undefined │
└────────────────────────────────────────────────────────────────┘
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 23.01.2012 в 04:10.
Создать новую тему Ответ Часовой пояс GMT +4, время: 13:30.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
array
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 13:30.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.