В символы ASCII с десятичным кодом 33 до 126 являются:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Обратите внимание, что в большинстве шрифтов 25 из этих символов имеют «дыры»: ( можно сказать, род больше 0 )
#$%&04689@ABDOPQRabdegopq
Остальные 68 «не вскрытых» персонажей:
!"'()*+,-./12357:;<=>?CEFGHIJKLMNSTUVWXYZ[\]^_`cfhijklmnrstuvwxyz{|}~
Ваша задача - написать самую короткую из возможных программ, используя только символы без отверстий, которые выводят каждый из символов с отверстиями ровно один раз в любом порядке.
Поскольку пробел, табуляция и символы новой строки (перевод строки и / или возврат каретки) являются пустым пространством, они могут появиться в вашей программе или в ее выходных данных. Они по-прежнему рассчитывают на количество символов. Другие символы ASCII не могут использоваться (и, конечно, не символы ASCII).
Примечания
- Вам не нужно использовать все символы без отверстий или только один из них.
- Вывод не может содержать незаполненные символы.
- Язык Пробелы могут быть использованы.
- Вывод должен идти в стандартный вывод или может идти в файл. Там не должно быть никакого ввода.
Бонус: просто для удовольствия, попробуйте распечатать все символы без отверстий, используя символы с отверстиями. Я скептически отношусь к тому, что это можно сделать на существующем языке.
источник
main
.~
??Ответы:
Pyth ,
4335 символовПопробуй это здесь .
Печатает символы по порядку, за исключением того, что 9 находится в начале, разделены новой строкой.
Строка содержит все символы на 7 больше, чем нужно, за исключением того, что 9 станет @, поэтому он имеет специальный регистр. Алгоритм благодаря @Howard.
Объяснение:
источник
GolfScript,
3736 символовПопробуйте код здесь .
Строка содержит запрещенные символы, xor'ed с 25. К счастью, все символы сопоставлены с действительными.
источник
Brainfuck 119
источник
--
в начале ... Ты возвращаешься к 254 в начальном регистре?Бонус - DC, 179 символов
О, хорошо, еще один ограниченный набор символов, где
P
это разрешено.Поскольку
dc
это, по-видимому, достаточно неясно, чтобы требовать объяснений (странно для меня, учитывая странные вещи здесь!), Вот обзор:Это прежде всего калькулятор RPN с арифметикой произвольной точности. Но для этой задачи я использую
P
команду, которая интерпретирует число как последовательность символов в базе 256 и печатает их. Примеры:65 P
отпечаткиA
(код ASCII 65).16706 P
отпечаткиAB
(16706 = 65 * 256 + 66).Кроме того, единственная другая интересная особенность заключается в том, что он распознает все шестнадцатеричные цифры,
0-9A-F
даже если они не содержатся в шестнадцатеричном числе. По умолчанию используется десятичный ввод, поэтому входной токен999
означает9 hundreds + 9 tens + 9
иABC
означает,10 hundreds + 11 tens + 12
что он должен быть эквивалентен1122
.Возможность использовать цифры
ABD
в десятичном формате частично компенсирует невозможность использования12357
, а выбор порядка и группировки делает все остальное. (Если мне нужно несколько номеровx
,y
,z
и они не представимы с разрешенными цифрами, то я пытаюсь представляяx*256*256+y*256+z
вместо этого.)Программу, вероятно, можно сделать немного короче, используя большие группы. Я не прошел 3 байта за число.
источник
dc bonus.dc
. dc - один из старейших языков, который постоянно использовался в * nix буквально десятилетия. Хотя он не очень известен, вероятно, из-за его загадочного и не очень читаемого синтаксиса RPN. Отлично подходит для некоторых испытаний кода-гольфа, хотя ;-)Bash + coreutils, 56 байт
По счастливой случайности, добавление 7 к значению ascii скрытых символов приводит к получению всех нераскрытых символов (за исключением «9»). Поэтому мы просто делаем это преобразование в обратном порядке, затем аналогичное преобразование (вычитаем 12 из «E»), чтобы получить «9».
Выход:
источник
-7
заметно отображаемые знаки препинания, и эти 2 факта не имеют ничего общего друг с другом.Perl - 49 байт
Это в значительной степени Perl-версия решения Говарда. Выполните XOR для строки с 25. В результате получается файл с именем
#$%&04689@ABDOPQRabdegopq
. У меня появилась идея использоватьsymlink
и имя файла в качестве выходного формата, потому что все остальное запрещено.Вот еще одно решение Perl, которое я придумал. Вероятно, его можно значительно улучшить, и он довольно длинный, поэтому сейчас я ухожу в удобочитаемом формате.
Этот выводит много файлов, имя каждого - один из символов. Я не мог понять, как добавлять строки без использования запрещенного символа.
for
,while
,map
,say
,print
,eval
,s///e
, И любое имя переменной не может быть использована (переменные начинают с@
или$
в Perl) , который сделал это трудно.Надеюсь, что имена файлов подходят для формата вывода, потому что я уверен, что любой другой способ вывода информации использует один из запрещенных символов.
источник
-p
флаг и*_=\(
...)
: Попробуйте онлайн!-p
флаг будет запрещен, хотя, посколькуp
есть дыра.MATLAB, 36 байт
ТАК ЗАКРЫТЬ .... Только на 1 байт больше, чем текущий победитель (isaacg)! Который, при дальнейшей проверке, уже сделал то, что я намеревался сделать. Ну, нет ничего плохого в изобретении колеса ...
Я знаю, что это старый вызов, но я понял это только после того, как заинтересовался.
Если бы я только мог заставить MATLAB понять, что я хочу строку без отдельных
''
... предложений, кто-нибудь?источник
Brainfuck
303275Brainfuck, непревзойденный эзотерический язык (кроме пробелов);)
источник
Ctrl
+K
:)`
Это отступник. (Также называемый серьезным акцентом, хотя для меня это новая цитата : P)JS - 196 - попробуй
источник
h=1-1;j=3+3;k='\\x';m=!i+k;c=m[1];f=m[i=2+2];l=k+3;n=k+j;r=k+i;this[f+'v'+c+'l'](c+'l'+f+'rt("\\x23\\x2'+i+k+25+k+2+j+l+h+l+i+l+j+l+2*i+l+3*3+r+h+r+1+r+2+r+i+r+'f\\x5'+h+k+51+k+52+c+n+2+n+i+f+n+7+n+'f\\x7'+h+k+'71")')
- встроенныйl
, укороченныйm
, объявленныйi
при первом использовании, создал несколько дополнительных переменных для повторяющихся паттернов (вы могли бы улучшить это, настроив порядок выдачи символов, но это выше моего терпения: P).GolfScript, 89 символов
Просто строит массив всех символов ASCII и вычитает из них не «скрытые» символы.
источник
Befunge 98 - 69 байт
Делает это в 3 части. Тот, в котором значения незапертых символов отличаются от пропущенных символов на 5. Затем те, которые отличаются на 1, и, наконец, список незапертых символов, которые отличаются на 3 от пропущенных. Инструкция завершения программы в Befunge - "@" (значение символа 64), поэтому в конце я загружаю "?" (значение char 63) добавьте 1, затем поместите это в код с инструкцией 's'.
Я мог бы играть в гольф больше, объединив три
раздел, но, вероятно, не очень.
источник
JavaScript
240228Первоначальное представление:
z=(!1+"")[1];y=(!!1+"")[3];x={}+"";w=x[1];v=x[2];u=z+"t"+w+v;1[_="c\157nstruct\157r"][_](z+'l'+y+'rt('+u+'("Iy\x51lJj"+'+(t=u+'("\x51\x51==")')+'+'+u+'("M"+'+t+'+"==")+"Nj"+'+u+'("Zw==")+"5\x51EFC\x52E\71\x51UVJhYm\x52lZ2\71wc\x51=="))')()
Теперь, это отличное начало, вот как это ломается ...
И тогда я подумал ... "Должен быть более простой способ ..." и есть ...
Пересмотренное представление:
z=(!1+"")[1];y=(!!1+"")[3];x={}+"";w=x[1];v=x[2];u=z+"t"+w+v;this[y+"v"+z+"l"](z+'l'+y+'rt('+u+'("Iy\x51lJj"+'+(t=u+'("\x51\x51==")')+'+'+u+'("M"+'+t+'+"==")+"Nj"+'+u+'("Zw==")+"5\x51EFC\x52E\71\x51UVJhYm\x52lZ2\71wc\x51=="))')
Видя, что я могу использовать
eval
(собрав воедино вдохновение от @bebe; это намного быстрее, чем использованиеconstructor
ofconstructor
of anumber
...), я пробил его до 228 ... Я знаю, что он может не выиграть этот конкретный Golf Challenge , но это только мой способ показать, насколько вы можете злоупотреблять JavaScript, и все же получить желаемый результат ...источник
Главная - Бессонница , 50
Это выводит:
Бонус - Бессонница, 268
Это выводит:
Я думаю, что должна быть возможность уменьшить длину программы, если выходные данные переставлены, но мне нужно изменить мою программу поиска, чтобы сделать это.
Просто чтобы показать случай, другой язык, который способен работать с ограниченным количеством символов. Кстати, он может написать практически любой вывод, содержащий только 3 уникальных символа в источнике.
В настоящее время это единственный язык, который может выполнять как основной вызов, так и бонус среди всех существующих ответов.
Бессонница Переводчик .
источник
Befunge 98 - 46 байт
Befunge-ified версия записи Исаака Pyth:
источник
Japt , 33 байта
Попробуйте онлайн!
Тот же алгоритм, что и у Pya в isaacg , но в Japt он короче.
Как это устроено
Да, это JS, который является одним из наиболее уязвимых языков , только короче (и вам не нужно
alert
илиconsole.log
здесь).источник