Chat:Ru/2022-03-29

From CG community
Jump to navigation Jump to search

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