"Логические задачи" - это познавательно-развлекательный проект для непрокисших мозгов.
Задачи на логику, нестандартное мышление. Не всегда самое очевидное решение - правильное.
Но иногда всё оказывается проще, чем кажется на первый взгляд.
R-2, можно конечно. Но это слишком дорогое удовольствие по сравнению с модулем. Всегда предполагайте худшее - если кто-то попросил Вас написать метод, то собирается его вставить в самый злобный участок высоконагруженного кода, где он будет вызываться 100500 тыщ раз в секунду. Ж8)))
Nikita, если Вам надо обязательно "хитростное" обоснование полусуммы и полуразности, то оно получается гораздо проще. Есть такая функция "сигнум". Изобретена математиками задолго до появления компьютеров, хотя в общих разделах практически не встречается. С помощью этой функции Ваше исходное выражение записывается гораздо проще уже само по себе: a*(1+sign(a-b))/2+b*(1-sign(a-b))/2 ; и далее раскрывая скобки получаем без всяких танцев с квадратами: (a+b)/2+(a-b)*sign(a-b)/2 , а памятуя, что x*sign(x)=abs(x) и получаем во втором слагаемом модуль полуразности.
Админ: кстати, интересный путь отказаться от использования модуля, который в себе скрытую проверку содержит. Покрутить со знаковым битом и побитовыми операциями. Придется, правда, пожертвовать универсальностью и сузить задачу, конкретизируя тип переменных.
Nikita 2019-05-01 20:01:30 пишет:
Раскрывая скобки, памятуя, что |a-b|=|b-a|, a также что(a-b)^2=|a-b|^2, скрадывая квадрат разности по формуле сокращенного умножения, - в итоге приходим к [(a+b)+|a-b|]/2. Но можно и напрямую путем бесхитростных рассуждений: было уже.
ЫЫЫ... а может "раз такая пьянка" - то и вовсе написать - max(a, b)
Ибо это оператор возврата максимума, но НЕ "любой другой Сравнения" - результата сравнения мы ведь не получаем. А на всё что там под капотом - прикидываемся юзверями и говорим что нам туда лазить никак не можно :)
:) Ну, вообще-то это задачка-неберучка. Функция модуля (abs), которая сюда просится, аж пищит, - на самом деле у себя под капотом использует операцию сравнения - это просто к гадалке не ходи. :))) Можно, конечно, ее попытаться заменить какими-нибудь «костылями», типа корня из квадрата - но, во-первых, нет гарантий, что и костыли не будут скомпрометированы скрытым сравнением, а во-вторых, это будет сильно смахивать на анекдот про вырезание аппендикса. :)))
Ну, а так, то полусумма плюс модуль полуразности, видимо являются ожидаемым ответом. :)