Обфускация кода.
Можно ли правилами КодФорса?
Думаю, что нельзя, но в правилах (а их вообще я толком не нашел, нет нужного так всем FAQ) это не отмечено.
А в новом формате КодФорса, обфускация может спасти от взломов.
| № | Пользователь | Рейтинг |
|---|---|---|
| 1 | Benq | 3792 |
| 2 | VivaciousAubergine | 3647 |
| 3 | Kevin114514 | 3603 |
| 4 | jiangly | 3583 |
| 5 | strapple | 3515 |
| 6 | tourist | 3470 |
| 7 | dXqwq | 3436 |
| 8 | Radewoosh | 3415 |
| 9 | Otomachi_Una | 3413 |
| 10 | Um_nik | 3376 |
| Страны | Города | Организации | Всё → |
| № | Пользователь | Вклад |
|---|---|---|
| 1 | Qingyu | 158 |
| 2 | adamant | 152 |
| 3 | Um_nik | 146 |
| 4 | Dominater069 | 144 |
| 5 | errorgorn | 141 |
| 6 | cry | 139 |
| 7 | Proof_by_QED | 136 |
| 8 | YuukiS | 135 |
| 9 | chromate00 | 134 |
| 9 | TheScrasse | 134 |
| Название |
|---|



Ну на реальном контесте: да, жалко 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, где один товарищ написал код вроде такого:
int foo() { if (var == l) { } //много кода } private int l = 0;Ему ешё почему-то long long не нравится... А вообще, конечно, красотища... :)
http://ideone.com/gzXVd
Сейчас правда ещё пополняется. :-)
Сейчас потихоньку разные вопросы собираются как раз в ту тему, которую мы указали.
Всему своё время.