RodionGork's blog

By RodionGork, 10 years ago, In Russian
A * B + C - D
(C + A * B) - D
C + (-D + B * A)

Как установить факт (не)равенства пары таких вот арифметических выражений? Вчера мне казалось что это лёгкая задачка — нужно построить деревья для выражений и функцию сравнения деревьев написать. Сегодня мне так перестало казаться — чтобы функция получилась достаточно простой, по-видимому, придётся с деревьями манипуляции проводить какие-то.

Ещё можно потестить на случайных наборах чисел — присваивать произвольные значения, считать результат и проверять что он совпадает. Этот вариант мне не нравится — тут и вопросы точности и т.п. :)

Или если уж говорить о манипуляциях, казалось бы надо все скобки пораскрывать чтобы к некоему унифицированному виду прийти, потом отсортировать слагаемые и множители и ура. Но выражения в знаменателях по-моему усложняют этот подход. %)

Всё действительно так сложно, или я не вижу какого-то более разумного пути?

P.S. Набор действий ограничим четырьмя (+ - * /).

P.P.S. М.б. в ОПН сравнивать выражения легче технически, но мне не кажется что суть это упростит.

  • Vote: I like it
  • +22
  • Vote: I do not like it