Chat:Ru/2022-03-29
tutubalin: Yotic о каком топе ты спрашиваешь?
tutubalin: есть вот такой раздел: https://www.codingame.com/multiplayer/codegolf
Chibikko: Как войти в топ 2% в кодгольфе? Может есть статейка с грязными приёмами сокращения кода в python, например? У меня весь код получается минимум в 2 раза больше чем топы в лидерборде.
Chibikko: И там только 4 задачи. Их на всех языках решать, чтоб рейтинг набить? Но я не хочу учить все языки.
tutubalin: есть много грязных приёмов.
tutubalin: финальный, который топы используют - это перевести весь свой код в Unicode (получатся китайские иероглифы), а затем раскодировать его и запускать через eval
Chibikko: но это только в некоторых языках работает. JS например.
tutubalin: в питоне тоже есть eval
tutubalin: и exec
tutubalin: https://www.programiz.com/python-programming/methods/built-in/exec
Chibikko: Воу. Сжалось с 165 до 128 символов используя utf16 для пробы. А какая кодировка лучше?
tutubalin: вот вроде utf16 и используют
Chibikko: итоговая конструкция вот такая у меня: exec(r"<unicode-source>".encode('utf16')[2:].decode('ascii'))
Chibikko: может можно ещё сократить? Если убрать .decode('ascii'), то появляется проблема со слэшем. Неявное преобразование в строку задваивает его: \ -> \\
tutubalin: попробуй вместо r"blablabl" использовать b"blablabl"
tutubalin: и тогда сразу можно decode("utf16")
tutubalin: а, не :) это в ту сторону :)
tutubalin: короче, ты когда в utf16 переводил - вот в этот момент у тебя двойные слеши появились. если правильно переведёшь, то необходимость в decode('ascii') пропадёт
Chibikko: нет, они появляются при неявном декодировании из массива байт в строку.
tutubalin: проверил - не появляются
tutubalin: exec(b"print('//\\\\') ".decode("utf16").encode("utf16")[2:])
Chibikko: да, действительно, если через br"<код>" кодировать, то нормально.
tutubalin: ещё нашёл: вместо utf16 можно писать U16
Chibikko: ага, спасибо. 109 символов уже!
tutubalin: а какая задачка?
Chibikko: эта была Unary
Chibikko: остальные тоже сократились неплохо, но всё-равно далеко до топов
tutubalin: да, у меня тоже далековато :)
tutubalin: значит надо как-то исходный улучшать
_co_cy_: я со стороны новичка смотрю мне до вас то долеко
_co_cy_: питон превращаем в такую кашу аха
tutubalin: у меня там исходный код 113. посмотрим, насколько ужмётся
tutubalin: 83 стало
Uljahn: _co_cy_: по питону тут мануал есть для новичков с базовыми трюками гольфинга https://www.codingame.com/blog/code-golf-python/
Uljahn: а для utf16-компрессии есть онлайн сервис: https://clemg.github.io/pythongolfer/
sqqwskk: :flag_ru::knife::bomb::flag_ua:
Uljahn: есть ещё трюк с использованием i=input;i(result) вместо print(result)
Chibikko: спасибо, любопытная статья
_co_cy_: ахах не портите мой мир
_co_cy_: вы мне такое ощущение 18+ контент показываете в программировании
Uljahn: да, тут что-то противоположное лучшим практикам :)
_co_cy_: но с вами так интересно. :D
Uljahn: но для расширения сознаяния и кругозора полезно
Uljahn: *сознания
tutubalin: я собираюсь как-нибудь статейку накатать
aangairbender: а модеры могут удалять сообщения?
Uljahn: в вебчате не могу, только в дискорде
Uljahn: поэтому вебчат скоро прикроют, наверное
Uljahn: к сожалению, средствами CG сложно отличить новичка, который хочет быстро получить ответ на вопрос, от тролля-спаммера, который зарегал очередной аккаунт, чтобы абузить чатик
Chibikko: вместо того чтобы закрывать чатик, добавили бы возможность удалять сообщения.
Uljahn: чат использует древний протокол xmpp, который не поддерживает удаление сообщений из коробки
Uljahn: а что-то своё велосипедить у админов времени и сил нет
Uljahn: раньше чатик вообще поверх irc работал :)
Uljahn: но тогда и популярность ресурса была не такая
Yotic: Сколько лет сайту, раньше не нашёл почему-то
mihei: как минимум 10 лет, судя по первому контесту
Uljahn: лет 8
Uljahn: раньше сайт был на другом движке
Uljahn: я в 2014-м зарегался, когда было всего 12к пользователей, интерфейс был ужасный, поковырялся немного и забил, а через год когда вернулся и увидел новый интерфейс - уже залип конкретно
Uljahn: этот сайт кстати регулярно упоминают во всяких обзорных статьях, в т.ч. на хабре, видимо плохо искал
Uljahn: а может надо было в англоязычном сегменте искать
Yotic: :flag_ru::knife::bomb::flag_uk:
Yotic: :flag_ru::knife::bomb::flag_ua:
Uljahn: /ban Yotic