Блог пользователя Wandoka

Автор Wandoka, история, 6 дней назад, перевод, По-русски

В этом блоге я сделал тест, который поможет вам определить, оптимален ли ваш сетап или нет. Ниже я напишу список критериев, по которым я буду его оценивать и разбаловку. И в конце вы сможете узнать, к какой "группе людей" вы относитесь, прямо как в тестиках на персонажа из аниме в Вконтакте.

Я сюда включил практически всё, что мне пришло в голову, если я что-то забыл, предложите в комментариях. Но добавлять вещи как У меня есть интернет и На моей клавиатуре есть большая часть клавиш я не буду :)

Это несерьёзный блог, но если вы новичок, вы, может быть, найдёте для себя что-то новое. Но это всё равно никак не поможет вам поднять рейтинг, для этого нужно решать задачи.

Вы можете компилировать код перед посылкой

  • $$$0$$$ баллов: Я не знаю, как компилировать код самостоятельно, и просто отправляю его на проверку
  • $$$10$$$ баллов: Я умею запускать код до отправки

Я видел много школьников, которые отправляют посылки никогда не запуская. Даже в институте такие встречались. На последнем див 4 соревновании [73 страницы Compilation Error] в задаче А (https://mirror.codeforces.com/contest/2009/status/page/1?order=BY_JUDGED_DESC) Кажется, таких людей даже больше, чем я ожидал)

Если вы не умеете это делать, вам нужно этому научиться. Даже турист проверяет свои решения на сэмплах, иногда даже в простых задачах

Ваша среда работает стабильно и без лагов

  • $$$0$$$ баллов: Моя среда постоянно падает и зависает
  • $$$2$$$ балла: Моя среда иногда глючит и даже иногда падает.
  • $$$4$$$ балла: Моя среда работает отлично и никогда не глючит

Когда я в школьные годы участвовал в олимпиадах, я постоянно мучался с предложенным компьютером. Он зависал, крашился, несколько раз мне даже давали поменять компьютер. Но я тогда ничего не знал и зачем-то пользовался вижлой на слабых машинах. Это очень неудобно и тратит много времени

Вы можете запускать свой код без интернета

  • $$$0$$$ баллов: Я пользуюсь онлайн редактором и при падении интернета не могу запускать свой код
  • $$$2$$$ балла: Всё установлено на моём компьютере, и отсутствие интернета никак не повлияет на то, могу ли я запускать свой код

Существуют такие онлайн компиляторы, которыми я совсем не рекомендую пользоваться. Зависеть от посторонних сайтов или от интернет провайдера — странная проблема, её лучше избегать

Вам может быть полезна подсветка синтаксиса, и вы ей пользуетесь

  • $$$0$$$ баллов: Я не использую подсветку синтаксиса, но если бы я знал как её включить, я бы пользовался
  • $$$2$$$ балла: Я использую подсветку синтаксиса
  • $$$2$$$ балла: Я не использую подсветку синтаксиса, хотя знаю как её включить.

Если вы дальтоник, или вы, как мой батя, просто привыкли писать синими буквами на синем фоне, то подсветка кода разными цветами должна вам помочь, это облегчает его чтение.

Вы можете проверить, сколько секунд работала ваша программа

  • $$$0$$$ баллов: Я не могу проверить, сколько секунд работала моя программа
  • $$$1$$$ балл: Я могу проверить, сколько секунд работала моя программа, и мне для этого не нужно писать ничего нового в коде

Полагаться на то, что если на вашем компьютере работает решение < 1 секунды, то на проверяющих серверах произойдёт то же самое — нельзя. Но иметь возможность сравнить, быстрее ли работает ваше решение или нет после какого-нибудь фикса — бывает очень полезно.

Вы можете проверить, сколько памяти потребила ваша программа

  • $$$0$$$ баллов: Я не могу проверить, сколько мегабайт использовала моя программа
  • $$$1$$$ балл: Я легко могу проверить, сколько мегабайт использовала моя программа

Иногда сложно точно сказать, сколько памяти потребляет ваша программа на макс тесте, и бывает удобно запустить её самому и проверить это, а не тратить лишнюю одну посылку

Вам подсвечиваются ошибки во время написания кода (другими словами, вы используете Language Server)

  • $$$0$$$ баллов: Когда я допускаю ошибку в синтаксисе, я это вижу только после компиляции/запуска программы
  • $$$3$$$ балла: Когда я допускаю описку в коде, то это место подсвечивается, чтобы я сразу мог это исправить.

Если у вас не включено подсвечивание ошибок на ходу, то тогда вам нужно перезапускать код несколько раз, чтобы исправить такие ошибки как vctor<int> A;. Это тратит лишнее время

Ваш язык программирования легко решает все те задачи, до которых вы доходите в контесте

  • $$$0$$$ баллов: Случалось, что я не смог решить задачи, и это произошло исключительно из-за языка программирования, который я выбрал
  • $$$3$$$ балла: Мой язык программирования никогда не был причиной моего неуспеха

У некоторых задач слишком жёсткий тайм лимит, чтобы заливать её на медленных языках. Иногда это всё-таки можно сделать, но нужно приложить дополнительные усилия. Я не буду называть какие же языки нужно относить к "проблемным" — у меня нет такой компетенции, но если вы когда-нибудь сталкивались с похожими проблемами, вероятно, вы неоптимальны.

Вы можете быстро копировать к себе готовые алгоритмы/структуры данных

  • $$$0$$$ баллов: Я никогда не копирую код и пишу всё руками / Я постоянно копирую код, который нахожу в интернете
  • $$$2$$$ балла: У меня есть своя библиотека с алгоритмами/структурами данных, если мне что-то нужно, я ищу нужный алгоритм в ней и копирую его себе в код.
  • $$$3$$$ балла: У меня есть своя библиотека и я могу горячими клавишами (сниппетами?) легко вставлять из неё в мой код, не покидая моего текстового редактора

Писать дерево отрезков руками 3 раза за контест — точно плохая идея. Скопировать его даже 1 раз всегда быстрее. Особенно если вы можете это сделать, не выходя из своего редактора. Часто приходится в алгоритмах что-то поменять, поэтому лучше пользоваться своей библиотекой, чтобы на 100% понимать, как всё работает, и если что быстро менять.

Вам не нужно копировать и вставлять тест каждый раз при запуске программы

  • $$$0$$$ баллов: Каждый раз, когда я запускаю мой код, мне приходится скопировать тест из задачи и вставить его
  • $$$2$$$ балла: Мой сетап позволяет запускать один и тот же тест несколько раз, не копируя его каждый раз.
  • $$$3$$$ балла: Я могу вставить несколько тестов сразу, и по нажатию 1 кнопки запускать моё решение на всех из них

Копировать тест каждый раз при запуске программы — тратит очень много времени. Не стоит выполнять лишнюю работу. Также не стоит забывать, что иногда удобно иметь возможность вводить тест по частям, например в интерактивных задачах.

У вас удобное сообщения о ворнингах/ошибках

  • $$$0$$$ баллов: Ворнинги/ошибки, которые я вижу после компиляции, мне не понятны и никогда мне не помогают
  • $$$1$$$ балл: Ворнинги/ошибки, которые я вижу, мне иногда помогают, но я знаю что они могут быть лучше
  • $$$2$$$ балла: Ворнинги/ошибки, которые я вижу, мне всегда помогают понять, что конкретно не так с моим кодом

Я использую C++ и после того, как я настроил флаги компиляции, стало намного удобней. Раньше сообщения мне совсем не помогали, а теперь я всегда смотрю на окошко ошибок. Я не смог настроить по-нормальному санитайзеры, так что знаю, что можно сделать ещё удобней. Если вам интересны такие вещи, советую почитать этот блог.

Использование авто-парсера контестов

  • $$$0$$$ баллов: Мне приходится копировать тесты из задач руками
  • $$$1$$$ балл: Я использую парсеры контестов, которые автоматически копируют тесты с контеста

Есть удобные тулы которые позволяют копировать тесты из контестов, очень удобно.

Ваш код легко прочитать, и как следствие легче взломать

  • $$$0$$$ баллов: У меня большой темплейт (>50 строк), который делает мой код непонятным
  • $$$1$$$ балл: У меня нет темплейта / он <= 50 строчек / он > 50 строчек, но я уверен, что он не мешает читаемости кода.

Из-за того, что на кодфосес всё ещё есть взломы, лучше делать код понятнее. Так как всегда лучше, если вас взломают на контесте и вы исправите ошибку, чем если вы упадёте на системных тестах. (Ну, кроме анти-хэш тестов и прочего)

У вас есть возможность запустить дебаггер (так, чтобы вам было удобно им пользоваться).

  • $$$0$$$ баллов: У меня нет возможности запустить дебаггер / есть возможность, но им очень неудобно пользоваться
  • $$$1$$$ балл: Если я захочу, я могу запустить удобный дебаггер, просто предпочитаю им никогда не пользоваться
  • $$$1$$$ балл: Если я захочу, я могу запустить удобный дебаггер, и пользуюсь этим

Даже если вы не используете дебаггер, иметь возможность запустить его — точно плюс. Принтить в консольку не всегда быстрее.

Использование функций для принта в консоль для дебага

  • $$$0$$$ баллов: Я использую стандартный cout или print для дебага.
  • $$$1$$$ балл: Я использую продвинутые способы принтов для дебага, например использую макросы, чтобы выводить название переменных вместе с их значением, могу легко вывести содержимое массива одной строкой.
  • $$$3$$$ балла: У меня есть большая библиотека для дебага, с помощью которой я даже могу выводить в удобном формате графы и структуры данных

У вас настроен удобный способ для стресс-тестирования

  • $$$0$$$ баллов: Я не использую стресс тестирование и у меня нет сетапа, чтобы это делать.
  • $$$2$$$ балла: Мой шаблон сделан так, чтобы я мог стресс тестировать свои решения
  • $$$3$$$ балла: У меня есть скрипт, который позволяет мне стресс тестировать мои решения.

Если вы не слышали про стресс тестирование, то вы получаете 0 очков за этот пункт, но также вам стоит посмотреть это крутое видео, которое хорошо про это рассказывает.

Вы используете vim motions/ или другие продвинутые горячие клавиши для редактирования текста.

  • $$$0$$$ баллов: Я не использую vim motions или другие похожие продвинутые горячие клавиши для редактирования текста
  • $$$2$$$ балла: Я использую vim motions или другие похожие продвинутые горячие клавиши для редактирования текста.

Выделять тексты мышкой — точно не оптимально. Если вы убираете постоянно руки с клавиатуры, или вы перемещаетесь по тексту стрелочками, знайте, что есть способ лучше, vim motions очень вас ускорит.

WPM при печатаньи (Слов в минуту).

  • $$$0$$$ баллов: У меня < 30 WPM
  • $$$1$$$ балл: У меня >= 30 WPM
  • $$$2$$$ балла: У меня >= 100 WPM

Если вы не знаете свою скорость, рекомендую затестить её тут. Я понимаю, что скорость печатанья это не совсем "сетап", но, мне кажется, это достаточно относится к делу, чтобы включить в блог.

Вообще я думаю, что скорость печатанья почти не влияет на результат, за исключением крайних случаев. Если вы печатаете уж слишком медленно, это может вам мешать. Также если вы очень очень быстрые, то тогда вы можете заработать много рейтинга в speedforces контестах.

Использование нескольких файлов для кода

  • $$$0$$$ баллов: Я использую 1 файл, там я пишу все мои решения. Если мне нужно писать 2 решения параллельно, я сохраняю одно из них в блокнотике.
  • $$$1$$$ балл: Я могу писать код в нескольких окнах параллельно.

Часто бывает, когда не дописав текущую задачу, вы начнёте писать другую. Если для этого вам нужно копировать куда-то ваш код, то тогда вы тратите лишнее время.

Использование класса для модульной арифметики

  • $$$0$$$ баллов: Я не использую специальных классов для модульной арифметики и мой код выглядит примерно так d = ((a+b)%mod - c + mod)%mod * e % mod
  • $$$1$$$ балл: Я использую специальный класс для модульной арифметики и мой код выглядит примерно так d = (a+b-c)*e

Сравнение результатов работы тестов и правильных ответов

  • $$$0$$$ баллов: Когда я запускаю тесты, я вручную проверяю, совпадают ли они с ответами или нет .
  • $$$1$$$ балл: Когда результат теста не совпадает с ожидаемым, в моём интерфейсе это подсвечивается

Когда в самплах большие тесты, сравнивать их вручную с правильными ответами похоже на игру "найди 5 отличий на картинке". Лучше автоматизировать этот процесс.

Считаем баллы

Теперь сложите все очки, которые вы получили, и найдите себя в табличке ниже, чтобы узнать какой же вы спортивный программист:

  • 47-50) Либо у вас $$$\color{orange}{2300}+$$$ рейтинга и вы используете крутой удобный сетап, либо вы ~ $$$\color{green}{1200}$$$ и тратите слишком много времени на оптимизирование вашей среды, когда на самом деле вам просто нужно решать задачи
  • 36-46) У вас неплохой сетап, бабушки называют вас "хакером".
  • 20-35) В вашем сетапе есть проблемы, либо вы слишком близко к сердцу восприняли фразу "чтобы решать задачи, нужно просто решать задачи", либо вы панк $$$\color{black}{L}\color{red}{GM}$$$, которому без разницы, что использовать, чтобы выиграть контест.
  • 13-19) Вы олимпиадный математик, и вы сидите на кодфорсес только потому, что математические олимпиады намного скучнее в онлайн формате.
  • 0-12) Вы должны быть счастливее, чем остальные группы в этом списке, так как у вас реально есть способ повысить свой рейтинг, не решая задачи по программированию, потому что ваш сетап сравним с написанием контеста с кнопочного Нокиа.

Кстати я веду занятия по программированию, $$${1900}$$$ руб в час за индивидуальные, $$${600}$$$ рублей за групповые занятия (группы из 3х человек), бесплатное первое занятие. Напишите мне на Codeforces, если заинтересованы.

  • Проголосовать: нравится
  • +162
  • Проголосовать: не нравится

»
41 час назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

I have 36 points, I use the CP editor

»
41 час назад, # |
  Проголосовать: нравится +30 Проголосовать: не нравится

Got 39 pts using Neovim + LuaSnip + several LSP-related plugins. Vim motion is really useful (and cool), I highly recommend it if you have not tried it before!

»
40 часов назад, # |
  Проголосовать: нравится +29 Проголосовать: не нравится

I got 37!

A lot of zero points are actually done intentionally, because I'm practicing for online OI contests, where you should code everything from scratch, so a lot of options like having ready libraries or class for modular operation are just 0 points.

»
39 часов назад, # |
  Проголосовать: нравится +74 Проголосовать: не нравится

27 points....

»
39 часов назад, # |
  Проголосовать: нравится +19 Проголосовать: не нравится

Clion solves all problems!

»
37 часов назад, # |
  Проголосовать: нравится +19 Проголосовать: не нравится

32 points here

»
37 часов назад, # |
  Проголосовать: нравится +32 Проголосовать: не нравится

I got 28 points.

»
37 часов назад, # |
  Проголосовать: нравится +22 Проголосовать: не нравится

25 points using default codeblocks

»
37 часов назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

Got 32

»
36 часов назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I got 29

»
36 часов назад, # |
  Проголосовать: нравится +90 Проголосовать: не нравится

31 points.

A lot of advice here is actually bad for people practicing for onsite competitions.

»
36 часов назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится

You are able to see how many seconds your program took to run

This section probably has a mistake, since you get 1 point if you don't see how much time it took to run

  • »
    »
    36 часов назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Woops, thank you, fixed the mistake.

    I wonder if I should swap the like buttons. I am not sure which one of them people clicked, the indented one with wrong amount of points, or the wrong one with the correct amount of points)

  • »
    »
    27 часов назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    After the fix I personally got 45. Have room for improvement :)

»
36 часов назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

i got 52 points

»
36 часов назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

use CP Editor to get 19pts 🤣

»
36 часов назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

38

»
35 часов назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I received 19 points! I think a better setup would not change much about my performance which is mostly bottlenecked by a problem solving speed/skill issue.

»
34 часа назад, # |
  Проголосовать: нравится +13 Проголосовать: не нравится

33 points.

CPEditor + Almost no template + Bad debugging environment

Almost no template: I just remember a random problem(and its exact ID) then open the online judge for my code.

Bad debugging environment: in my opinion the common "print()" command is enough because what I want is just one or two critical value, it is easy to read the log without extra note.

»
34 часа назад, # |
Rev. 3   Проголосовать: нравится +9 Проголосовать: не нравится

25 points

Distribution
»
33 часа назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

40 points with vscode and cph :)

  • »
    »
    32 часа назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    what's cph?

    • »
      »
      »
      32 часа назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Competitive Programming Helper. A powerful extension for vscode. It can automatically download test cases and run and judge problems quickly. And you can even submit your code to codeforces just with one click on "submit" button(if codeforces server didn't crash)

»
32 часа назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

28 points

»
32 часа назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

25 points using an online compiler

»
30 часов назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

27 points

»
30 часов назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

43 with nvim + Competitest.nvim + having my local library with oj-bundle instead of using snippets

»
28 часов назад, # |
  Проголосовать: нравится -10 Проголосовать: не нравится

Using debugger 1 point!? It should be at least 5

  • »
    »
    28 часов назад, # ^ |
    Rev. 2   Проголосовать: нравится +7 Проголосовать: не нравится

    print works very well :)

    • »
      »
      »
      27 часов назад, # ^ |
        Проголосовать: нравится +23 Проголосовать: не нравится

      It absolutely doesn't compared to gdb, which literally tells you the line with the RTE, while with prints you can often not even have an idea what kind of error may be happening in your code.

      I remember I lost gold on IOI cause I wasn't able to debug my simple bruteforce solution within half an hour. After the competition my leader came to my workstation, ran the gdb and showed me the line with the error and that took like 15 seconds. Starting to use gdb might have been the single biggest improvement ever to my performances (ok, maybe the second one, beside #define int long long :))

      • »
        »
        »
        »
        24 часа назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        It absolutely doesn't compared to gdb, which literally tells you the line with the RTE

        python works very well

      • »
        »
        »
        »
        22 часа назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        For some RTE I prefer "-fsanitize=undefined"(linux only), which also tell you not only the line with RTE but also the type of error(out of bounds, null pointer, integer overflow).

        • »
          »
          »
          »
          »
          17 часов назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          Yes, it's great too! I always have it and -fsanitize=address and -DGLIBCXX_DEBUG (it whatever it's called xd) as well. But I think gdb still gives you more information and is still very useful

»
26 часов назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится

I don't use a special class for modulo. My code looks like this: d = mul(sub(add(a,b), c), e)

»
26 часов назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

44 using cpeditor

»
26 часов назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I got 28 with ideone.com. The main challenge is solving/debugging interactive problems without any local testing.

»
24 часа назад, # |
Rev. 2   Проголосовать: нравится -16 Проголосовать: не нравится

How strange, right?

Whenever there be cheaters: kinds of this comment exist: "focus not on them yet persist and improve." And we do downvote those.

No we have this blog: stating: "you are a bit too hardcore about "to be better at solving problems I have to solve problems."" I did math. I calculated sum of points for the majority vote. It leads to 29 points. We notice it falls under this statement. And we do upvote this.

So why are we then saying: "merely you are functioning not optmially, you should try to improve:" however when it be cheaters (important issue in community), we downvote, when it be unhelpful survey (for just but entertainment purposes) we upvote?

  • »
    »
    4 часа назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    I'm not sure whether I understand what you're trying to say correctly, but I think the community is rather reasonable.

    As Mike said, entertaining content (like this one) can have a place on codeforces. I consider this one pretty interesting and helpful since it includes many tips regarding setup for beginners (although it might not be as good for onsite contests).

    On the other hand, some people who talk about cheaters tend to blame Mike and other admins for not doing anything, when it's just that the plagiarism check hadn't run for that round yet.

    If what you wanted to know is why those comments that tell one to focus on improving themselves rather than on cheating are downvoted, it's probably because these comments are considered more or less "inconsiderate" in the context. What's wrong with telling people they should practice more to obtain better results? The point is that these comments in cheating-related blogs make people feel what they mean is "it's your own skill issue, I don't care."

»
23 часа назад, # |
Rev. 4   Проголосовать: нравится +8 Проголосовать: не нравится

Nice post; there are a lot of things in here that I think are actually pretty valuable for beginners to fix. I'm somewhere around 44 points, +/- a bit depending on how generous you are. I'll share a few thoughts/suggestions for those working on their setups since I've enjoyed optimizing my setup over the years. If anyone wants to learn more about my setup, see here and here.

One big-picture note is that if you're on Windows, I think installing WSL is the easiest way to get a lot of these setup optimizations. In general, I find installing program tools much easier on the Linux terminal than on Windows; I'm a huge fan of the Windows/WSL setup because most of the programming tools I use for CP (e.g. Vim, g++, etc) feel jankier/more annoying to set up on Windows, while most other things I use feel jankier/more annoying to set up on Linux.

You can compile and run your code.

Agree with the OP that I've seen a lot of people not be able to do this. Seems pretty important...

If I were writing this survey, I would have added extra points for being able to compile quickly. There are some pitfalls that can cause compilation to be very slow (e.g. excessive debugging flags, iirc whether you use precompiled headers may contribute, etc).

Your text editor does not lag / crash

Editor latency is the primary reason I originally switched away from CLion. I'm pretty latency-sensitive and CLion felt unresponsive to me. Vim, Geany, and Sublime Text are all reasonable options I've tried that feel better in this respect.

You can compile and run your code with no internet

I think that using online compilers is a cause of a lot of the other issues discussed in this post, but not a symptom itself. I would be equally happy with my setup if I could only use it while connected to the internet; the problem is that most actual online compilers are far less smooth, easy to use, etc.

You can benefit from syntax highlighting and you use it.

Absolutely zero syntax highlighting feels a little crazy to me, but you do you.

You are able to see how many seconds your program took to run

I think most times, displaying time is a waste of interface space--I don't really care whether my code took 5ms or 10ms on sample test 1. I do think being able to time your code when you run it on large tests is important, and I use the built-in Linux time command for that.

You can see how much memory your program uses.

I gave myself -1 points here, I think there's a way to do this but I haven't learned it...

On a semi-related note, I do think there should be points for having a high/unlimited stack size limit. In most setups, the default behavior is for C++ to crash when you allocate a large data structure on the stack. This makes sense in real-world applications, but in competitive programming it's often useful to be able to define large variables globally (also, adjusting your overall memory limit is mandatory in Hacker Cup).

You can see syntax mistakes in your code without running it (in other words, you are using a Language Server)

-3 points here. I honestly don't think this is that important once you have some experience with your programming language; at most it would save me a little time parsing C++ error messages? Any of the language servers I've checked out seem like they'd be annoying to configure in order to avoid warning me about any style issues/things I generally don't care about.

You are using a programming language, that can solve all of the problems in the contest you attempt

Back in high school, I spent a lot of energy trying to convince people that using C++ wasn't actually that big of an advantage. I gave up in around 2018, but certain people are still making other languages work :)

You have a fast way to copy and paste algorithms/data structures

This is easy with Vim: I store my templates in a folder, I symlinked it to ~/cpl (CP library), and now I do :r ~/cpl/FILENAME.cpp to copy the file at my cursor. This is easy to remember and I don't have to set up snippets individually every time I add a template.

You don't have to copy and paste your tests every time you run your program.

I wrote a custom tool for this--there are a lot of similar things out there, but none that were organized exactly how I wanted. I haven't released it publicly since the code is poorly written and contains a lot of hacks that only work on my PC, but if you want to learn more see the second video I linked.

You have good warnings/error messages.

I gave myself -1 here; it's close, but there's some undefined behavior my compiler doesn't catch. I think it's worth it to speed up compilation by several seconds, though.

Auto-parcing contests to copy tests.

This is done by my CLI.

Your code is readable and hackable.

I'll give myself the point here; my template is a bit over fifty lines but I think the resulting code is readable.

While I agree that some templates can go overboard, I think at the very least for loop templates (i.e. FOR(i, a, b) instead of for (int i = a; i < b; i++)) are helpful. Before I had my template, I often wrote patterns like for (int i = a; i < b; i++) for (int j = c; j < d; i++), and the resulting errors were a huge pain to debug.

You can run a debugger (in a form that is easy to use).

-1 point here. I think the CLion debugger is generally helpful (sadly, the editor is otherwise missing a lot of features that are important to me), but gdb is a slog to use imo and printline debugging is almost always faster for competitive programming use cases.

You have a good way to print() to debug

Giving myself the three points here, though I don't think the way I output graphs is necessarily optimal (open to hearing others' suggestions on this!). My debugging setup does output STL data structures in a way that makes sense, though. It'd be interesting to try to add functionality to print out some of my library data structures (e.g. segtrees).

You have a stress testing setup.

I think that aside from being able to compile, stress testing is the single most important thing on this list, and I think anyone at an intermediate level (cyan/blue-ish) or above stands to gain tremendously from a good stress testing script. I estimate that my stress-testing setup is worth on the order of 200-300 rating for me, and it also makes CP much more fun not having to spend a huge amount of time staring at my code while debugging.

I like that you awarded extra points for using a stress testing command line script, as I think this is much faster in-contest than using a code template.

Stress testing is one of the main draws of WSL for me; my Linux stress testing script is on the order of 10x faster than my Windows stress testing script.

You are using vim motions/ other advanced text editor key bindings.

I use Vim, but I don't think not using it really slows you down that much.

WPM while typing.

160wpm on Monkeytype, probably more like 120-130 during everyday use.

You can easily use multiple files to code

This one is pretty important; with a lot of editors (mostly ones that try to organize your code into projects), the default setup is to code in one file and then you have to move all the code you aren't actively working on elsewhere. This is kind of a pain, and I think it's a good reason to prefer text editors over fancy IDEs (unless you've configured your fancy IDE to avoid these issues).

You are using a class for modular operations

This is more valuable than I expected it to be; it makes code a lot more readable and it's nice not having to worry about missing MODs when debugging.

You have a diff tool to compare the results of the tests

My CLI handles this. Linux diff is also helpful for really large cases.

»
23 часа назад, # |
  Проголосовать: нравится -12 Проголосовать: не нравится

Excuse me, I found this is offensive:

old ladies who have no clue about how computers work

»
21 час назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

The Hitchhiker's Guide to the Galaxy was correct. I got 42 points.

»
20 часов назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

31 balls using cp editor with only language server

»
19 часов назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

38 using CLion

»
18 часов назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

34 points with Dev C++

»
18 часов назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

44

»
18 часов назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

34 using sublime text

»
18 часов назад, # |
  Проголосовать: нравится +18 Проголосовать: не нравится

24 using codeblocks

»
17 часов назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

"I compile my code before submitting"

Does compiling on cf custom invocation count?

For most of my time all I use is cf custom invocation and its own code editor. No VS code, nothing fancy... I don't think that's a very optimal setup...

[PS this scores 14, so if you score below that then perhaps you should just switch to cf invocation]

[PPS the description is quite accurate, look at my username :)]

»
16 часов назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

i have 30, i use vim with my own custom setup

»
6 часов назад, # |
  Проголосовать: нравится +7 Проголосовать: не нравится

I am a punk master

Windows + MinGW + Far Manager without any configuration and prewritten code