Тема: Задачка
Показать сообщение отдельно
Старый 28.06.2012, 12:41
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 8  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Артём, там подвох в том, что колонки набираются последовательно и при некоторых случаях последняя колонка будет с одним элементом, в то время, как все остальные с 4-мя, например. Нужно, чтобы все колонки набирались равномерно ровно до тех пор, пока не останутся последние элементы.

Проще проиллюстрировать:
Код:
1,4,7,9
2,5,8
3,6
Код:
1,4,6,8
2,5,7,9
3
Больше часа пробую такое запрогать, сложновато и заманчиво

Добавлено через 1 час 23 минуты
У меня пока что так получилось (наверняка с ошибками):
Код AS3:
var data:Array = [1,2,3,4,5,6,7,8,9];
var w:int = 4;
var res:Array = [];
var rows:int = Math.ceil(data.length / w);
var endCount:int = data.length % w;
var i:int = 0;
var j:int = 0;
var k:int = 0;
var pos:int = 0;
 
for (i = 0; i < rows + 10; i++) {
	res[i] = [];
}
for (k = 0; k < data.length; k ++) {
	pos = k % rows;
	if (pos == rows - 1) {
		j++;
	}
	if (j > endCount && endCount != 0) {
		pos = k % (rows - 1); // Вот тут косяк :(
	}
	res[pos].push(data[k]);
}
for (i = 0; i < rows; i++) {
	trace(res[i]);
}
__________________
hauts.ru


Последний раз редактировалось Hauts; 28.06.2012 в 14:24.