Страница 1 из 1

Задачка про квадрат

Добавлено: Пт апр 13, 2007 5:24 pm
EAA
Помогите решить задачку:
Дано :
Квадрат 13х13

Необходимо разрезать квадрат на 5 прямоугольников так чтобы не одна из сторон прямоугольников не повторилась друг с другом.

Как данную задачу можно решить не графическим способом???

Добавлено: Пт апр 13, 2007 8:06 pm
IVVA
Не повторялись друг с другом...? Это как ?
Наверное-любые два из пяти не имеют хотя бы по одной
равной стороне.

Добавлено: Пт апр 13, 2007 11:32 pm
pipicato
Если логически подумать то таких прямоугольников очень много :lol: ,надо ли конкретную зависиамость искать?!

Добавлено: Пн апр 16, 2007 8:39 am
EAA
IVVA Нет, у всех 5-ти прямоугольников отличная друг от друга длина и высота

pipicato
Решение согласен есть и не единственное, но хотелось бы найти метод решения данной задачи а не результат.

Re: Задачка про квадрат

Добавлено: Сб сен 23, 2017 8:09 am
Kitonum
Задачка показалась интересной, решил в ней разобраться. Оказалось, что решается довольно просто. Основная идея - к каждой стороне квадрата должны примыкать в точности два прямоугольника и возможна только такая конфигурация
Изображение

или полученная зеркальным отражением. Конкретные размеры определяются 4 независимыми параметрами (a, b, c, d на рисунке выше). Варьируя значения этих параметров в соответствующих пределах, легко найти все решения. Получено 112 решений для этой конфигурации. На рисунке ниже первое и последнее из найденных решений.
Изображение


Почему-то файлы с расширением mw не допускаются, поэтому привожу тексты кодов в Maple для нахождения всех списков [a,b,c,d] и кода для визуализации:

restart;
L:=[]:
for a from 1 to 10 do
for b from 3 to 12 do
for c from a+1 to 12 do
for d from 14-b to 12 do
if nops({a,b,13-b,c,13-c, d,13-d,13-a,c-a,b+d-13})=10 then L:=[op(L),[a,b,c,d]] fi;
od: od: od: od:
L;
nops(L);

P:=proc(L::list) # Код для визуализации
local a, b, c, d;
uses plottools, plots;
assign(([a,b,c,d]=~L)[]);
display((rectangle@op)~([[[0,13-b],[a,13]], [[0,0],[c,13-b]], [[c,0],[13,d]], [[13,d],[a,13]], [[a,13-b],[c,d]]]), style=line, color=red, thickness=4, gridlines=true, scaling=constrained);
end proc:

for n from 1 to 112 do # Визуализация всех решений
n;
P(L[n]);
od;