Даны два ящика с размерами (L,B,H). Нужно определить равны ли они без учёта положения в пространстве... т.е. ящики с размерами (1,2,3), (1,3,2), (2,1,3), (2,3,1), (3,1,2) и (3,2,1) являются одинаковыми (просто перевёрнуты в пространстве). Все числа положительные и целые.

Доказать достаточность проверки их объёмов и суммы сторон для уверенности их равности. т.е.

if (L1 * B1 * H1 = L2 * B2 * H2) and (L1 + B1 + H1 = L2 + B2 + H2) then
  //равны
else
  //не равны

PS: и можно ли это сравнение сделать ещё проще?

задан 13 Янв 20:14

изменен 13 Янв 21:10

2

@Isaev: ящики, насколько я понимаю, являются прямоугольными параллелепипедами?

Если надо проверить, совпадают ли три набора измерений с точностью до перестановки, то двух равенств для суммы и произведения мало. Нужно ещё проверить совпадение сумм попарных произведений, то есть LB+LH+BH (геометрически, это совпадение площадей поверхностей). Если три характеристики совпали, то тройки чисел совпадут как корни уравнения (t-L)(t-B)(t-H), с учётом теоремы Виета.

Можно также написать условие совпадения троек через все 3!=6 возйможных перестановок.

(13 Янв 22:32) falcao

Да всё так... По последнему пункту 18 сравнений будет?

(14 Янв 0:15) Isaev
1

@Isaev: в худшем случае, наверное, да. Но для компьютера 10 или 18 -- это не принципиально.

(14 Янв 1:16) falcao
1

Для компьютера конечно нет... Принципиально для человека, который ждёт результат) Но это уже другая тема, спасибо за ответы!

(14 Янв 1:53) Isaev

Для справки: Практика показала, что математический подход работает чуть быстрее, чем прямыми проверками!

(15 Янв 20:17) Isaev

@Isaev: можно ещё отсортировать массивы, а потом сравнить поэлементно.

(15 Янв 20:24) falcao

Это я тоже тестировал, это получился самый долгий вариант. Почти в два раза дольше, чем первые два

(15 Янв 22:29) Isaev

Ещё при значениях [1..7], как раз, как мне и хватило, самой длинной проверкой по теореме Виета можно пренебречь, хватает первых двух. она нужна только начиная с 8.

(15 Янв 22:34) Isaev

Да ну, не может быть такого. Что-то у вас с проверками не то. Во первых не понимаю, откуда 18 сравнений берется, если их 6 всего. Во вторых, да никогда Макс или Мин(a,b,c) не будет медленнее произведения

(15 Янв 22:39) spades

Minmax это тоже функция, внутри которой ещё несколько проверок... Тут можешь глянуть я приводил текст всех трёх функций сравнения: https://ru.stackoverflow.com/questions/1069415/Как-сравнить-размеры-двух-ящиков

(15 Янв 22:57) Isaev

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

(16 Янв 8:35) spades

Покажите код с таймингом. Сдается мне, что вы вводите всех в заблуждение

(16 Янв 11:13) spades

там всё просто: https://www.pastiebin.com/5e200e825fb9b

(16 Янв 11:20) Isaev

Так а где текст size_comapre?

(16 Янв 12:00) spades

по ссылке выше на stackoverflow, я же писал

(16 Янв 13:36) Isaev
показано 5 из 15 показать еще 10
10|600 символов нужно символов осталось
Знаете, кто может ответить? Поделитесь вопросом в Twitter или ВКонтакте.

Ваш ответ

Если вы не нашли ответ, задайте вопрос.

Здравствуйте

Математика - это совместно редактируемый форум вопросов и ответов для начинающих и опытных математиков, с особенным акцентом на компьютерные науки.

Присоединяйтесь!

отмечен:

×3,468
×214
×131
×105
×50

задан
13 Янв 20:14

показан
70 раз

обновлен
16 Янв 13:36

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

по почте:

Зарегистрировавшись, вы сможете подписаться на любые обновления

по RSS:

Ответы

Ответы и Комментарии

Дизайн сайта/логотип © «Сеть Знаний». Контент распространяется под лицензией cc by-sa 3.0 с обязательным указанием авторства.
Рейтинг@Mail.ru