При отсутствии входных данных ваша задача - сгенерировать следующее:
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Не визуально ваша задача - сгенерировать каждую букву в алфавите с пробелами перед ней, равными ее положению в алфавите минус один.
Если вы распечатаете это, оно должно выглядеть так, как указано выше. Допускаются посторонние пробелы, которые не влияют на внешний вид, а также завершающий перевод строки. Вы можете использовать все строчные или все прописные.
Вы также можете вернуть это из функции согласно обычным правилам, либо в виде строки с символами новой строки, либо в виде списка строк.
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах!
a<VERTICAL-TAB>b<VERTICAL-TAB>c...
? Как насчет того, если там есть символы возврата? Пока визуальный результат одинаков?4
перед ней есть пробелыb
, она не будет выглядеть очень диагональной. Если похоже, что уклон ~,-1
тогда все в порядке.Ответы:
Древесный уголь , 2 байта
Попробуйте онлайн!
Как?
Именно такой вызов, для которого изначально был разработан уголь.
источник
↘"abc ... xyz"q
что это будет самая короткая рабочая программа. ( Попробуйте онлайн! )↘``26O;)q
Должно работать (начните с обратного удара; для каждого I в 0 ... 25 вставьте неявное I, увеличьте обратный удар и вывод), но по какой-то причине выдается ошибка «пустой стек». .C 45 байтов
Спасибо @Dennis за сохранение 5 байтов!
источник
i
в какой-то момент. По крайней мере, на TIO,f()
работает только один раз .f(i){for(i=0;++i<27;printf("%*c\n",i,i+96));}
сохраняет несколько байтов.f(i){for(i=96;i<122;)printf("%c\v",++i);}
для 41 байта - убедитесь, что он запущен на реальном терминале (да, это разрешено )05AB1E ,
1486 байт-2 байта благодаря @Emigna
Как это устроено
Попробуйте онлайн!
Оригинальная версия, 14 байт
источник
AvyNú»
.ƶ
кажется таким идеальным, но это не так :(.Λ
вероятно, еще не было доступно в то время, но26A3Λ
сохраняет байт.₂A3Λ
был бы еще короче.JavaScript (ES6),
6059 байтРекурсивная функция, которая возвращает строку с завершающим переводом строки.
источник
n.toString(++n)+f(n)
на байт корочеn.toString(36)+f(n+1)
.f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):""
для 55"".padEnd(n-10)+n.toString(++n)
.f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):s
казалось бы, допустимо.Рубин , 28 байт
Попробуйте онлайн!
Объяснение:
Оператор << в строке в Ruby делает свое дело, как объяснено в документации
str << целое число → str
str << obj → str
Append - объединяет данный объект в str. Если объект является целым числом, он рассматривается как кодовая точка и преобразуется в символ перед объединением.
источник
R,
383736 байт(Использование
write
вдохновлено ответом @ Giuseppe .)источник
1
вместо того,""
чтобы сбрить другой байт.Vim, 29 байт
Попробуйте онлайн!
↵ означает нажать клавишу возврата
<Esc> означает нажать клавишу выхода
Как это работает?
источник
+
в своем объяснении, которое бросило меня на секунду.␛
вместо<Esc>
. Это выглядит немного лучше, на мой взгляд.{
вместо этогоgg
Python 2 , 36 байт
Это использует преимущество посторонних пробелов, которые не влияют на правило появления .
Попробуйте онлайн!
Альтернативная версия, 38 байт
Это дает точный вывод из спецификации задачи.
Попробуйте онлайн!
источник
%*c
работает?%*<identifier>
принимает два аргумента: длину для дополнения и фактическую вещь для замены. Некоторыеprintf
реализации имеют еще более неясные функции, такие как%1$<identifier>
я использовал здесь .PHP, 39 байт
источник
Чистый Баш, 13
Здесь
^K
и^H
находятся буквально вертикальные символы табуляции и возврата ASCII.xxd
Дамп этого сценария заключается в следующем - использоватьxxd -r
для восстановления фактического сценария:{a..z}
стандартное расширение bash для созданияa b c ... z
(разделенных пробелами)^K
вертикальная табуляция падает курсор вниз на одну строку в том же положении^H
Забой перемещает курсор назад , чтобы стереть один разделитель пространстваПопробуйте онлайн .
col
иtac
используются в нижнем колонтитуле, чтобы заставить это правильно отображаться в окне браузера, но это не нужно в обычном терминале.Если вышеприведенные неортодоксальные управляющие символы в выводе слишком растянуты, вы можете сделать это:
Баш + коммунальные услуги, 24
Здесь
^K
и^H
находятся буквально вертикальные символы табуляции и возврата ASCII.xxd
Дамп этого сценария заключается в следующем - использоватьxxd -r
для восстановления фактического сценария:Попробуйте онлайн . Вертикальная табуляция и backspace могут быть сделаны невидимыми для вашего браузера, но они есть (невидимые в chrome, видимые в firefox).
col -x
повторно отображает ввод, так что забавные управляющие символы заменяются пробелами и символами новой строки, чтобы получить тот же визуальный результатcol
выводит строки в обратном порядке.tac
исправляет это.источник
^K
как курсор вверх, это поведение, котороеcol
должно эмулироваться здесь.col
man-страница называет VT "обратным переводом строки". xterm, gnome-терминал и OSX-терминал все выпадают из строки, хотя ...Brain-Flak ,
124, 116, 106 байтПопробуйте онлайн!
Объяснение:
Этот ответ злоупотребляет Nilad высоты стека , но новым способом, которым я никогда раньше не пользовался, и которым я очень горжусь. Кроме этого, ответ не слишком умный.
Таким образом, анализируя символы, используемые в этом искусстве ASCII, на самом деле часто используются три значения:
32 (пробел),
64 (добавьте 64 к N, чтобы получить N-ю букву алфавита), и
10 (новая строка)
Как и 26. (количество циклов). И эти числа помещаются в разные места, поэтому мы не можем использовать повторно промежуточные значения для уменьшения больших чисел. И все, что нужно для этих чисел - это колоссальные 86 байтов:
Это ужасно Вот как мы делаем это более удобным. Очевидный подход должен нажать
32
на альтернативный стек, что делает наш32
сниппет стать:(<>({})<>)
и наш64
сниппет стал(<>({})({})<>)
. Если мы объединим наш начальный push 32 с нашим начальным push 26 , мы можем сэкономить примерно 8 байтов. (мой первый гольф).Но вот тут-то и начинается хитрость, которой я действительно горжусь. Так как мы не используем альтернативный стек для чего-то еще, мы могли бы также сыграть в гольф на десятке. Чтобы сделать это, мы поместим 4 произвольных числа в стек прямо в начале программы. Так как мы также нажимаем 32, это увеличивает значение
[]
nilad до 5, что делает наш10
фрагмент гораздо более удобным. И, к счастью для нас, на самом деле это позволяет нам играть в пуш-толчок 32 и 26 !становится
Итак, вот подробное объяснение:
источник
V ,
151311 байтПопробуйте онлайн!
объяснение
источник
Google Sheets,
6765 байт= ArrayFormula (ЕСЛИ (СТРОКА (A1: Z) = COLUMN (A1: Z26), СИМ (96 + СТРОКА (A1: Z26)), ""))Уходя от разъяснения, что любой пробел подойдет, я использовал явно пустые ячейки
Дайте мне знать, если это не считается, если я неправильно понял количество байтов или я испортил какой-то этикет, так как это мой первый пост здесь.
Изменить: Оказывается, я могу сохранить 2 байта, опуская "", так как листы Google будут принимать пустое значение if.
источник
APL (Dyalog) ,
97 байтов SBCS-2 байта благодаря подсказке ngn.
[Попробуйте онлайн!] [TIO-j3o0ipjy]
⎕A
в верхнем регистре lphabet⌸
между каждой парой (элемент, список индексов) вставьте следующую скрытую функцию:↑⍨
из стихии (письма) возьмите…∘
и ...-
число символов с отрицательным индексом, то есть, что много символов сзади, с отступом на передней части с пробелами.Попробуйте онлайн!
источник
↑
есть{.
и⍳
естьi.
Наречия:¨
есть"0
и⍨
есть~
.(a.{~97+i.26){."0~-1+i.26
⌸
чтобы вывести правильную матрицу и сохранить 2 байтаОктава,
2519 или 12? байтовПопробуйте онлайн!
Другое решение, предложенное @LuisMendo (12 байт), которое я протестировал в windows-версии Octave:
Объяснение:
Создает диагональную матрицу
a:z
.источник
Java 8,
72717061 байт-1 байт, выводя заглавные буквы вместо строчных.
-1 байт, печатая напрямую, а не возвращая многострочную строку.
-8 байт благодаря @ OliverGrégoire с помощью
printf
непосредственного избавления отString s="";
. А также -1 байт, изменив()->
наo->
.Попробуй это здесь.
источник
c=65
(или64
фактически), чтобы вам не требовалось трехзначное число. Может ли возврат массива вместо строки сэкономить вам байты, так как вы можете удалить+"\n"
?()->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}
используется та же идея, что и в другом вызове .Желе ,
109 байт-1 байт благодаря Деннису (избегайте уменьшения , напрямую
J
используя пониженный диапазон26Ḷ
)Полная программа, которая печатает результат.
Попробуйте онлайн!
(
ØaJ’⁶ẋż
для 7 - монадическая ссылка, которая возвращает список списков списков символов, но это,[["a"],[" ","b"],[" ","c"],...]
вероятно, недопустимо.)Я, однако, не удивлюсь, если бы был более короткий путь, о котором я не думал!
Как?
источник
[["a"],[" ","b"],[" "," ","c"],...]
так как список символов является альтернативным определением строки, но кортеж, похоже, не подходит :)"..."
представляет собой список символов, так что в действительности у[[['a']],[[[' '],['b']],[[' ',' '],['c']],...]
Jelly нет строк, только списки.26Ḷ⁶ẋżØaY
сохраняет байт.ØaJ’⁶ẋż
для7
, для вашей альтернативной версии.PowerShell, 29 байт
источник
$_
ходу, приятно.Алиса ,
2220 байтПопробуйте онлайн!
Несмотря на то, что выходные данные являются строкой, оказывается, что порядковый режим не является подходящим решением для этой задачи.
объяснение
Предыдущее решение
Попробуйте онлайн!
Я прошел около десяти 23-байтовых решений, прежде чем смог найти это.
объяснение
Эта программа использует ленту для отслеживания количества пробелов для вывода. В кардинальном и порядковом режимах используется одна и та же лента, но они имеют отдельные головки. Два режима имеют разные интерпретации того, что они видят на ленте, и программа полностью использует это различие.
Команды выполняются в следующем порядке:
источник
Brainfuck, 103 байта
Попробуйте онлайн!
Расположение переменных несколько улучшается.
объяснение
источник
Google Sheets, 69 байт
Здесь ничего сложного. Единственный прием - использовать
ArrayFormula
иROW(A1:A26)
вернуть 26 различных значений дляJOIN
функции. Вывод выглядит так:Я думаю, что Excel 2016 может делать то же самое,
TEXTJOIN
но я не могу вводить формулы массива в онлайн-версии, а сам имею только 2013 год. Формула должна быть такой:Ввод его в виде формулы массива ( Ctrl+ Shift+ Enter) добавляет фигурные скобки
{ }
с обеих сторон, увеличивая его до 67 байт. Любой, кто может проверить, работает ли он, может использовать его как свой собственный ответ.источник
Семя , 6014 байта
Я не думаю, что это получит какие-либо награды, но просто для удовольствия, вот решение в Seed.
Это переводится в следующую программу Befunge:
источник
shortC , 33 байта
Попробуйте онлайн!
источник
Добавить ++ , 1069 байт
Попробуйте онлайн!
Ага. Это жестко закодировано. Я уверен, что есть лучший способ, и если вы хотите его найти, продолжайте, но этот способ, кажется, работает лучше всего, поскольку Add ++ трудно работать с памятью.
источник
R ,
594947 байт-10 байт благодаря джурио
-2 байта благодаря Свену Хоэнштейну
Печать на стандартный вывод. Outgolfed пользователем 2390246
Попробуйте онлайн!
источник
26^2
на,676
чтобы сохранить байт.m=matrix("",26,26);diag(m)=letters;write(m,'',26)
(49 байт)cat(m,fill=27)
"diag<-"(x, y)
похожа наdiag(x) <- y
. Значение не присваивается переменной, но возвращается.> <> ,
46 4442 байтаПопробуйте онлайн!
объяснение
Это совершенно другой дубль из моих предыдущих 46 байтов, поэтому я включил TIO в единственный. 46 байт. Попробуйте онлайн!
Ниже приведена ссылка на сообщения Эминьи, это был первый ответ> <>, но я считаю, что мой достаточно отличается (и сохраняет несколько байтов), чтобы оправдать второй.
Эминья ответ
источник
Haskell ,
66 65 58 57 4543 байтаСпасибо @nimi и @maple_shaft за сохранение
1214 байтов.Попробуйте онлайн!
источник
<$
вместо репликации:(' '<$[1..(fromEnum n-97)])
(' '<$['b'..n])
.f=
.['a'..'z']>>= \n->(' '<$['b'..n])++[n,'\n']
.PHP, 23 байта
Примечание: используется кодировка IBM-850.
Запустите так:
объяснение
Создайте массив всех символов алфавита, соедините его вертикальной вкладкой в качестве клея.
источник
брейкфук , 80 байт
Попробуйте онлайн!
отформатирован:
Использует простую мультипликативную функцию генерации для помещения некоторых констант в память, затем повторяет процесс печати N пробелов, затем
'A' + N
дляN = 0..25
.Аннотированный:
источник
RProgN 2 , 5 байтов
\ x0B - литерал вертикальной табуляции
Это просто берет строчный алфавит, разбивает его и соединяет с вертикальными вкладками. Это производит ожидаемый эффект на определенных терминалах Bash.
источник