Как стать автором
Обновить

Комментарии 23

Понимаете, любая функция должна быть хорошей. Нет, наверное, в качестве задачи для разминки мозгов «сделай XXXXX так, чтобы поместилось в одну строку» это подойдет. Вы рассматриваете их именно с этой точки зрения, правда?
верно
>> Ранее я уже публиковал статью о Однострочниках на С++.

И, насколько я помню, с треском провалились?
Нет, это замена «Однострочников 2». Так сказать, «Однострочники 2.5»
Почему команду «xchg op1, op2» в ассемблерной вставке не используете?
Потому что один из операндов должен быть регистром.
Полагаю, потому что xchg не имеет формы для обмена двух переменных в памяти.
Да можно и так…
void swap(int *a, int *b) {
     asm volatile(
        "XCHG   %0,  %1;      \n\t"
        :"=a"(*a),"=b"(*b)
        :"a"(*a),"b"(*b)
    );
}
И не забывайте, что если в аргументах XCHG есть память, то инструкция будет иметь префикс LOCK, что не значительно влияет на скорость исполнения.
Спасибо, Кэп)
Мне кажется, или данная реализация кода Грея для чисел вида 11...11 вернет 10...00?
11...11 ^ (01...11) = 10...00
НЛО прилетело и опубликовало эту надпись здесь
clock_t start = clock();
...
clock_t end = clock();
«индийский алгоритм»
return b? ((b&1?a:1)*powM(a*a, b/2, p) % p): 1;

Человек, который найдет это в какой-нить опенсурсной библиотеке, в которой нужно будет разобраться, прокленет ее автора.

Макконнелла не читали?
Почему? Алгоритм довольно простой и известный: если степень нечётная, умножь на основание предыдущую степень, а если чётная, возведи в квадрат вдвое меньшую степень. В одной строке разобраться не слишком сложно.
Это же не реальный рабочий код — это «разминка для мозгов». Естественно, никто не станет так делать. Я надеюсь, во всяком случае.
В таком разобраться гораздо труднее:
main(Q,O)char**O;{if(--Q){main(Q,O);O[Q][0]^=0X80;for(O[0][0]=0;O[++O[0][0]]!=0;)if(O[O[0][0]][0]>0)puts(O[O[0][0]]);puts("----------");main(Q,O);}}
При всём уважении к труду… я не совсем понимаю, зачем нужны «однострочники» на C++.
Одно дело какой-нибудь powershell, где нужно в командной строке набрать строчку и получить результат.
И совсем другое дело — компилируемый язык, где разницы между одной строчкой и десятью строчками нет.

У меня все программы состоят из однострочников примерно такого вида:

class X {
public: void f();
void g(int x);
int h(double a, double b);
};

А что находится в cpp-модуле — какая кому разница?
Спортивный интерес.
удалите все \n из текста программы :)
> Сравнение 5 вариантов кода с undefined bahavior.

Fixed.
Где это оно fixed? Туплю.
Это предлагаемое исправление текста топика, чтобы тот соответствовал дейстительности.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории