Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 16, 2012 19:09:14

PunK_HS
От:
Зарегистрирован: 2011-07-14
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Геометрическая задача средствами Python

Доброго времени суток!

Прошу помощи! Есть следующая задача:
В прямоугольнике X c шириной h и высотой l требуется разместить несколько одинаковых прямоугольников Y меньшей площади с шириной a и высотой b. Необходимо реализовать алгоритм, результатом работы которого будет max кол-во Y, способное поместиться в X.

Понимаю что нужно привязываться к площади фигур и “вращать” Y в цикле, но с чего начать….. ума не приложу.
Помогите пожалуйста советом по решению.



Офлайн

#2 Апрель 16, 2012 20:44:25

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

Геометрическая задача средствами Python

ого. очень интересно было бы узнать как это реализовать.

Офлайн

#3 Апрель 16, 2012 21:20:47

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Геометрическая задача средствами Python

PunK_HS
Доброго времени суток!

Прошу помощи! Есть следующая задача:
В прямоугольнике X c шириной h и высотой l требуется разместить несколько одинаковых прямоугольников Y меньшей площади с шириной a и высотой b. Необходимо реализовать алгоритм, результатом работы которого будет max кол-во Y, способное поместиться в X.

Понимаю что нужно привязываться к площади фигур и “вращать” Y в цикле, но с чего начать….. ума не приложу.
Помогите пожалуйста советом по решению.
Напишите в псевдокоде, а мы транслируем в Питон.



Офлайн

#4 Апрель 17, 2012 21:52:34

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Геометрическая задача средствами Python

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



Отредактировано doza_and (Апрель 18, 2012 22:31:35)

Офлайн

#5 Апрель 18, 2012 08:39:49

Piton23
От:
Зарегистрирован: 2011-10-17
Сообщения: 139
Репутация: +  5  -
Профиль   Отправить e-mail  

Геометрическая задача средствами Python

Я так понимаю че то типа такого?

rectangles.bmp (PS: чуть позже нормально залью)

вот быдло код:

A = 200
B = 600
# Делаем чтоб А всегда был больше B
if A < B:
    A, B = B, A
    
a = 20
b = 40
# Делаем чтоб a был всегда меньше b
if a > b:
    a, b = b, a
    
count = 0
# Рассчет количества без переворота малого прямоугольника
count = B/b + A/a
# Переворачиваем малый прямоугольник
aTURN, bTURN = b, a
# Выделяем пространство оставщееся у большого прямоугольника (т.е. сверху)
Akeep = A
Bkeep = B - B/b
count += Bkeep/bTURN + Akeep/aTURN
print u"Мне удалось разместить " + str(count) + u" прямоугольников"

Отредактировано Piton23 (Апрель 18, 2012 08:52:04)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version