лектор задал задачку, я ломал голову но так и не придумал.
вопрос простой. надо написать функцию которая получает 2 целых числа и возвращает большее из них.
но! нельзя использовать циклы, ветвления (иф), знаки больше-меньше (<,>).
можно использовать только арифметические операторы + - * / и деление по модулю.
желательно обойтись без деления по модулю.
использовать abs() тоже нельзя так как это ветвление.
помогите плиз решить задачку. да и вам самим думаю помассировать мозги не помешает, кому это интересно.
всем заранее спасибо!
Спустя 4 минуты, 35 секунд (20.04.2012 - 12:59) Pulse написал(а):
Спустя 1 минута, 29 секунд (20.04.2012 - 13:01) Игорь_Vasinsky написал(а):
$a = 13;
$b = 10;
$arr = array($a, $b);
sort($arr, SORT_NUMERIC);
echo 'Число ('.$arr[0].') меньше чем число ('.$arr[1].')';
Спустя 5 минут, 23 секунды (20.04.2012 - 13:06) Гость_Michael написал(а):

Спустя 27 секунд (20.04.2012 - 13:07) MatrixGod написал(а):
не не не ребята!
это должно быть не зависимо от языка программирования.
алгоритм должен работать на любом языке.
это означает что использовать готовые функции нельзя, так как в другом языке их может не быть вовсе.
повторюсь, можно использовать только арифметические операторы и деление по модулю. ВСЕ!
sort и max это ветвления.
это должно быть не зависимо от языка программирования.
алгоритм должен работать на любом языке.
это означает что использовать готовые функции нельзя, так как в другом языке их может не быть вовсе.
повторюсь, можно использовать только арифметические операторы и деление по модулю. ВСЕ!
sort и max это ветвления.
Спустя 2 минуты, 18 секунд (20.04.2012 - 13:09) glock18 написал(а):
MatrixGod
язык то какой? если abs нельзя юзать, то max или sort тоже нельзя значит - и то, и другое цикл использует как бы.
я так понимаю, что равенство можно проверять ==? без него походу вообще нефиг делать, если без встроенных функций
UPD: первый вопрос отпал
язык то какой? если abs нельзя юзать, то max или sort тоже нельзя значит - и то, и другое цикл использует как бы.
я так понимаю, что равенство можно проверять ==? без него походу вообще нефиг делать, если без встроенных функций
UPD: первый вопрос отпал
Спустя 7 минут, 5 секунд (20.04.2012 - 13:16) MatrixGod написал(а):
glock18, язык с++.
но это не важно.
я задал вам вопрос как к программистам в общем.
а не к знатокам пхп.
лектор сказал что ответ есть и что он не такой уж и сложный.
так что он сказал что не важен язык. тоесть там не надо использовать какие-то сверх функции.
просто надо придумать алгоритм который будет работать везде.
это больше математическая задача чем о программировании.
но это не важно.
я задал вам вопрос как к программистам в общем.
а не к знатокам пхп.
лектор сказал что ответ есть и что он не такой уж и сложный.
так что он сказал что не важен язык. тоесть там не надо использовать какие-то сверх функции.
просто надо придумать алгоритм который будет работать везде.
это больше математическая задача чем о программировании.
Спустя 19 минут, 28 секунд (20.04.2012 - 13:35) rooor написал(а):
ХЗ, если как пример, то, наверное, можно так
Суть - от первого отнимаем второе, если результат меньше нуля - бОльшее число второе, если результат больше нуля - значит первое число больше.
Ну не знаю я кароч)))
$a = 10;
$b = 20;
$c = $a - $b;
if($c < 0)
echo $b;
else
echo $a;
Суть - от первого отнимаем второе, если результат меньше нуля - бОльшее число второе, если результат больше нуля - значит первое число больше.
Ну не знаю я кароч)))
Спустя 4 минуты, 37 секунд (20.04.2012 - 13:40) forza написал(а):
Написали же, что иф, и операторы больше, меньше нельзя использовать
Спустя 4 минуты, 17 секунд (20.04.2012 - 13:44) Michael написал(а):
отсюда:
print mmax(222, 311);
print '<br>';
print mmax(222, 111);
function mmax($a, $b){
$a1 = ($a - ($a % $b)) / $b;
$a1 = ((($a1 + 2) - (($a1 + 2) % ($a1 + 1))) / ($a1 + 1)) % 2;
$b1 = 1 - $a1;
return $a*$a1 + $b*$b1;
}
Спустя 2 минуты, 59 секунд (20.04.2012 - 13:47) MatrixGod написал(а):
эврика! получилось!
придумал с использованием корня. надеюсь прокатит )))
кому интересно:
придумал с использованием корня. надеюсь прокатит )))
кому интересно:
function myMax($a, $b)
{
return ($a + $b + sqrt(($a - $b) * ($a - $b))) / 2;
}
Спустя 4 минуты, 50 секунд (20.04.2012 - 13:52) MatrixGod написал(а):
Michael, не совсем точно.
print mmax(3, -7) выводит -7.
print mmax(3, -7) выводит -7.
Спустя 3 минуты, 36 секунд (20.04.2012 - 13:56) Michael написал(а):
Цитата (MatrixGod) |
придумал с использованием корня |
А как же:
Цитата (MatrixGod) |
можно использовать только арифметические операторы + - * / и деление по модулю |
Цитата |
Michael, не совсем точно. print mmax(3, -7) выводит -7. |
может речь все таки о натуральных числах шла, а ты просто не понял?
Спустя 2 минуты, 11 секунд (20.04.2012 - 13:58) MatrixGod написал(а):
Michael, нет, о целых, я перепроверил.
хз, я понятия не имею как иначе сделать.
поэтому и обратился к вам в надежде что кто-то поможет.
это все что я смог сделать.
хз, я понятия не имею как иначе сделать.
поэтому и обратился к вам в надежде что кто-то поможет.
это все что я смог сделать.
Спустя 1 минута, 39 секунд (20.04.2012 - 14:00) sergeiss написал(а):
А так? Нету ни деления по модулю, ни знаков больше-меньше :) Сравнение есть, но со "знаком вопроса". И нету ни циклов, ни ифов...
PS. И пофиг - дробные или целые числа.
PPS. Си и ПХП - будет работать точно.
return (int) ($a / $b) ? $a : $b;
PS. И пофиг - дробные или целые числа.
PPS. Си и ПХП - будет работать точно.
Спустя 5 минут, 38 секунд (20.04.2012 - 14:05) glock18 написал(а):
по ссылке изящнее решение то... один минус - деление по модулю на отрицательное значение подводит.
а с корнем то все проще - и так понятно, что корень квадрата разницы = значение этой самой разницы по модулю. думается мне, что не прокатит, в условии задачи несколько только операций перечислено
а с корнем то все проще - и так понятно, что корень квадрата разницы = значение этой самой разницы по модулю. думается мне, что не прокатит, в условии задачи несколько только операций перечислено
Спустя 17 секунд (20.04.2012 - 14:06) MatrixGod написал(а):
sergeiss, это ведь ветвление. тот же иф только в профиль )))
Спустя 1 минута, 49 секунд (20.04.2012 - 14:07) Michael написал(а):
sergeiss, это у тебя условие.
Спустя 2 минуты, 26 секунд (20.04.2012 - 14:10) sergeiss написал(а):
Цитата (MatrixGod @ 20.04.2012 - 16:06) |
sergeiss, это ведь ветвление. |
Цитата (Michael @ 20.04.2012 - 16:07) |
sergeiss, это у тебя условие. |
В явном виде ИФа нету

Спустя 1 минута, 50 секунд (20.04.2012 - 14:12) MatrixGod написал(а):
sergeiss, поверь мы с парнями уже обо всем подумали.
об этом тоже думали. но это использовать нельзя.
об этом тоже думали. но это использовать нельзя.
Спустя 13 минут, 5 секунд (20.04.2012 - 14:25) Michael написал(а):
Цитата |
В явном виде ИФа нету |
Цитата |
Another conditional operator is the "?:" (or ternary) operator |
Спустя 2 дня, 16 часов, 33 минуты, 41 секунда (23.04.2012 - 06:58) sergeiss написал(а):
Ну так и какое "правильное" решение?
Спустя 27 минут, 52 секунды (23.04.2012 - 07:26) Michael написал(а):
тоже бы интересно посмотреть.
Спустя 3 дня, 5 часов, 2 минуты, 49 секунд (26.04.2012 - 12:29) Michael написал(а):
натрепался наверное препод или ТС все таки вероятней не так понял задание