Jump to content

Код гольфа

Код-гольф — это разновидность развлекательных по компьютерному программированию соревнований , в которых участники стремятся получить как можно более короткий исходный код , решающий определенную проблему. [1] [2] Соревнования и турниры по коду гольфа также могут быть названы в соответствии с используемым языком программирования (например, Perl Golf ).

Этимология

[ редактировать ]

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

Длина кратчайшей возможной программы, которая выдает заданный результат (на любом фиксированном языке программирования), известна как Колмогоровская сложность вывода, а ее математическое исследование восходит к работе Андрея Колмогорова в 1963 году. Однако код гольфа можно более общий, чем этот, поскольку он часто определяет общее преобразование ввода-вывода, которое должно быть выполнено, а не запрашивать один вывод без ввода.

Хотя термин «код-гольф», очевидно, впервые был использован в Perl в 1999 году , [3] и позже популяризировался благодаря использованию Perl для написания программы, выполняющей шифрование RSA , [4] Известно, что подобное неофициальное соревнование было популярно среди более ранних хакеров APL . Сложность агрессивной оптимизации размера программы сама по себе уже давно признана; например, в руководстве по кодированию для компьютера GIER компании Regnecentralen 1962 года отмечается, что «программирование с наименьшим количеством инструкций требует много времени», и не рекомендуется использовать его для практического программирования. [5] Сегодня этот термин расширился и охватывает множество языков, что даже привело к созданию специальных языков для игры в гольф.

Специальные языки для игры в гольф

[ редактировать ]

Несколько новых языков были созданы специально для игры в гольф. Примеры включают GolfScript, Flogscript, Stuck и Vyxal — полные по Тьюрингу языки, предоставляющие конструкции для краткого выражения идей в коде. Поскольку языки игры в гольф конкурируют за чрезвычайную краткость, их дизайн жертвует читабельностью, что важно для практической производственной среды, и поэтому они часто являются эзотерическими . Однако иногда язык создан для практических целей, но оказывается пригодным для игры в гольф.

Пример кода GolfScript для печати 1000 цифр числа Пи : [6]

;''
6666,-2%{2+.2/@*\/10.3??2*+}*
`1000<~\;

Веб-сайты по кодовому гольфу включают новые языки игры в гольф, созданные пользователями для победы в соревнованиях по кодовому гольфу. Другие популярные языки включают 05AB1E, Husk, Pyth, CJam и Jelly.

Виды кодового гольфа

[ редактировать ]

Некоторые вопросы по кодированию гольфа, например те, которые задаются на сайтах общего программирования, могут не требовать реализации на конкретном языке программирования . Однако это ограничивает стиль задач, которые могут ставить разработчики задач (например, ограничивая использование определенных функций языка). Кроме того, создание таких «открытых» вопросов привело к разработке специфических диалектов языка программирования для гольфа, таких как REBMU (диалект REBOL ). Как онлайн-соревнования, так и живые соревнования также могут включать ограничения по времени.

См. также

[ редактировать ]
  1. ^ Обмен стеками кода для гольфа. По поводу кода-гольфа . Проверено 21 декабря 2021 г.
  2. ^ «Введение в Code-golf | ASSIST Software Румыния» . Проверено 23 марта 2023 г.
  3. ^ Грег Бэкон (28 мая 1999 г.). «Re: Увеличение значения в срезе» . Группа новостей : comp.lang.perl.misc . Usenet:   [электронная почта защищена] . Проверено 12 июля 2011 г.
  4. ^ Назад, Адам. «RSA в 5 строках Perl» . Проверено 10 января 2011 г.
  5. ^ Андерсен, Кристиан; Грэм, Кристиан (1962). Учебник по кодированию для GIER (PDF) . Том. 1 (3-е изд.). Копенгаген: Regnecentralen. стр. 104 . Проверено 16 мая 2020 г.
  6. ^ «Примеры гольф-скриптов» . Проверено 23 марта 2023 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 7ab18a3b8d46de44225d188760668dd9__1714852680
URL1:https://arc.ask3.ru/arc/aa/7a/d9/7ab18a3b8d46de44225d188760668dd9.html
Заголовок, (Title) документа по адресу, URL1:
Code golf - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)