Code-Bowling Challenge
Напишите программу или функцию, которая выдает одинаковый вывод, независимо от того, как вы переупорядочиваете исходный код. (Вывод не может быть ошибкой)
Оценка Панграм
Ваша оценка - это количество уникальных символов в вашем исходном коде.
Программа с исходным кодом
AJB
будет иметь оценку3
A, программа с исходным кодомAAJ
будет иметь оценку2
A Программа с исходным кодом111
будет иметь оценку:1
Это вариант кода для боулинга . Программа с самым высоким счетом выигрывает!
(Для вашего удобства здесь создан инструмент автоматического подсчета очков )
Правила вызова
Входные данные
Программа / функция может принимать входные данные, хотя это совершенно необязательно.Выходные данные
Эти выходные данные могут быть любыми , но они должны быть ненулевыми, ненулевыми, непустыми и не содержать ошибок. (Для этого вывод должен быть не менее 1 байта)- Перестановка
Независимо от того, как перекомпонован исходный код, вывод должен быть одинаковым.
Пример:
Программа:ABJ
выходыhello world
, как это делает программы: [AJB
,JAB
,JBA
и т.д.]
Это вариант кода для боулинга . Программа с наибольшим количеством символов выигрывает!
источник
0
вечно?)Ответы:
Lenguage, 1 112 064 баллов, если UTF-8
Моя программа состоит из всех возможных символов UTF-8. Он печатает «Hello world» и использует 1,75 * 1076 йоттабайт пространства.
(Чтобы сгенерировать программу, вам просто нужно сделать файл с 17498005810995570277424757300680353162371620393379153004301136096632219477184361459647073663110750484 символов, обеспечив, чтобы в файле содержался каждый возможный символ UTF-8)
источник
Много языков, 2 балла
Производит
0.0
как0.
или.0
. Требуется синтаксический разбор либеральных чисел, это нормально с десятичной точкой в начале или конце, принимая 0 за отсутствующую целую или десятичную часть.0000000.
даст тот же счет.Это также работает на следующих языках (в некоторых случаях с другим выводом, как указано):
ans = 0
)ans = 0
)0
)0
)0
)Я думаю, что для Python это единственный способ получить оценку выше 1, поскольку возможности могут быть исчерпаны.
[](){}
требует совпадения и потерпит неудачу, если первым будет заключительный,
может быть первым персонажем#
Помещен первый комментарий будет все , и производить не выход\
- неверное продолжение строки$
,!
,?
, И@
не может быть использован без других непригодных символовЭто оставляет буквы, цифры
_
,.
и котировки._
именами переменных, какой-либо перестановки всегда не существует.Листья цифры а
.
. Перестановка разных цифр дает другое число, если не все цифры0
. Так что я считаю нули и.
это единственный способ получить счет выше1
. Но я плохо знаю лексер Python, так что я мог что-то упустить.источник
CJam , оценка 15
Попробуйте онлайн!
Всегда печатает
0000
:0
просто толкает ноль.T
,U
,V
Являются переменными , которые предварительно инициализирован в ноль.L
,M
,O
,Q
,R
Являются переменными , которые предварительно инициализируется в пустой список, так что они не отображаются на выходе.[
и]
может или не может обернуть вещи в списке, но они не должны быть сопоставлены правильно, и вывод все равно будет распечатан для печати.q
читает входные данные, которые являются пустыми и, следовательно, не отображаются в выходных данных.источник
r
выполнив что-то похожее на строчнуюq
?MATL ,
356 балловИдея добавить пробел была взята из ответа Биджана .
Код или любая его перестановка выводит три из них, разделенных символами новой строки.
Попробуйте онлайн!
объяснение
l
по умолчанию помещает номер один в стек.1
делает то же самое.T
толчкиtrue
, которые отображаются как номер один.v
объединяет весь стек до столбца-вектора. Например,v
после тогоT
, как первые два числа будут объединены в столбец (а затем будет выдвинут следующий номер). Инициалv
будет производить пустой массив.В конце кода неявно отображается стек со следующими правилами:
Таким образом, любая перестановка входных символов производит
1
три раза в разных строках.источник
Removing any part of the source code however should cause that specific output to not be produced.
на момент публикации, я не хотел его добавлять, и он был удален. Может быть, это поможет вам увеличить счет, возможно, немногоЖеле , оценка
53101Использование только символов, которые являются частью кодовой страницы Jelly .
Jelly имеет неявный ввод
0
, и первая половина (вплоть до включительноạị«»
) приведенной выше строки кода состоит в основном из монадических (верхний регистр) и диадических (нижний регистр и символы) атомов, которые при задании нуля или списка, содержащего только один ноль ( или два таких входа в случае диад) возвращают ноль или список, содержащий только один ноль.Исключения:
Пробел: он игнорируется (даже если он находится в кодовой странице).
Стрелка
¶
разделяет ссылки (как и перевод строки - но это действительно тот же байт), но никакие другие байты не будут ссылаться на код перед ним в любом случае.скарабей,
¤
инструктирует парсер обрабатывать все, что осталось, начиная с nilad (или константы) как константу (и работает как первый атом).Доллар,
$
поручите парсеру рассматривать две ссылки на него как монаду (и, что удивительно, работает как первый атом)Yen,
¥
аналогично, инструктирует синтаксический анализатор обрабатывать две ссылки на него как на диаду.Рекомендованное,
®
изначально, возвращает значение реестра0
(его копирайтное право),©
разрывается при использовании в качестве самого первого атома, так как арность находится из арности ссылки слева, которая еще не установлена).Код из круглых скобок,
(
и так)
далее, в настоящее время являются неиспользуемыми кодовыми точками, все они анализируются, и каждая вызывает новую цепочку (во многом как новая строка, хотя они не имеют эффекта создания вызываемых ссылок, как новая строка, но это не проблема здесь, поскольку ничто не пытается сделать это).источник
TI-Basic (серия 83), 93 балла (99 на TI-84 Plus)
Все цифры, все однобайтовые переменные (включая θ и n , независимые переменные для полярного и последовательного построения графиков), константы π, е , и я , некоторые не совсем переменные (
Ans
,rand
иgetKey
), и 59 отличаются переменные окна (все те, которые гарантированно будут определены).Подразумеваемое умножение гарантирует, что результатом будет 0, если мы примем это в любом порядке. Если это выполняется на новом калькуляторе, все переменные будут 0; даже если нет,
getKey
будет 0, потому что нет времени нажимать клавишу до того, как программа вернет значение.На TI-84 Plus или выше, мы можем получить больше 6 очков, добавляя маркеры
getDate
,getTime
,startTmr
,getDtFmt
,getTmFmt
,isClockOn
. Результат теперь всегда будет{0 0 0}
потому чтоgetDate
иgetTime
возвращает списки длины 3, и подразумеваемое умножение распределяется по элементам.Я думаю, что это все возможные токены, которые можно использовать: любые фактические команды - это префикс, инфикс или постфикс (то есть они не будут работать в начале или конце программы), а любые другие переменные могут быть неопределенными (и вызывать ошибку, когда используемый).
источник
(неконкурентный) Brainf-ck, 63 байта
Ну, я не знаю, считается ли это обманом, но ...
Точка печатает текущий символ (0x00), а остальные символы ничего не делают. Технически это можно расширить до бесконечности, поэтому, пожалуйста, дайте мне знать, если это считается мошенничеством.
источник
Хаскелл, 3 очка
Независимо от того, как реорганизован этот код, он всегда возвращает функцию, которая увеличивает ввод. Примеры использования в repl:
источник
√ å ı ¥ ® Ï Ø ¿ , 128 234 (?) Очка
Я прибыл в 128 234 с помощью @DestructibleLemon. Эта программа использует все символы Unicode (128,237) , за исключением
o
,O
иł
. Как ни странно, две из них являются выходными командами.Конечно, ни один язык не может использовать все эти символы, верно? Ну, этот язык просто игнорирует команды, которые он не распознает. Проблема решена.
Этот язык по умолчанию выведет следующее:
которая не равна нулю, не равна нулю, не пуста и не содержит ошибок.
Примечание: если это нарушает какое-то неписанное правило, сообщите мне об этом в комментариях, и я изменю это. Если вы знаете мою оценку (при условии, что это разрешено), также оставляйте сообщения в комментариях.
источник
J, 3 байта
Символы 1, пробел и перевод строки всегда будут печатать 1.
источник
/// ,
12 баллаПопробуйте онлайн!
Я понятия не имею, как это сделать на любом другом языке, полном тьюринга. Конечно, есть HQ9, но это просто обманывает.
1 байт благодаря @Martin Ender.
источник
Точки , 1114111 символ (при использовании юникода).
<87 dots here> Every Unicode character except NUL and . here
Объяснение:
Таким образом, полученная двоичная строка
1010111
, которая преобразована в десятичную, равна 87, поэтому нам нужно 87 точек.Каждый другой символ является комментарием, поэтому мы используем каждый символ, кроме NUL, потому что Python3 прекращает чтение файла, и точку, потому что точки не являются комментариями.
источник
прелюдия , оценка 1 112 051
(Если рассматривать только ASCII для печати
[\t\n -~]
, оценка составляет 84. Если мы рассмотрим все кодовые точки Unicode , то оценка будет 1 112 051. )(затем добавьте все символы
[\u{7f}-\u{10ffff}]
после него.)Всегда печатать
0
.Prelude - это язык на основе параллельного стека, в котором стек предварительно заполнен бесконечными числами 0.
+
: Вставьте два значения (всегда 0), добавьте их (0) и вставьте в стек.-
: Сложить два значения (всегда 0), вычесть их (0) и вставить в стек.#
: Вывести значение и отбросить его.!
: Вытолкнуть значение и вывести его в виде числа (всегда 0) (спецификация говорит «символ», но интерпретатор говорит «число»; в любом случае выводится байт)0
: Толкает 0.^
,v
,V
: Выталкивает верхнее значение предыдущих / следующих параллельных программ ( «голоса»), но штабеля всех «голоса» заполнены 0, поэтому они всегда нажмите 0.Поэтому нам нужно избегать только 13 символов:
(
,)
: Непарная скобка вызовет ошибку1
-9
: Мы только хотим вывести 0.?
Мы не хотим ничего вводить.*
: Вызывает очень сложную проверку согласованности кода до и после строки, состоящей из одиночного*
. Поэтому нам нужно либо удалить новую строку, либо удалить*
. Эталонная реализация использует Python 2,.readline()
который может означать\r
или «новая строка»\n
. Так что лучше просто удалить*
.источник
Deadfish , оценка 86
Если это незаконно, то есть также
(оценка 1)
источник