Ваша задача, если вы решите не отказываться от нее, - написать программу, которая будет «играть в гольф» с фрагментом заданного кода на выбранном вами языке.
Основные функциональные возможности:
- Удалить посторонние пробелы
- Удалить комментарии
Расширенные функции:
- Объединить декларации (
int x; int y; int z;
доint x, y, z;
) - Используйте более короткие вариации базовых структур управления (
while(1)
заменяется наfor(;;)
) - Переместить код (
i = 0; while(i < 10) { /* ... */ ++i; }
кfor(i = 0; i < 10; ++i) { /* ... */ }
) - Так далее
popularity-contest
metagolf
Матин Улхак
источник
источник
Ответы:
Питон с Питоном
Выполняет кучу вещей, включая переименование переменных, избавление от ненужных пробелов и комментариев, и помещает как можно больше в одну строку. Не всегда полностью работает с причудливым синтаксисом Python, и я буду продолжать обновляться с любыми исправлениями.
Код:
Испытано на старой фрактальной программе рисования у меня была ( 4672 до 1889 ):
Оригинал:
Golfed:
Запустите на себя (создав очень длинную квинну) (с 9951 по 5323 ):
источник
import*
вместоimport *
. Я предполагаю, что будет работать в Python 2 также?BrainFuck - 489 персонажей
Удаляет все неисполняемые символы. Уважает комментарии от # до конца строки.
Естественно пробежать через себя из этого источника:
источник
<>
которая ничего не делаетГольфист Brainfuck в Баш (v3)
Эта работа продолжается, я буду обновлять ее, если смогу.
Читает из файла (имя файла должно быть первым аргументом командной строки).
Пока все, что он делает, это
<>+-.,[]
<>
,><
,+-
,-+
>>>><<<<<
сокращается до<
Код
Как это работает
После удаления всех неисполняемых символов выполняется следующее. Счетчик попаданий установлен
-1
в начале - он подсчитывает, сколько операций в гольф было выполнено каждый раз, когда проходит внешний цикл.<>
,><
,+-
или-+
, добавьте 1 кhits
прилавку и вернуться к шагу 1.источник
HQ9 + гольфист в Баш (v3)
Я знаю, что HQ9 + бесполезен, но я мог бы также представить пятилинейный лайнер для него. Это читает от
стандартный вводфайл. Путь к файлу должен быть первым аргументом командной строки.особенности
HhQq9+
)+
(увеличивает число, но его невозможно напечатать)hq
в верхний регистр (не в гольф)Код
источник
/dev/stdin
в качестве первого аргумента :)Ява с Явой
Принимает имя файла в качестве аргумента командной строки и редактирует файл на месте.
while(true)
вfor(;;)
private
иfinal
Когда программа запускается сама по себе, ее размер уменьшается с 7792 до 4366.
источник
Perl, части 1 - 2
(удаляет комментарии и игнорирует
#
символы внутри двойных кавычек)(удаляет все пробелы после скобок и
=
знаков)Я не пытался в гольф этот код. Может быть, когда это будет сделано, это может сам гольф.
Пример ввода
Выход
Далее это устранит пробелы между символами и буквенно-цифровыми символами.
источник
Явский гольфист в Perl
WIP на данный момент, хотя он получает довольно хороший код прямо сейчас.
Особенности:
Код
источник