Как стать автором
Обновить
4
0
Денис Рябов @mobi

Пользователь

Отправить сообщение
Кстати, то же самое и с постоянной Хаббла — по реликтовому фону одно значение, а по цефеидам другое.
Перейдите в систему отчета, связанную со своим центром масс, и увидите, что ноги тянет в одну сторону, а голову — в другую.
Fortran вычеркните из списка, пожалуйста, т.к. там нет сборщика мусора. Но для многих числодробительных операций он действительно подходит идеально, за исключением может быть деревьев и прочих структур, которые плохо ложатся на массивы (тот же SciPy представляет собой биндинги преимущественно именно к фортрановским библиотекам).
Слэши — да, а комментарии — нет:
php -r 'echo json_encode("<!--");'
"<!--"
1. Не будет работать document.write.
2. Не будет работать в комбинации с внешними скриптами вида <script>var params={...};</script><script src="process_params.js"></script>.
p.s. Вообще-то 11*10*365 = 40150 руб.
А почему бы не завести какой-нибудь Map<String,String> для такого дела? (не знаю, на каком языке этот код написан; сравнение строк по значению накладывает ряд ограничений, но вариантов все-равно больше одного).
Пришла в голову мысль, что bool может быть объявлен через typedef, а использовать #define запрещено coding style, используемым в компании. Но и тогда, наверное, можно было бы true и false через enum определить.
Тем не менее, в этом случае объявление функции подразумевает, что где-то выше по коду было
#define bool int
что в свою очередь, как правило, сопровождается
#define false 0
#define true 1

Поэтому было бы «элегантно» и возвращать true или false.
Возможно, когда-то давно, во времена EBCDIC и других альтернативных (не ASCII) кодировок, это и был тот самый «тупой», зато платформо-независимый код.
Обычно именно такой подход («лишняя пара скобочек») и используется, что-то вроде:
class Complicated {
private:
    int _x;

public:
    int x() const {
        std::cout << "x getter called" << std::endl;
        return _x;
    }

    int /*или void*/ x(const int v) {
        _x = v;
        std::cout << "x setter called" << std::endl;
        return _x;
    }
};

Получается элегантно и «посишечному» c.x( (c.x() * c.x()) - 2 * c.x( c.x() / (4 + c.x()) ) ) (учитывая, что приведенный пример использования относится к категории особых извращений, и обычно сеттер возвращает void, чтобы потом не было мучительно больно при разгребании такого кода).
И, кстати, доказывается это очень просто, на основе формулы an-bn=(a-b)(an-1+an-2b+...+abn-2+bn-1), откуда следует, что 2qs-1 должно делиться на 2q-1 и 2s-1. Поэтому при любом составном p=qs число 2p-1 тоже будет составным.
Да, если он при этом еще умудрится доказать, что 277232918-1 простое (и не делится, например, на 3, как любое число вида 4p-1).
У меня на байт больше, так как вместо
sbc a,a
inc a
используется
ld a,0
adc a,a
(в A вроде бы должен быть флаг переноса, а не его инверсия). Для сравнения, код через DAA выглядит так:
    ld   b,3
    or   a
L1: adc  a,(hl)
    daa
    ld   (hl),a
    ld   a,0
    inc  hl ; или dec hl - смотря в каком порядке хранить
    djnz L1

Может можно как-то еще соптимизировать, но я в последний раз что-то осмысленное под Spectrum писал в 1999 году и уже мало что помню, к сожалению. Можно ускорить код, если выходить из цикла по jr nc, но это на 2 байта больше.
Вопрос же не только в удобстве вывода, но и в удобстве инкремента. Хотя, у меня в итоге получилось только 4 байта сэкономить (11 байт для BCD-кода, позволяющего добавлять 1-99 очков, и 15 байт для «обычного» кода, добавляющего 1-10 очков), так что возможно в данном случае такая оптимизация действительно не имеет смысла.
Можно хранить в виде binary-coded decimal и использовать в 2 раза меньше памяти (если, конечно, из процессора не выкинули команду DAA, которая есть в 8080 и Z80).
Разница есть если компилировать с ключами -O3 -mavx2. Или интелловским компилятором (icc).
А тут число ферзей (20) не равно размеру доски (22).
А для четного N?
Мы делали такую оптимизацию на ряде сайтов. Единственная проблема — пришлось переделать стилевые файлы, т.к. input[type=text] уже не срабатывает на таких элементах, пришлось дописывать input:not([type]). Ну и, если у кого-то input[type=text] прямо или косвенно фигурирует в javascript, то там тоже, возможно, придется модифицировать код.

Информация

В рейтинге
Не участвует
Откуда
Yerevan, Yerevan, Армения
Дата рождения
Зарегистрирован
Активность