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

Форум для обсуждения вопросов математики

Модератор: Admin

EAA
Сообщения: 2
Зарегистрирован: Пт апр 13, 2007 5:21 pm

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

Сообщение EAA » Пт апр 13, 2007 5:24 pm

Помогите решить задачку:
Дано :
Квадрат 13х13

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

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

IVVA
Сообщения: 1036
Зарегистрирован: Вт апр 05, 2005 6:44 pm

Сообщение IVVA » Пт апр 13, 2007 8:06 pm

Не повторялись друг с другом...? Это как ?
Наверное-любые два из пяти не имеют хотя бы по одной
равной стороне.

pipicato
Сообщения: 18
Зарегистрирован: Чт мар 29, 2007 12:54 am

Сообщение pipicato » Пт апр 13, 2007 11:32 pm

Если логически подумать то таких прямоугольников очень много :lol: ,надо ли конкретную зависиамость искать?!

EAA
Сообщения: 2
Зарегистрирован: Пт апр 13, 2007 5:21 pm

Сообщение EAA » Пн апр 16, 2007 8:39 am

IVVA Нет, у всех 5-ти прямоугольников отличная друг от друга длина и высота

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

Kitonum
Сообщения: 1996
Зарегистрирован: Ср дек 31, 2008 1:55 pm
Откуда: г. Пенза

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

Сообщение Kitonum » Сб сен 23, 2017 8:09 am

Задачка показалась интересной, решил в ней разобраться. Оказалось, что решается довольно просто. Основная идея - к каждой стороне квадрата должны примыкать в точности два прямоугольника и возможна только такая конфигурация
Изображение

или полученная зеркальным отражением. Конкретные размеры определяются 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;