|
|
|
_Y_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Возникла такая нетривиальная задача. Надо написать формулу, не применяя Булевых операторов - только арифметика/алгебра.
Имеются две величины а и b. Надо написать математическую функцию f(a,b), растущую с ростом каждой величины, как, например a+b или sqrt(a*a+b*b), но принимающую значение ноль в случаях если a или b или оба они отрицательны. При этом булевы условия задавать нельзя. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
Pavia |
|
|||
Опытный Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
(1+a/abs(a))*(1+b/abs(b))
|
|||
|
||||
_Y_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Pavia, спасибо. Это, почти решает задачу. Но есть одна проблема.
Если один из аргументов принимает значение ноль возникает неопределенность. А вот неопределенности мне необходимо избегать. Это сообщение отредактировал(а) _Y_ - 27.9.2014, 16:41 -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
Pavia |
|
|||
Опытный Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
_Y_,
sign() -можно использовать? CrossProduct использовать можно? |
|||
|
||||
_Y_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
По-моему sign() это функция просто прячущая внутри себя операторы сравнения. Так что использовать ее нельзя. С CrossProduct я как-то не сталкивался (ну или не помню). Инет говорит о векторах и трехмерном пространстве. Даже и не знаю каким концом (в трехмерном пространстве) эта функция сюда подходит. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
Dremuk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 17.12.2009 Репутация: нет Всего: нет |
(1+a/abs(a))*(1+b/abs(b)) - не является растущей. Это набор констант
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
Dremuk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 17.12.2009 Репутация: нет Всего: нет |
||||
|
||||
Dremuk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 17.12.2009 Репутация: нет Всего: нет |
||||
|
||||
Dremuk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 17.12.2009 Репутация: нет Всего: нет |
||||
|
||||
_Y_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Но, если бы не деление на ноль при a или b равном нулю, это решало бы проблему. Ведь любую растущую функцию можно умножить на получаемую константу. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
maxim1000 |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
(a+abs(a))*(b+abs(b))
-------------------- qqq |
|||
|
||||
_Y_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
maxim1000,
О! Именно оно. Кстати, еще днем нашел дургой вариант того же: (a+sqrt(a*a))*(b+sqrt(b*b)) -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |