![]() |
Задачка
Предлагаю, на мой взгляд, интересную задачку. Не обязательно решать на AS, хоть на чем. Поэтому и в общем.
Задача заключается в следующем: - нужно разбить содержание массива / списка / стека и т.п. на колонки. При чем, в исходной коллекции элементы упорядочены по какому угодно принципу. Для наглядности я буду использовать цифры, но это может быть что угодно. Разбить нужно таким образом, чтобы максимально заполнить все колонки. Колонки нужно заполнять вертикально последовательно элементами из коллекции. Например: [1, 2, 3, 4, 5, 6, 7] разбив на 5 колонок получим: |1| |3| |5| |6| |7| |2| |4| Естественно, количество элементов и колонок могут быть произвольными. Да, еще, конечно, важное условие: колонки должны быть максимально уравновешены, т.е. вариант когда все элементы - (количество колонок - 1) складываются в первую колонку, а оставшиеся - во все остальные не проходит. |
что-то мне тут Беллман мерещится, но сходу так не соображу. На буратину с яблоками чем-то похоже.
|
Интересно. А мне что-то из расчетов поверхностного натяжения:)
|
а вот взять по-простому и рассовать, не ?
Код AS3:
|
Есть один неприятный момент, который разрушает чувство прекрасного в этом коде :) когда количество элементов делится нацело на количество колонок - 1, получается что в предпоследней колонке на один элемент меньше чем у остальных, а в последней всего один элемент. Например, когда data = [1, 2, 3, 4, 5, 6, 7, 8, 9], w = 4. В таком случае хотелось бы одну колонку делать выше остальных, а не вразнобой :)
|
Цитата:
|
Что-то сложность не понятна: вот как silin сделал, в чем подвох?
|
Артём, там подвох в том, что колонки набираются последовательно и при некоторых случаях последняя колонка будет с одним элементом, в то время, как все остальные с 4-мя, например. Нужно, чтобы все колонки набирались равномерно ровно до тех пор, пока не останутся последние элементы.
Проще проиллюстрировать: Код:
1,4,7,9Код:
1,4,6,8Добавлено через 1 час 23 минуты У меня пока что так получилось (наверняка с ошибками): Код AS3:
|
Код AS3:
Код:
1 4 7 9Код:
1 4 6 8ПС. Алгоритм такой потому что это адаптация со списков, и не хотелось во время распечаток много памяти ис пользовать. Но разница не существенная. |
Код AS3:
|
| Часовой пояс GMT +4, время: 22:22. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.