Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
SashaMercuryXDiaBLoпропущено... Да там и if есть самый настоящий. Но по сабжу я уже ответил Программа:(max 5 3) Результат: 5 а вы посмотрите как в Scheme реализована эта функция :) Хмм, исходники компилятора чтоль поискать? Там это похоже ключевое слово, даже не из библиотек, а основы языка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 08:09 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
Dima TSashaMercuryа чем это лучше предложенного кода ранее пропущено... Тем что я его не заметил выше :) Только правильно так Код: sql 1. 2. 3. 4. почему так ? ведь у меня после сдвига в младшем разряде будет либо 1, либо 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 08:20 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
SashaMercury Код: plaintext 1. Ну и битовые сдвиги не перечислены в разрешенных операциях andreymx+ - * / and or xor ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 08:22 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
Dima TSashaMercury Код: plaintext 1. Ну и битовые сдвиги не перечислены в разрешенных операциях andreymx+ - * / and or xor А это же не циклический сдвиг? Деление нацело сойдёт тогда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 08:26 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
SashaMercuryпочему так ? ведь у меня после сдвига в младшем разряде будет либо 1, либо 0 обычно принято что sign() возвращает +1 для положительных, -1 для отрицательных и 0 для 0. В данном случае 0 не важен, т.к. нам в итоге надо получить модуль числа, т.е. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 08:26 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
XDiaBLoDima Tпропущено... Ну и битовые сдвиги не перечислены в разрешенных операциях пропущено... А это же не циклический сдвиг? Деление нацело сойдёт тогда. А мля, 31 а не 32... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 08:26 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
XDiaBLoXDiaBLoпропущено... А это же не циклический сдвиг? Деление нацело сойдёт тогда. А мля, 31 а не 32...Впрочем 2 в 31 степени же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 08:26 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
XDiaBLoА это же не циклический сдвиг? Деление нацело сойдёт тогда. Это оказывается сдвиг с учетом знака http://msdn.microsoft.com/ru-ru/library/vstudio/k2ay192e(v=vs.100).aspx Для заполнения позиций слева используется бит знака значения Я не знал, если честно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 08:35 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
Dima T, тогда надо будет результат побитово умножить на 1. Но если уж уходить от побитового сдвига, то нужно использовать ваш вариант ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 08:40 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
Dima TXDiaBLoА это же не циклический сдвиг? Деление нацело сойдёт тогда. Это оказывается сдвиг с учетом знака http://msdn.microsoft.com/ru-ru/library/vstudio/k2ay192e(v=vs.100).aspx Для заполнения позиций слева используется бит знака значения Я не знал, если честно. Ясно, деление нацело не сойдёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 08:52 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
SashaMercuryDima T, тогда надо будет результат побитово умножить на 1. не поможет т.к. 0&1 = 0. Твой сдвиг дает либо 0000 либо 1111, т.е. для положительных надо дополнительно 0000 превратить в 0001, что и делает |1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 08:55 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
Dima TSashaMercuryDima T, тогда надо будет результат побитово умножить на 1. не поможет т.к. 0&1 = 0. Твой сдвиг дает либо 0000 либо 1111, т.е. для положительных надо дополнительно 0000 превратить в 0001, что и делает |1 нет, мне это не нужно. Для положительных я буду иметь 0, для отрицательных 1. И дальше такой код Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 09:04 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
Коллеги а какова цена вопроса? Что мы хотим? 1) Оптимизировать скорость? В этом случае нам надо искать Ассемблер для целевой конфигурации и внимательно смотреть в нём команды, abs(x,y), sgn(x,y) или их более атомарные декомпозиции. Далее считать такты и делать бенчмарки. 2) Перейти в другой базис? Актуально для цифровой системотехники. Искать программно-аппаратное решение. Можно рисовать логическую машину на вентилях AND/OR/NOT и линиях задержки. Но это-ли спрашивал автор? 3) Перейти в другой ЯП? Ну тут вроде примеры уже были. Большая часть - самообман. Трудно доказать ОТСУТСТВИЕ операции IF внтри них. 4) Делать обфускацию и запутывать читателя? Нечего добавить. Можно сколь угодно усложнять функцию abs вычисляя ее через числовые ряды и умножения векторов и матриц. Усложнять вообще может любой дурак. Вы попробуйте упростить. Вобщем Генри Уоррен тычет вам свою книжку и тихо ругается сквозь зубы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 09:27 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
maytonЧто мы хотим? Фигней позаниматься Иногда полезно, я вот например узнал что >> для заполнения позиций слева использует бит знака значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 09:38 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. Осталось придумать как abs без использования if сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 09:40 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
XDiaBLoОсталось придумать как abs без использования if сделать. так уже придумано Яростный Меч(a + b + abs(a-b)) / 2 Dima Tabs(x) = x * sign(x) Dima T & SashaMercuryint sign(int x) { return (x>>31) | 1; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 09:47 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
Dima TXDiaBLoОсталось придумать как abs без использования if сделать. так уже придумано Яростный Меч(a + b + abs(a-b)) / 2 Dima Tabs(x) = x * sign(x) Dima T & SashaMercuryint sign(int x) { return (x>>31) | 1; } Да, только я пока Scheme не так хорошо знаю, чтобы это реализовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 09:50 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
Ладно, сделал :) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 09:56 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
XDiaBLoЛадно, сделал :) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Поправил. Результат таков автор9 3 115 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 09:57 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
XDiaBLoДа, только я пока Scheme не так хорошо знаю, чтобы это реализовать. могу только подсказать как по правильному операции называются >> "битовый арифметический сдвиг вправо" | "побитовое сложение" или "логическое или" может поможет нагуглить нужное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 09:59 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
Короче вот конечная версия: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 10:07 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
Просто я взялся дочитать однажды заброшенный мной SICP, поэтому стараюсь при любой возможности практиковаться. Этим и обусловлен выбор языка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 10:10 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
XDiaBLoПросто я взялся дочитать однажды заброшенный мной SICP, поэтому стараюсь при любой возможности практиковаться. Этим и обусловлен выбор языка. +1 Это мега-похвально. А что такое "racket" ? Я использовал Common Lisp. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 12:02 |
|
||
|
максимум без if
|
|||
|---|---|---|---|
|
#18+
maytonXDiaBLoПросто я взялся дочитать однажды заброшенный мной SICP, поэтому стараюсь при любой возможности практиковаться. Этим и обусловлен выбор языка. +1 Это мега-похвально. А что такое "racket" ? Я использовал Common Lisp. В среде DrRacket по умолчанию используется язык Racket, который хоть и отличается от Scheme, но пока всё компилится, я часто забываю указать "#lang scheme" вместо "#lang racket". В общем он похож на Scheme очень, пока ещё я не наткнулся на различия. И кстати в книге же Scheme используется а не Common Lisp, я предпочёл использовать то что авторы сказали, правда не осилил компиляцию в mit-scheme, поэтому взял DrRacket, который тоже Scheme поддерживает. В нём вполне удобно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 12:11 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38812674&tid=1340042]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
172ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 286ms |
| total: | 561ms |

| 0 / 0 |
