Використовуйте базове перетворення
Ця відповідь була на запитання, яке хотіло мистецтву ASCII, яке складалося з персонажів + |-
та нових рядків. Оскільки існує лише 5 можливих символів, їх можна розглядати як базове 5 число та перетворити на байти, упакувавши 3,45 символів на байт.
Експлуатуйте закономірності
Часто дані матимуть деякі закономірності, навіть якщо ці закономірності недостатньо сильні для використання конкретних інструментів, таких як дзеркальне відображення. Наприклад, у вищезазначеному питанні потрібний вихід мав нові рядки приблизно рівномірно розподілені протягом всього тесту, оскільки текст був приблизно прямокутним. Я скористався цим, щоб скоротити код, використовуючи функцію розбиття Pyth на n частин, а потім приєднання до нових рядків.
Знайте свої інструменти та виберіть правильний для роботи.
Найпотужніші та найефективніші інструменти для обробки тексту, які я знаю:
Двигуни Regex:, ///
Retina, Perl, у порядку компромісу потужності / стислість.
Використовуйте, якщо те, що ви хочете зробити, можна точно описати в замінах регулярних виразів, таких як ця відповідь
Неясні інструменти для обробки тексту: gema тощо (я впевнений, що є й інші, але вони занадто незрозумілі)
Використовуйте, якщо вони мають функцію, саме те, що вам потрібно, і нічого іншого не має. Як, наприклад, у цьому питанні , з рекурсивною відповідністю gema.
Загальні мови гольф-коду: CJam, Pyth тощо.
Використовуйте, якщо ви використовуєте якусь тонку складність, щоб жоден інший інструмент не зробив цю роботу або він просто зробить роботу коротше.
Спробуйте багато підходів
Це стосується кожного кодового питання про гольф, але особливо тут. Ви не дізнаєтесь, чи корисність регулярності, поки ви не спробуєте її. Можливо на кількох мовах.