A * B + C - D (C + A * B) - D C + (-D + B * A)
Как установить факт (не)равенства пары таких вот арифметических выражений? Вчера мне казалось что это лёгкая задачка — нужно построить деревья для выражений и функцию сравнения деревьев написать. Сегодня мне так перестало казаться — чтобы функция получилась достаточно простой, по-видимому, придётся с деревьями манипуляции проводить какие-то.
Ещё можно потестить на случайных наборах чисел — присваивать произвольные значения, считать результат и проверять что он совпадает. Этот вариант мне не нравится — тут и вопросы точности и т.п. :)
Или если уж говорить о манипуляциях, казалось бы надо все скобки пораскрывать чтобы к некоему унифицированному виду прийти, потом отсортировать слагаемые и множители и ура. Но выражения в знаменателях по-моему усложняют этот подход. %)
Всё действительно так сложно, или я не вижу какого-то более разумного пути?
P.S. Набор действий ограничим четырьмя (+ - * /
).
P.P.S. М.б. в ОПН сравнивать выражения легче технически, но мне не кажется что суть это упростит.