Интересная задачка

топ 100 блогов ru_algorithms14.10.2010 Задачка для программистов:)

Сейчас у меня проект один назревает, приложение под айфон. В рамках него есть задачка: распределить N прямоугольничков фиксированной высоты, но переменной ширины внутри области X на Y пикселей. Ее можно решить в лоб (как и решено сейчас)— прямоугольнички просто случайно распределяются по области, так, чтобы помещаться обоими краями (если это возможно). Поскольку генератор случайных чисел иногда преподносит сюрпризы, мы имеем иногда прямоугольники, наезжающие друг друга настолько, что некоторых и не видно, при этом какой-нибудь угол области практически не занят. Назревает вопрос: как можно распределить их таким образом, чтобы наложения были минимальны? Есть несколько решений, сразу приходящих на ум: например, ставить их последовательно и принимать выдаваемые генератором случайных чисел координаты только тогда, когда с учетом ширины и высоты блока он ни на кого не "наползает", а после 100 неудачных попыток принимать первые попавшиеся координаты и переходить к следующему блоку. Алгоритм плохой, но явно лучше, чем описанный в самом начале. Но явно хуже, чем мог бы быть. Например, хорошо было бы равномерно распределять блоки. То есть, два блока должны каждый раз находиться в разных местах, но примерно равноудаленно друг от друга и от центра, а не в одном каком-нибудь углу.

Посему принимаются идеи, как сделать лучше? У меня самого уже несколько есть. Ау, программисты :-) Ну как, хорошая задачка?

Оставить комментарий

Архив записей в блогах:
FALL 2016 READY-TO-WEAR Dolce & Gabbana ...
Я работал-работал-работал, адаптировал разные тексты для семинаров, а потом стал смотреть сериал "Химера". В новостях: "Отгонял волков горящими палками и смотрел в глаза медведю: первое интервью с выжившим в тайге бизнесменом. Пропавшего неделю искали в районе горы Конжак в Свердловской ...
В Лас-Вегасе традиционно прошла выставка Kitchen & Bath Industry Show (KBIS), посвящённая инновациям и модным трендам в обустройстве кухонь и ванных комнат. Сайт RMNT всегда рассказывает о таких заметных событиях. KBIS-2024 оказалась особенно интересной в сфере новых функций кухонной ...
Переговоры США - Россия в Женеве длились семь с половиной часов. Чего достигли? - Разговор был сложным, профессиональным, без попыток обойти острые углы, - сказал глава российской делегации Сергей Рябков. - Это были не переговоры, это была дискуссия для уточнения позиций сторон, - ...
В свое время у нас с моей ПОСЛЕДНЕЙ БОЛЬШОЙ ЛЮБОВЬЮ были совершенно чудные высокие отношения. В том смысле, что на какой-то стадии в порыве идиотизма под названием "я хочу знать о тебе все" мы настолько обоюдно разоткровенничались, что зачем-то рассказали друг другу о бывших до этого момен ...