Предположим, что вызов Codegolf не учитывает пробелы в длине вашей программы. Обманите эту систему, закодировав ваш сценарий в пробел, и сыграйте в скрипт, который декодирует и выполняет встроенный пробел.
пример
Мое решение JBernardo 's Meta Golf Challenge состояло в том, чтобы закодировать код Sage (или Python) в пустое пространство и запустить декодер.
s = ' '
for c in '<lots of whitespace>'.split(s):
s+=chr(len(c))
exec s
Кодировка состоит в том, чтобы взять сценарий, добавить новую строку, и для каждого символа c
в сценарии выводятся ord(c)
вкладки с пробелом. Добавление новой строки необходимо, так как я использую Python и запускаю скрипт s
с пробелом.
счет
Полное решение содержит описание используемой вами кодировки (если это сложно, предоставьте сценарий) и сценарий «декодировать и выполнить». Ваша оценка - количество непробельных символов в сценарии декодирования и выполнения.
Пробел (язык) запрещен
Более того, любой язык, который имеет полный набор операторов, которые используют только пробельные символы, не допускается: я приму наименьший ненулевой результат.
источник
.n/{,}%+~
они также будут работать.CPAN, 16
У CPAN есть все. Или, по крайней мере, только правильный модуль.
источник
Perl, 29
Внутри
s///
это вкладка, затем пробел. Кодировка - это ультраосновное кодирование с пробелами, начинающимися с табуляции.Попробуйте это в командной строке:
Редактировать: ну, лол, я не могу найти правильный способ скопировать и вставить сочетание табуляции / пробела. Поверьте, это работает дома :)Обновление: там, там, закодировано сtr
источник
\t
и мы будем верить, что это работает с\t
интерпретировать оболочку и фактически заставить эту чертову штуку работать наглядно. Делаем это за несколько часов.JavaScript
замещать
\t
на вкладку, чтобы получить количество размещенных символов.Стандартный (64 символа)
Функция стрелки (49 символов)
Программа кодирования для обоих
источник
(s)=>...
в стрелке функцию, чтобыs=>...
сохранить два байта" t " [ 1 ]
для обозначения "t")eval("".replace(/ +/g,s=>' []+!()'[s.length]))
Ябасич (88 знаков)
Используйте ту же программу кодирования, что и для моего решения C, но не удаляйте первый символ. Ваш оригинальный код должен быть в форме подпрограммы
a()
, например:источник
C (99 символов)
Проверено только с (и, возможно, работает только с) GCC.
Соответствующая программа-кодировщик (вручную удалить первый символ с его выхода):
источник
D (101 символ)
та же кодировка, что и в вопросе (нет необходимости в новой строке)
источник
Bash (только встроенные, 44 символа)
Соответствующий кодировщик скрипта:
источник
man
немного поднять это.К5, 12 байт
Execute (
.
) строка, сформированная из значений ascii (`c$
), заданных разницей между каждой парой (-':
) индексов, где (&
) вход является вкладкой (9=" "
).Ввод - это строка символов с табуляцией и без табуляции, а значения символов кодируются в количестве не табуляции (пробелов или строк новой строки) между каждой вкладкой. Пример кодера:
Выполните текущее соединение, начинающееся с пробела над (
" ",/
) x пробелами (x#" "
), соединенного табуляцией (,"\t"
), где X - это каждый из ({...}'
) один минус символьные значения входной строки (-1+
).В бою:
источник
Руби, 43
Очень просто, кодирование помещает x пробелов в строку, где x - это значение ascii символа, декодирование - обратное.
Следующий скрипт является просто унарным преобразователем в ASCII и работает, даже когда другие вещи, кроме пробелов, свободны:
Просто замените пустую строку на понравившуюся вам программу.
Вещь в более многоразовом формате:
источник