Как разделить прямоугольник на квадрат и прямоугольник
Перейти к содержимому

Как разделить прямоугольник на квадрат и прямоугольник

  • автор:

Как разрезать прямоугольник на две части так, чтобы из этих частей можно было составить квадрат?

прямоугльник 4х9

Давайте для начала давайте высчитаем площадь нашего прямоугольника. Она равна:

S прям = 4 х 9 = 36 (ед 2 )

Так как наш квадрат должен получиться из этого прямоугольника , то его площадь тоже будет равна 36 ед 2 , а значит сторона искомого квадрата будет 6 единицам. И теперь остается применить логическое мышление, что бы разделить данный прямоугольник.

Вот как это будет выглядеть.

прямоугльник 4х9

Осталось только проверить

квадрат 6х6

Как видим, все получилось очень даже красиво.

Как всегда, желаю всем удачи и успехов!

Мясо всегда вкусно!
Если только не Шер

Мавзолей в Галикарнасе

Мавзолей в Галикарнасе

Разрезать прямоугольник на квадраты и вывести список с размерами сторон

На вход функции подается длина и ширина прямоугольника, нужно разрезать его на квадраты и вывести список с размерами сторон этих квадратов. Если исходная длина и ширина равны, вывести 0. Подскажите алгоритм пожалуйста. Пример вход rect(5,3), выход [3,2,1,1] Визуализация:

x x x x x x x x x x x x x x x -> x x x + x x + x + x x x x x x x x x 

Отслеживать
13.8k 12 12 золотых знаков 43 43 серебряных знака 75 75 бронзовых знаков
задан 31 июл 2018 в 20:23
583 6 6 серебряных знаков 19 19 бронзовых знаков
Очень простой рекурсивный алгоритм, с чем возникли трудности?
31 июл 2018 в 20:31

4 ответа 4

Сортировка: Сброс на вариант по умолчанию

Берем минимальный из двух размеров и выводим его. Затем уменьшаем максимальный размер на минимальный и начинаем сначала. Продолжаем пока один из размеров не станет равен нулю.

(5, 3): Выводим 3. Вычитаем и получаем (2, 3) (2, 3): Выводим 2. Вычитаем и получаем (2, 1) (2, 1): Выводим 1. Вычитаем и получаем (1, 1) (1, 1): Выводим 1. Вычитаем и получаем (1, 0) (1, 0): Стоп 

Неясно только, почему дано такое неестественное требование «если исходная длина и ширина равны, вывести 0». Логично было бы просто вывести длину — тогда бы этот случай подпадал под общий алгоритм.

Отслеживать
ответ дан 31 июл 2018 в 20:35
AnT stands with Russia AnT stands with Russia
69.3k 3 3 золотых знака 65 65 серебряных знаков 140 140 бронзовых знаков
благодарю, тупил немного, на площадь ориентировался)
1 авг 2018 в 23:01

a = int(input("Длина: ")) b = int(input("Ширина: ")) area = a * b def to_quadrats(area): if area == 0: raise StopIteration while(area): for i in range(area, 0, -1): if i * i  

Проблема решена за помощи итератора - рекурсивная функция def to_quadrats() при каждом запросе о последующее значение выдает его командой yield i (и затем приостановится и ждёт на последующий запрос).

Сам запрос о последующее и последующее значения итератора (пока он не исчерпается) реализуется функцией list() .

for i in range(area, 0, -1): 

мы ищем самое большое значение (сторону квадрата), для которого его вторая степень (площадь квадрата) ещё не превышает текущую площадь - да, вместо area бы лучше было взять его квадратный корень.

После нахождения такого значения текущая площадь соответственно уменьшится, самое значение выдастся командой yield и цикл for прекращается командой break .

Разделить прямоугольник на несколько фигур

Изображение разбитое на части

Как разделить прямоугольник на 6 фигур (2 квадрата, 2 горизонтальных прямоугольника, 2 вертикальных прямоугольника)? Как рассчитать это на автомате, что бы указав количество каждого типа фигуры и размеры разбиваемого прямоугольника получить такой результат? Подскажите формулы или может уже где-то есть реализация на php? Пример ожидаемого результата:

function cutRectangle($rectangleWidth, $rectangleHeight, $countSquare, $countHorizontalRectangle, $countVerticalRectangle)

Отслеживать

27.2k 2 2 золотых знака 45 45 серебряных знаков 76 76 бронзовых знаков

Как разделить прямоугольник на квадрат и прямоугольник

а) Показать, что любой треугольник можно разрезать на несколько частей, из которых можно сложить прямоугольник;
б) показать, что любой прямоугольник можно разрезать на несколько частей, из которых можно сложить квадрат;
в) верно ли, что любой многоугольник можно разрезать на несколько частей, из которых можно сложить квадрат?

Подсказка

б) Докажите, что для любого прямоугольника существует параллелограмм, равносоставленный как ему, так и некоторому квадрату.
в) Разрежьте сначала многоугольник на треугольники. Каждый из них разрежьте на части, из которых можно сложить квадрат. Затем подумайте, как из нескольких квадратов получить один.

Решение

а) Равносоставленность любого треугольника и некоторого прямоугольника следует из рисунка ниже (прямая l на рисунке содержит среднюю линию треугольника).

б) Докажем сначала, что любой параллелограмм равносоставлен прямоугольнику, одна сторона которого равна основанию параллелограмма, а другая — его высоте. Если высота параллелограмма падает на его основание, то его нужно разрезать по высоте (см. рис.).

Если же она падает на продолжение основания, то тогда линиями, параллельными основанию, параллелограмм можно разрезать на параллелограммы, у которых высоты падают на основания. После этого каждый из полученных параллелограммов можно разрезать описанным выше способом (см. рисунок ниже). (Дотошный читатель сообразит, что последней оговорки можно было бы и не делать, поскольку всегда по крайней мере одна из высот параллелограмма падает на основание, а не на его продолжение; попробуйте доказать это самостоятельно.)

Теперь перейдем к доказательству основного утверждения пункта б). Для любого прямоугольника можно найти параллелограмм, у которого:
1) большая сторона равна большей стороне прямоугольника;
2) высота, опущенная на большую сторону, равна меньшей стороне прямоугольника;
3) меньшая сторона равна опущенной на нее высоте.
Способ построения такого параллелограмма приведен на рисунке ниже.

Согласно доказанному утверждению, этот параллелограмм равносоставлен как исходному прямоугольнику, так и квадрату со стороной, равной его меньшей стороне. Значит, исходный прямоугольник равносоставлен квадрату.
в) Докажем, что любой многоугольник можно разрезать на треугольники. Если многоугольник выпуклый, это очевидно — достаточно провести все диагонали из одной вершины. Если же он не выпуклый, то его можно разрезать на выпуклые, проведя продолжения всех его сторон. Согласно пунктам а) и б), каждый треугольник равносоставлен некоторому квадрату. Осталось доказать, что произвольные несколько квадратов можно разрезать на части, из которых можно сложить один квадрат. Как это сделать для двух квадратов, показано на рисунке нижу. Если квадратов больше двух, то проделав эту операцию с любыми двумя, мы уменьшим их количество на один. Повторяя ее, мы получим в конце концов один квадрат.

Ответ

Замечания

Источник решения: книга "В.О.Бугаенко. Турниры им. Ломоносова. Конкурсы по математике. МЦНМО-ЧеРо. 1998"

Источники и прецеденты использования

олимпиада
Название Турнир им.Ломоносова
год/номер
Номер 03
Дата 1980
задача
Номер 04

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *