Посоветуйте идею алгоритма для многоколоночной верстки

  • Автор темы Автор темы Author
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Author

Участник
Топикстартер
Сообщения
8
Реакции
0
Есть отсортированный список объявлений.Их нужно автоматически (использую COM API) сверстать в несколько колонок.
Трабл в том, что некоторые объявления могут быть в несколько колонок шириной. Но вставить их нужно
не нарушая сортировки. Если вставлять очередное такое объявление так, чтобы его левый край лежал в
нужной колонке, а правый - торчал вправо на нужное число колонок - то это еще ничего (правые колонки еще пустые)
. А вот если справа - край страницы, то надо перераспределить объявления так, чтобы левый край залез в одну или несколько
предыдущих колонок (которые уже заполнены). Если раздвинуть объявления в предыдущей колонке - то текущее сместится вниз.
Но и это еще не страшно. А вот если надо сделать объявление на три колонки, то точек разрыва будет две и при добавлении
второй первая сдвинется. И текущее объявление должно сдвинуться два раза. И, возможно, даже перелезть в следующую колонку.
А еще может получиться так, что в предыдущих колонках напротив данного объявления уже находится "широкое". И при сдвигании его
вниз должны происходить изменения во соответсвующих предыдущих колонках. Короче, ужас.

Так вот, может быть есть какие-то обкатанные алгоритмы для решения такой проблемы. Или, может быть, можно использовать какие-то
особые фичи InDesign (с ним я вполне знаком, но мастером себя не назову, я больше по части программирования).
 
Ответ: Посоветуйте идею алгоритма для многоколоночной верстки

Читал три раза, ничего не понял.
Сделай картинку и покажи.
 
Ответ: Посоветуйте идею алгоритма для многоколоночной верстки

ой, как все запущено.
 
Ответ: Посоветуйте идею алгоритма для многоколоночной верстки

Ну вот. Зеленое - обычные объявление, Желто-оранжевое - широкие объявления. Оранжевое в них - родная колонка. Серое - пустое пока что место. Красное - на это место надо вставить объявление шириной в две колонки.
 

Вложения

  • page.GIF
    page.GIF
    6.4 КБ · Просм.: 562
Ответ: Посоветуйте идею алгоритма для многоколоночной верстки

аффигеть! и скока ты это рисовал... мне не в жисть не перерисовать
 
Ответ: Посоветуйте идею алгоритма для многоколоночной верстки

inTurisT сказал(а):
аффигеть! и скока ты это рисовал... мне не в жисть не перерисовать

Не по теме:
Вопросы не по теме заключайте в тэг
Не по теме:
пожалуйста

 
Ответ: Посоветуйте идею алгоритма для многоколоночной верстки

Предлагаю такие объявления запихивать в заякоренный фрейм.
 
Ответ: Посоветуйте идею алгоритма для многоколоночной верстки


Не по теме:
я такую верстку не то что алгоритмом, руками бы наверное в жизнь не сделал.
 
Ответ: Посоветуйте идею алгоритма для многоколоночной верстки

Skvoznyak сказал(а):

Не по теме:
я такую верстку не то что алгоритмом, руками бы наверное в жизнь не сделал.
не думаю что это нерешаемая задача.
 
Ответ: Посоветуйте идею алгоритма для многоколоночной верстки


Не по теме:
Да ладно, руками как раз просто! Долго правда.


По теме.
Мне только что пришло в голову, что можно даже не заякоренный объект использовать, а просто inline.
 
Ответ: Посоветуйте идею алгоритма для многоколоночной верстки

ssm (17:04:05 4/08/2006)
eta zadacha dlya studentov vtorogo kursa

ssm (17:04:27 4/08/2006)
nazivaetsya "zadacha o razmeshenii". est' algoritmi po ee resheniyu

и вот еще
ssm (17:07:40 4/08/2006)
все решение базируется на симплекс таблицах. иначе он ненайдет ничего
 
Ответ: Посоветуйте идею алгоритма для многоколоночной верстки

стопудово будут строчки висящие оставаться, либо пустые места в начале и конце колонки.. понятное дело что формально можно сделать такой макет, но чтобы он при этом нормально выглядел - я просто не представляю.
 
Ответ: Посоветуйте идею алгоритма для многоколоночной верстки

Strizh сказал(а):
ssm (17:04:05 4/08/2006)
eta zadacha dlya studentov vtorogo kursa

ssm (17:04:27 4/08/2006)
nazivaetsya "zadacha o razmeshenii". est' algoritmi po ee resheniyu

Вот Индюк ее и решит, если сделать как я предлагал, зачем заново изобретать велосипед?
 
Ответ: Посоветуйте идею алгоритма для многоколоночной верстки

Specialist
Индюк задачу решает, но только на половину.
Для вставки "широкого" объявления надо, чтобы в "чужих" колонках, на которые заходит наше объявление текст раздвинулся. В этом проблема.
Если вставлять "широкое" объявление как инлайн-объект, то текст раздвигается только в колонках, которые идут после текущей. А в предыдущих колонках ничего не меняется, т.е. "широкое" объявление закрывает часть текста.
Если вставлять его как обычный объект, то текст, конечно, раздвигается везде. Но объявление получается непривязанным к тексту.
И еще. Для обычных объявлений я настраиваю стиль параграфа так, чтобы все строки абзаца держались вместе. Так вот, при переходе в следующую колонку все нормально - объявление не разрывается. А вот при обтекании "широкого" - разрывается.
Может быть, я что-то делаю не совсем так? Может, что-то еще можно настроить?
Если же нельзя, то вопрос об алгоритме остается открытым.
Strizh
Ты упоминал "задачу о размещении" и симплекс-таблицы. А где про это можно почитать доступно?
 
Ответ: Посоветуйте идею алгоритма для многоколоночной верстки


Не по теме:
Пристрелите того, кто придумал такую модульную сетку.
 
Ответ: Посоветуйте идею алгоритма для многоколоночной верстки

Author сказал(а):
Strizh
Ты упоминал "задачу о размещении" и симплекс-таблицы. А где про это можно почитать доступно?
Книжки по линейному программированию.
 
Ответ: Посоветуйте идею алгоритма для многоколоночной верстки

по-моему, это также называлось задача по раскрою материала.
 
Ответ: Посоветуйте идею алгоритма для многоколоночной верстки

Ладно, уже сам придумал. Нужно просто перебрать все варианты расстановки "широких" объявлений. И выбрать лучший. В самом трудном случае может быть около 20 2-х колоночных объявлений, и вариантов будет 2^20, т.е. около 1000000. Это не страшно.
Для оценки каждого отдельного варианта - смоделировать в памяти поведение страницы с объявлениями (в InDesign - все будет работать в тыщу раз медленнее), запихать на такую страницу сначала все обычные объявления, а затем по одному - широкие. Сначала вставлять их, а затем подгонять в нужное место. И когда все будут вставлены - посчитать сколько всего объявлений вошло на страницу.
 
Ответ: Посоветуйте идею алгоритма для многоколоночной верстки

ну а в линейном программировании перебор вариантов как раз один из методов решения
 
Ответ: Посоветуйте идею алгоритма для многоколоночной верстки

Author сказал(а):
Ладно, уже сам придумал. Нужно просто перебрать все варианты расстановки "широких" объявлений. И выбрать лучший. В самом трудном случае может быть около 20 2-х колоночных объявлений, и вариантов будет 2^20, т.е. около 1000000. Это не страшно.
Для оценки каждого отдельного варианта - смоделировать в памяти поведение страницы с объявлениями.
Как раз до следующего ледникового периода, если скриптом.
Ибо любой цикл более 10 000 вешает ИД мертво.
Как паллиатив - плугин. Но это совсем другая история.
 
Статус
Закрыто для дальнейших ответов.