Обфускация кода.
Можно ли правилами КодФорса?
Думаю, что нельзя, но в правилах (а их вообще я толком не нашел, нет нужного так всем FAQ) это не отмечено.
А в новом формате КодФорса, обфускация может спасти от взломов.
№ | Пользователь | Рейтинг |
---|---|---|
1 | tourist | 3985 |
2 | orzdevinwang | 3844 |
3 | jqdai0815 | 3682 |
4 | jiangly | 3618 |
5 | Benq | 3529 |
6 | ksun48 | 3489 |
7 | Radewoosh | 3483 |
8 | Kevin114514 | 3443 |
9 | ecnerwala | 3392 |
9 | Um_nik | 3392 |
Страны | Города | Организации | Всё → |
№ | Пользователь | Вклад |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
2 | atcoder_official | 163 |
4 | maomao90 | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 155 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
10 | djm03178 | 152 |
Название |
---|
Ну на реальном контесте: да, жалко 100 баллов. Пусть лучше на систестах упадет.
Правда лучший вариант, если жаль это написать без ошибок.
Правда лучший вариант, если жаль это написать без ошибок.
const int O = 1;
const int l = 0;
дальше где-то в начале мейна
if( blabla ) return l;
чувак открывает и думает - вот это нишутя, зачем он единицу возвращает надо же ноль, и как бы дальше печаль
Там всего лишь один дефайн.
У меня встречный вопрос: в чём смысл таких дефайнов? Они более выразительны? Их быстрее набирать? Один раз запомнив, их легче читать? А может, наоборот, это чтобы на челлендже вас другие читать не стали?
Если стандартные средства Си (без дефайнов) так уж неудобны — возможно, вам больше подойдёт другой цельный язык, более понятный, интуитивный и богатый, чем костыли к Си, которые у всех получаются разными?
Это точно. :)
> Поскольку оно надёжно обфусцировано дефайном...
Цель усложнения кода не преследую.
> У меня встречный вопрос: в чём смысл таких дефайнов?
Лично для меня в скорости. Впрочем сейчас ещё не поздно переучиться быстро писать обычный for. :-)
Gassa, спасибо за конструктивную критику.
> Цель усложнения кода не преследую.
Дык, оно само так получается. В данном случае будет так:
a.cpp:12: warning: comparison between signed and unsigned integer expressions
Смотришь на 12 строку, а там нет оператора сравнения. Нужно найти (4 строка) и прочитать (увидеть знак <) дефайн, чтобы понять. И не просто прочитать 4-ю строку, а подставить глазами вместо b то, что указано в 12 строке. На это тратится время и внимание.
У нас в команде принято писать
#define forn(i, n) for(int i = 0; i < int(n); ++i)
При компиляции ничего не дает. Главное достоинство в том, что переменная i пишеться только один раз и это спасает от ошибок типа
for(int j = 0; j < n; ++i)
В олимпиадах полезно. А в больших проектах - нельзя
Спасибо.
Нашел я этот пост. Если память мне не изменяет, это последнее упоминание prewritten'a на Codeforces. При этом ответа на вопрос я там не увидел - только предложения.
Ок. Я прочитал все комментарии и у меня остался один вопрос.
А что такое обфускация?
Создание умышленно непонятного кода?
А можно примеры?
Да.
Нагуглил вот такой пример: ссылка. Поржал от души. :D
Дело было лет 7 назад, в одном из 1XX SRM, где один товарищ написал код вроде такого:
Ему ешё почему-то long long не нравится... А вообще, конечно, красотища... :)
http://ideone.com/gzXVd
Сейчас правда ещё пополняется. :-)
Сейчас потихоньку разные вопросы собираются как раз в ту тему, которую мы указали.
Всему своё время.