![]() |
![]() ![]() |
![]() |
sheka |
![]()
Сообщение
#1
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
Вопрос: возможно ли пронести шкаф a*b*c через дверь p*q?
Мое решение: write ( min(a,min(b,c)) < min(p,q)) and (a+b+c-min(a,min(b,c))-max(a,max(b,c)) < max(p,q) ); Можно как-то оптимизировать? Учитывая, что паскаль я вижу впервые, и что я функции, по идее, знать не должен программа растягивается до некультурной длины. |
sheka |
![]()
Сообщение
#2
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
маленький упс.. там же можно еще и в плоскостях шкаф передвигать наверное..
|
Unconnected |
![]()
Сообщение
#3
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Для протаскивания шкафа нужно, чтобы 2 из 3х его параметров удовлетворяли двери. Можно упорядочить стороны по возрастанию и взять первые 2 числа, а потом их уже сравнивать с дверью.. Правда, широкий низкий шкаф, который просто так по ширине не проходит, можно пронести, немного повернув его)
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
sheka |
![]()
Сообщение
#4
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
Готово. Чуть позже постараюсь выложить объяснения.
procedure TForm1.Button1Click(Sender: TObject); Сообщение отредактировано: sheka - 14.09.2010 1:55 |
Lapp |
![]()
Сообщение
#5
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Ребят, раздел - Алгоритмы! Программа - не есть алгоритм, она есть его реализация. Если вы кладете тут программу, то только как демонстрацию ранее приведенного алгоритма!
Даю возможность исправить ошибку задним числом.. )) -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
TarasBer |
![]()
Сообщение
#6
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> sqrt(a*a+b*b)*sin(arctan(2*a*b/(a*a-b*b))+arctan(sqrt(a*a+b*b-q*q)/q))
То есть ты решил учесть поворот? Мне кажется, тут какая-то лажа. Потому что второе слагаемое arctan(sqrt(...)) имеет не ту размерность. Кстати, sin(arctan(x)) = x/sqrt(sqr(x)+1), причём корень тут берётся. т.е. можно выражение очень упростить. Первое слагаемое (sqrt(a*a+b*b)*sin(arctan(2*a*b/(a*a-b*b))) сожмётся до 2ab/sqrt(aa+bb) -------------------- |
sheka |
![]()
Сообщение
#7
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
TarasBer, там же, как ты сам и говорил, сумма арктангенсов. а еще играться с триногометрией.. я думаю там не проще будет.
Lapp, как мне сегодня рассказывали, программа - один из вариантов представления алгоритма. ![]() Я бы с удовольствием выложил алгоритм, но его надо сначало красиво переписать))) Сделаю чуть позже. TarasBer, проверяй, пожалуйста. Вроде все чики пики. Я вчера ночером по миллиметрам линейкой считал: ![]() Сообщение отредактировано: sheka - 14.09.2010 22:13 |
TarasBer |
![]()
Сообщение
#8
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
А, второй арктангенс под синусом. Понял.
Тогда так sin(x+y)=sinxcosy+sinycosx= (2abq+(a2-b2)sqrt(a2+b2-q2))/(a2+b2)sqrt(a2+b2) После умножения на sqrt(a2+b2) из знаменателя исчезает корень: if p*(a*a+b*b)>= 2*a*b*q+(a*a+b*b)*sqrt(a*a+b*b-q*q) then... Кстати, в таком виде формула уже не вылетает при a=b. Но симметрии всё равно пока нет. Надо дальше думать. -------------------- |
TarasBer |
![]()
Сообщение
#9
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
После симметризации условие принимает вид такой:
(p2+q2)*(a2+b2)-4pqab>= (a2+b2)*(a2+b2)-4abab. -------------------- |
sheka |
![]()
Сообщение
#10
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
alpha := arctan(sqrt(a*a+b*b-q*q)/q); Добавил такие ограничения, вроде уже при всех входных данных должно работать. С первого раза как-то забыл проверить.. TarasBer, можешь подробнее расписать, не могу уловить ход размышлений ![]() Lapp, вот только добрался, и написал "алгоритм" ![]() ![]() Сообщение отредактировано: sheka - 20.09.2010 0:54 |
sheka |
![]()
Сообщение
#11
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
Вот никак не могу понять, откуда из вот этого
Цитата p*(a*a+b*b)>= 2*a*b*q+(a*a+b*b)*sqrt(a*a+b*b-q*q) берется вот это:Цитата После симметризации условие принимает вид такой: (p2+q2)*(a2+b2)-4pqab>= (a2+b2)*(a2+b2)-4abab. |
TarasBer |
![]()
Сообщение
#12
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Переносим 2*a*b*q налево, возводим в квадрат.
Потом, после приведения подобных, делим обе части на (a*a+b*b). Добавлено через 2 мин. Только не из p*(a*a+b*b)>= 2*a*b*q+(a*a+b*b)*sqrt(a*a+b*b-q*q) а из p*(a*a+b*b)>= 2*a*b*q+(a*a-b*b)*sqrt(a*a+b*b-q*q) -------------------- |
sheka |
![]()
Сообщение
#13
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
TarasBer, что это за умное слово "симметризация" ? Нигде не могу его найти
![]() Интересует потому, что вроде в таком виде оно действительно симметрично, но правая часть будет ведь проще без ее, симметризации. |
TarasBer |
![]()
Сообщение
#14
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Нет такого термина, это я для наглядности сказал.
Да, правая часть может быть записана как sqr(a2-b2), но в таком виде неравенство выглядит интереснее. -------------------- |
![]() ![]() |
![]() |
Текстовая версия | 15.06.2024 6:21 |