Вызов
Напечатайте следующие символы:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890
Проблема в том, что вы не можете использовать ни один из них в своем коде.
Вы можете печатать их в произвольном порядке, с или без начального или конечного символа новой строки, но вы не можете печатать любые другие символы.
правила
- Вы не можете использовать символы из набора, упомянутого выше
- Вы можете использовать любые другие символы
- Без обмана
- Стандартные лазейки запрещены
- Это код-гольф , самый короткий ответ выигрывает.
Разъяснения
- Если ваш язык использует другую кодировку, вы не можете использовать кодовые точки в этой кодировке, которые соответствуют буквенно-цифровым символам.
- Возвращение строки из функции считается допустимой формой вывода.
- Вы можете вернуть массив символов.
code-golf
string
kolmogorov-complexity
restricted-source
dkudriavtsev
источник
источник
Ответы:
V ,
87 байт1 байт сохранен благодаря @DJMcMayhem, поместив все это в одно выражение регулярного выражения
Попробуйте онлайн!
Выходы:
Примечание:
×
это неx
илиX
, то0xd7
HexDump:
объяснение
Теперь вывод выглядит так:
Мы должны удалить все не алфавитно-цифровые символы и
_
(поскольку они не включены в\W
), так что давайте сделаем это с помощью регулярных выраженийисточник
Ó×ü_
(что эквивалентно:s/\W\|_//g
)Октава ,
52 4640 байтЭто оценивает
объяснение
Здесь мы используем тот факт, что символы неявно преобразуются в целые числа, когда применяются арифметические операции, такие как
+-
или функция диапазона:
. При объединении с пустой строкой ([...,'']
) числа снова преобразуются в символы.Попробуйте онлайн!
источник
+1
за то, что был первым неэзотерическим языком в вызове, очень подходящем для esolangs.+1
, не для использования Octave (это довольно просто), но для игры в гольф это очень хорошо, и использование_
в качестве переменной! Я понятия не имел, что это возможно ... Хорошо!брейкфук ,
77767572 байтаПопробуйте онлайн!
Как это устроено
Переводчик начинается с ленты из 0 ячеек.
Это устанавливает первую ячейку на 8 , оставляя ленту в следующем состоянии.
При этом увеличивается вторая ячейка один раз, третья ячейка 6 раз, четвертая ячейка 4 раза, уменьшается пятая ячейка один раз, затем возвращается к началу ленты и уменьшается первая ячейка. После 8 итераций лента выглядит следующим образом.
Мы переходим ко второй ячейке и увеличиваем ее вдвое, готовясь к печати цифр.
Это печатает третью ячейку, увеличивает ее, затем возвращается ко второй ячейке и уменьшает ее. После 10 итераций мы напечатали,
0123456789
и лента выглядит следующим образом.Время подготовить ленту для писем! Мы начинаем с продвижения двух клеток.
Это увеличивает пятую ячейку один раз, шестую - дважды, седьмую - трижды, затем возвращается к четвертой ячейке и уменьшает ее. После 32 итераций лента выглядит следующим образом.
В качестве последнего шага перед печатью букв мы переходим к пятой ячейке и увеличиваем ее вдвое.
Наконец, мы переходим к шестой ячейке, чтобы увеличить и распечатать ее, проделать то же самое для седьмой ячейки, затем вернуться к пятой ячейке и уменьшить ее. После 26 итераций мы напечатали
Aa...Zz
.источник
Рубин, 42 байта
Функция, которая возвращает массив символов. Программа, которая выводит только символы, составляет 49 байт:
При этом просто используются символы ascii с обеих сторон соответствующих диапазонов для определения диапазона. Например,
?/...?:
означает символы между косой чертой и двоеточием, исключая конец. Чтобы избавиться от начала, мы вычитаем массив, содержащий три начальных символа.источник
6502 машинного языка,
747068 байтовШестнадцатеричный дамп (6502 программы обычно не перемещаемы; код здесь хранится, начиная с местоположения $ 0603):
Вы можете видеть, что здесь не используется ни один из запрещенных байтов: от 41 до 5 долларов, от 61 до 7 долларов или от 30 до 39 долларов.
Это функция без аргументов, которая при вызове возвращает указатель на массив символов «abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789» в верхней части стека в соответствии со стандартными соглашениями о вызовах 6502.
В порядке объяснения, вот разборка:
Код машинного языка является самоизменяющимся. Для манипулирования стеком мне нужно было использовать PHA и PLA, чтобы сдвинуть и вытолкнуть аккумулятор, но в этих инструкциях есть коды операций $ 48 и $ 68, которые запрещены (это коды ASCII для букв «H» и «h»). Итак, для PHA я беру число $ 24, делаю арифметическое смещение влево (ASL) и сохраняю полученные $ 48 в четырех местах кода, где он должен быть выполнен. Затем для PLA я использую побитовое ИЛИ на $ 48 в аккумуляторе, чтобы вычислить $ 68, и сохраняю его в двух местах кода, где это необходимо.
Было несколько инструкций, кроме PHA и PLA, которые я также не мог использовать, потому что их коды операций совпадали с буквами или цифрами ASCII, но я нашел прямые обходные пути для этих других.
Нужный символьный массив вычисляется и сохраняется, начиная с местоположения 0 (на самом деле не имеет значения, где он хранится, так как нам просто нужно быть уверенным, что указатель на него возвращается на вершину стека).
Вы можете попробовать это на 6502 ассемблере и эмуляторе Ника Моргана . Вот скриншот; поле монитора внизу показывает строку вывода (в местах от $ 00 до $ 3D) после запуска программы.
источник
Haskell ,
75 72 63 5856 байтПопробуйте онлайн! Позвони с
__
. Выход:Спасибо xnor, который предложил
__
и в_'
качестве двухбайтовых имен переменных вместо(!)
или похожих, сэкономив 9 байтов. Особенно мне нравится, как_'
ломается подсветка синтаксиса. И еще раз спасибо xnor за обобщение диапазонов, сохранив еще 4 байта.Изменить: Я обнаружил, что символы Unicode допускается в качестве идентификаторов в Haskell, так например
ä
,ö
... может также использоваться в качестве двух идентификаторов байтов. Поскольку в программе остался один трехбайтовый идентификатор, я заменил егоä
, сохранив еще 2 байта.Объяснение:
__
и_'
являются допустимыми именами переменных. Из спецификации языка :Таким образом, код эквивалентен
В списке понимание
a
становится неизбежно'/'
иb
к':'
("/:"
эквивалентно['/',':']
, так что соответствующий шаблон успешно). Затем диапазон[a..]
строит строку из всех символов, более равных'/'
:x
Затем для каждого символа в этой строке проверяется, есть ли'/'<x
иx<':'
, что приводит к появлению символов0123456789
. Тогдаa
иb
связаны@
и[
, уступая символыABCDEFGHIJKLMNOPQRSTUVWXYZ
и так далее.источник
__
и_'
как переменные.Underscore is treated as a lower-case letter
правиле._'_=[__|[_',__']<-["`{","@[","/:"],__<-[_'..],_'<__,__<__']
(в обычных переменныхz=[x|[a,b]<-["`{","@[","/:"],x<-[a..],a<x,x<b]
).__
вместо,_'_
даже если__
он используется в качестве идентификатора внутри списка.Perl (5,10 или 5,12),
3029 байтЭта программа состоит в основном из непечатаемых символов, поэтому вот hexdump:
Эта программа очень проста: мы regexing (
=~
) подчеркивание (_
; спасибо @Dennis за указание, что это работает) против регулярного выражения. Регулярное выражение указывается как выражение, а не буквально; в частности, мы берем побитовое дополнение (~
) строки. Обращая побитовое дополнение, чтобы получить базовую строку, мы получаем следующее выполняемое регулярное выражение:В версиях Perl 5.10 и 5.12
(?{…})
синтаксис представлял собой экспериментальный синтаксис, позволяющий регулярным выражениям запускать произвольный код во время выполнения. В этом случае мы используем его для запуска простой Perl-программы для вывода желаемого результата. (Версии ранее 5.10 не могут быть использованы, потому что они не имеютsay
.)Современные версии Perl
(?{…})
по умолчанию отключены по соображениям безопасности, но если у вас есть такая версия Perl, вы можете отключить проверку (и, следовательно, запустить эту программу) через-Mre=eval
аргумент командной строки (вместе со стандартом,-M5.010
который определяет версию). языка для реализации, и который не считается против byountount).источник
На самом деле
854 байтаКак это устроено:
Печать неявно в конце программы.
Редактировать 1: Заменено размещение алфавита в нижнем / верхнем регистре, а затем в диапазоне чисел (10) с получением только печатаемых символов базы 62.
Изменить 2: изменил ">" на '> благодаря Mego :) сохранил 1 байт.
Попробуйте онлайн!
источник
'>
на байт короче">"
.PHP, 69 байт
Код стилизован под Windows-1252 здесь. Ниже приведен обратимый xxd hexdump.
Попробуйте онлайн!
источник
Java (OpenJDK 9) , 277 байт
Да, Java, ты хорошо это читаешь!
Попробуйте онлайн!
Это печатает диапазоны, но в обратном порядке, так как порядок не имеет значения.
Я играл на отсутствии правила «без ввода», чтобы неявно определить,
char
что необходимо для того, чтобы все это работало. Если это обман, пожалуйста, так и скажи.Ungolfed & тестирование
источник
char
, иначе это было бы просто. И, честно говоря, мой ответ короче, чем ваш первоначальный ответ. Взгляните на мое объяснение всех накладных расходов, которые мне предстоит пройти.Brainfuck,
8985 байтПоскольку мозговой трафик в любом случае игнорирует буквенно-цифровые символы, это просто проблема с постоянным выводом ... (Редактировать: См. Решение Денниса для версии, которая на 10 байт короче)
Попробуйте онлайн!
Этот код является хорошим примером основных подсчитанных циклов в brainfuck:
Обратите внимание, что для создания чисел используются сочетания клавиш, что означает, что интерпретатору необходимо иметь 8-разрядные ячейки переноса (например, ту, с которой я связан).
источник
JavaScript (ES6), 983 байта
Оказывается, в ES6 есть много символов, которые вы можете использовать в именах переменных JavaScript ! Прекрасно работает после того, как вы исчерпали шесть имен байтов по 1-2 байта с помощью
$
и_
.JavaScript, 1223 байта
Это был мой ответ, прежде чем я узнал об этом.
Я пробежал
console.log('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890')
через jjencode и вручную показал результат. Есть определенно больше оптимизаций, которые можно сделать.источник
Befunge,
737259575553 байтаПопробуйте онлайн!
Это один цикл с обратным отсчетом
{
(т. Е. Один символ послеz
). На первой итерации"{"<
последовательность помещает две копии{
в стек: одна является начальным счетчиком цикла, а другая используется для уменьшения этого счетчика с помощью последовательности!!-
(две операции NOT делают1
, а затем вычитают). На последующих итерациях счетчик цикла уже находится в стеке, поэтому{
для настройки последовательности декремента требуется только одна .Остальная часть кода - это просто длинное логическое выражение, вычисляющее, находится ли символ в диапазоне. Если это так, ветвь во второй строке разделяется влево, чтобы вывести значение. Если нет, то правильная ветвь оборачивается, чтобы проверить, достигли ли мы нуля и должны ли завершиться. Две ветви сливаются в середине, чтобы подняться и повторить цикл. Обратите внимание, что все команды вертикального направления идут вверх, поскольку мы не можем использовать a
v
, но это нормально, потому что указатель инструкции автоматически переносится в верхнюю часть игрового поля.Спасибо Мисте Фиггинсу за то, что он изначально придумал лучшую технику для увеличения цикла.
Но особая благодарность Джо Кингу за еще лучший подход к обратному отсчету, а не к повышению, а также за более компактную разметку ветвей.
источник
v
так как это источник с ограниченным доступом, но он все еще работает так же хорошо с^
. Благодарю.Желе ,
1716 байтПопробуйте онлайн!
Как это устроено
источник
Самомодифицирующийся Brainfuck , 32 байта
Попробуйте онлайн!
xxd -r
обратимый hexdump (содержит непечатаемые):источник
@/
?`\x1a@\x1a/\n
есть, потому что их кодовые точки действительно полезны для игры в гольф. Вы не можете удалить их.+.
вместо.+
.C, 128 байтов
Да, C. И это даже короче, чем некоторые из эзотерических.
Вызовите
_
достаточно большой пустойchar *
буфер.Может быть, крошечный бит зависит от компилятора. Протестировано с использованием GCC; файл был сохранен в кодовой странице 1252.
источник
JavaScript (ES6),
812745657650536520416 байтИзменить: Используя кодировку ISO8859-1, это решение составляет 416 байт вместо 520 байт. Полная программа составляет 432 байта, с учетом дополнительных 16 байтов для
Это функция представления, а не полная программа. Я потратил довольно много времени на игру в гольф JJEncode (хет- кон к darrylyeo для этого), но вместо игры в гольф
Я играл в гольф
где
Ø
инициализируется""
в накладные расходы.Переписано с запятыми операторами, преобразованными в новые строки:
объяснение
Этот скрипт начинается с инициализации нескольких встроенных типов и преобразования их в строки. Строки, которые мы можем получить без использования буквенно-цифровых символов:
Из этих строк и необходимых цифр для ссылки на отдельные символы мы можем получить строки
return
иconstructor
, которые можно использовать так:Конструктор объекта есть
Object()
, а его конструктор естьFunction()
, который мы можем использовать по существу какeval()
.В этом случае выполняемый кодированный скрипт представляет собой вложенные
for
циклы, объединяющие все буквенно-цифровые символы в строку с использованием их кодовых точек и возвращающие ее.Для алфавитных символов в закодированном скрипте, к которым нельзя получить доступ с помощью встроенных модулей, JJEncode использует восьмеричные экранированные символы для их представления, а затем декодирует всю строку, возвращая ее из внутренней функции. Внешняя функция затем может быть вызвана для выполнения источника.
демонстрация
источник
Brain-Flak , 171 байт
Включает +3 для
-A
Попробуйте онлайн!
Вероятно, есть способ сделать это без необходимости повторения «функции 1» add.
источник
Юлия 0,4 , 46 байт
Это универсальная функция, которая возвращает массив символов.
Попробуйте онлайн!
Альтернативная версия, 47 байтов, только ASCII
Попробуйте онлайн!
источник
J, 171 байт
Ой ... мой мозг болит ... Попробуй онлайн!
Вот так вы можете увидеть все это одной строкой (хотя она не будет работать с переносами строк).
Гарантируется работа только с J-версией
j805/j64/linux/release/commercial/www.jsoftware.com/2016-12-11T08:02:52
в указанном порядке. (Только первые 12 символов имеют значение.)объяснение
Большая часть программы посвящена постоянному поколению. С заменой этих констант на их значения программа выглядит так:
С некоторыми скобками удалены, а некоторые числа стали лучше:
Это состоит из группы
,
и,~
s, которые добавляют и дополняют аргументы. Вот отдельные значения:":26
('.',~10{9!:14'')
'+/'
(":65 97 48)
','
(':',~12{9!:14'')
1
это26
как строка.9!:14''
генерирует следующую строку в TIO:с
2
, мы получаем10
th-й символ (i
изlinux
) и добавляем в.
его конец, получаяi.
.3
и5
говорят сами за себя.4
список чисел65 97 48
в виде строки6
аналогично2
, за исключением того, что это12
символ th (u
fromlinux
) и добавляет:
в конец, уступаяu:
.Это все вместе дает
u:,65 97 48+/i.26
.".
оценивает это, давая нам:(Примечание:
+/
это табличное дополнение.)Затем, с помощью
62{.
, мы берем первые62
символы из этого, давая намABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
.источник
<:<.^^*_
которую сохраняет байт. Кроме того, я попытался сгенерировать весь диапазон и удалить символы, чтобы получить':;<=>?@[\]^_`'-.~".(':',~(+:+:>.^*_){(*:>.^*_)!:(<:<.^^*_)''),":(#@}.@}.@}.@,~(+#\)],,~)(*:@#$])'+++++'
104 байта. Я уверен, что это может стать намного короче05AB1E ,
181511 байт-4 благодаря Adnan, потому что если размер ввода равен 1, 05AB1E будет использовать 0 для b в первой команде.
Попробуйте онлайн!
Я пробовал так много разных подходов, но ключевые моменты, которые усложнили:
источник
You may print them in arbitrary order
говорит вызов.•£•Ýç©á®þ«˜
работает?Brainfuck, 55 байтов
Выход:
Попробуйте онлайн!
Инициализирует ленту до 3 · 2 n и работает оттуда.
источник
Perl 6 , 43 байта - неконкурентоспособен
Лямбда, которая возвращает список символов.
Объяснение:
Зависит от исправления в интерпретаторе Rakudo Perl 6, который был связан только с git repo сегодня и пока не является частью официального релиза Rakudo. Фактически, я столкнулся с ошибкой, отвечая на этот вызов, и мне удалось исправить ее с помощью одного из разработчиков ядра Perl 6. Правила этого сайта, насколько я понимаю, не позволяют ответам конкурировать в такой ситуации, поэтому я отметил их как неконкурентные.
источник
PHP 7.0+, 110 байт
Да благословит Бог побитовые струны!
Замените
\n
реальным символом новой строки * NIX.Он присутствует в коде, чтобы избежать проблем с переводом строки, но не учитывается в счете.
Это создает кучу предупреждений, но они могут быть подавлены добавлением
@
перед каждым заблудшим_
.Предупреждение свободно , 113 байт
источник
65c02 машинный язык + Apple] [ROM, 25 байт
Печать
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
.Должен начинаться с
$8000
.разборка
источник
10, 15, 26, 32, 44, 96, 128, 162, 169, 175, 192, 202, 208, 224, 237, 249, 253
, которые соответствуют символам,↵.. ,`.¢©¯ÀÊÐàíùý
где.
s являются непечатаемыми символами. Это действительноBash (на Linux),
507493490485 байтэто хранит массив символов в глобальной переменной
__
это должно быть выполнено на недавно загруженной машине linux с
/proc
, или чем-то вроде пространства имен pidобъяснение:
чтобы попробовать это мы можем добавить
declare -p __
в конце, чтобы отобразить результатисточник
/proc
. На самом деле/proc
в Linux нет особой необходимости, хотя вам, вероятно, будет сложно найти современный дистрибутив без него.Javascript, 1273
13511610байтовЭто решение работает практически так же, как и другие два ответ на эту тему здесь и здесь , где он использует букву из
true
,false
,undefined
и[object Object]
строк для создания функций , которые он должен генерировать другие буквы.Поскольку большое количество букв уже введено в объект, я попытался добавить все оставшиеся крошечные буквы и цифры к объекту, а затем применил
toUpperCase
ко всем значениям в объекте, чтобы сгенерировать пропущенные большие буквы.Обновить:
Мне удалось улучшить способ установки восьмеричных значений, но они по-прежнему занимают 13 х 30 байт (или они будут 30 байт каждый после того, как я изменю числа на разные ключи), теперь каждый из них следует этому общему правилу. картина:
$.ž=\'\\'+$.一+$.七+$.二+'\';
.Дополнительные 49 байтов можно легко извлечь, переключив клавиши для цифр на 2 байта.
Текущее представление:
источник
C (лязг) , 164 байта
Попробуйте онлайн!
Это рекурсивная функция, которая получает символы, начиная со значения 1 (вычитая из себя и увеличивая), и создавая все остальные числа из этого.
Ungolfed / Explaination:
источник
CJam , 15 байтов
Попробуйте онлайн!
объяснение
источник
𝔼𝕊𝕄𝕚𝕟, 8 символов / 19 байтов
Попробуй это здесь!
ᶐ
алфавит в верхнем регистре, алфавитᶛ
в нижнем регистре и⩥Ⅹă⬯
диапазон (⩥
) от0
до10
(Ⅹ
минус римская цифра в юникоде) минус1
, соединенный с (ă
) ничем (⬯
).источник