Диагональный алфавит


66

При отсутствии входных данных ваша задача - сгенерировать следующее:

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

Не визуально ваша задача - сгенерировать каждую букву в алфавите с пробелами перед ней, равными ее положению в алфавите минус один.

Если вы распечатаете это, оно должно выглядеть так, как указано выше. Допускаются посторонние пробелы, которые не влияют на внешний вид, а также завершающий перевод строки. Вы можете использовать все строчные или все прописные.

Вы также можете вернуть это из функции согласно обычным правилам, либо в виде строки с символами новой строки, либо в виде списка строк.

Это , поэтому выигрывает самый короткий ответ в байтах!


Должны ли пробелы быть настоящими ASCII-пробелами или я могу дать вывод как a<VERTICAL-TAB>b<VERTICAL-TAB>c...? Как насчет того, если там есть символы возврата? Пока визуальный результат одинаков?
Цифровая травма

@DigitalTrauma, пока он выглядит одинаково, мне все равно, какой пробел вы используете.
Стивен

Могу ли я использовать табуляции вместо пробелов?

@ yamboy1 хм, наверное нет. Большинство вкладок имеют большое количество пробелов - если ваша диагональ выглядит так, как будто 4перед ней есть пробелы b, она не будет выглядеть очень диагональной. Если похоже, что уклон ~, -1тогда все в порядке.
Стивен

Не влияет ли на внешний вид наличие дополнительного пробела или 2?
MildlyMilquetoast

Ответы:


87

Древесный уголь , 2 байта

↘β

Попробуйте онлайн!

Как?

 β - the lowercase alphabet
↘  - direction

Именно такой вызов, для которого изначально был разработан уголь.


4
Правильный язык :)
Стивен

2
Это напоминает мне, я, вероятно, должен еще немного поработать над Crayon ... Я считаю, ↘"abc ... xyz"qчто это будет самая короткая рабочая программа. ( Попробуйте онлайн! ) ↘``26O;)qДолжно работать (начните с обратного удара; для каждого I в 0 ... 25 вставьте неявное I, увеличьте обратный удар и вывод), но по какой-то причине выдается ошибка «пустой стек». .
ETHproductions

2
2 байта ?! В какой кодировке СТРЕЛКА ЮГО-ВОСТОКА является одним байтом?
Wyck

6
@Wyck Charcoal (примечание: предположение) использует пользовательскую кодовую страницу, которая может быть сжата до 1-байтовых инструкций. Это законно для Code Golf. codegolf.meta.stackexchange.com/questions/9428/…
Draco18s

14
@StephenS, я думаю, что вы имеете в виду нижний правый язык :)
Wossname

18

C 45 байтов

f(i){for(i=0;++i<27;)printf("%*c\n",i,i+96);}

Спасибо @Dennis за сохранение 5 байтов!


9
Работает на моей машине ™
Разрушаемый Лимон

Я думаю, что вам придется инициализировать или сбросить iв какой-то момент. По крайней мере, на TIO, f()работает только один раз .
Деннис

@ Денис Ах, ты прав. Исправлено.
Дверная ручка

f(i){for(i=0;++i<27;printf("%*c\n",i,i+96));}сохраняет несколько байтов.
Деннис

3
f(i){for(i=96;i<122;)printf("%c\v",++i);}для 41 байта - убедитесь, что он запущен на реальном терминале (да, это разрешено )
NieDzejkob

13

05AB1E , 14 8 6 байт

-2 байта благодаря @Emigna

AvyNú»

Как это устроено

A      # lowercase alphabet
 v     # for letter in alphabet
  y    # push letter
   N   # push index of letter
    ú  # Pad letter with index of letter spaces
     » # Join with stack on newline.

Попробуйте онлайн!

Оригинальная версия, 14 байт

26FNð×N65+ç«}»

Вы можете сохранить еще 2 байта с помощью AvyNú».
Emigna

@Emigna: Спасибо!
Нил А.

ƶкажется таким идеальным, но это не так :(.
Волшебная Осьминог Урна

Λвероятно, еще не было доступно в то время, но 26A3Λсохраняет байт.
Кевин Круйссен

1
@MagicOctopusUrn ₂A3Λбыл бы еще короче.
Кевин Круйссен

12

JavaScript (ES6), 60 59 байт

f=(n=10)=>n-36?" ".repeat(n-10)+n.toString(++n)+`
`+f(n):""

Рекурсивная функция, которая возвращает строку с завершающим переводом строки.


1
Вау, это так подло. Преобразование числа в диапазоне от 10 до 36 в число в странной базе. Пока не понимаю, почему база тоже должна увеличиваться.
Стив Беннетт

2
@SteveBennett Правильно, но n.toString(++n)+f(n)на байт короче n.toString(36)+f(n+1).
ETHproductions

1
Вы могли бы сделать f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):""для 55
Arnauld

1
Сохранение байт с некоторыми ES8: "".padEnd(n-10)+n.toString(++n).
Лохматый

1
@ Arnauld, f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):sказалось бы, допустимо.
Лохматый

12

Рубин , 28 байт

26.times{|a|puts" "*a<<97+a}

Попробуйте онлайн!

Объяснение:

Оператор << в строке в Ruby делает свое дело, как объяснено в документации

  • str << целое число → str

  • str << obj → str

Append - объединяет данный объект в str. Если объект является целым числом, он рассматривается как кодовая точка и преобразуется в символ перед объединением.


12

R, 38 37 36 байт

write(intToUtf8(diag(65:90),T),1,26)

(Использование writeвдохновлено ответом @ Giuseppe .)


3
Клянусь, я попробовал это, но не смог заставить его работать! Отлично сработано. Вы можете сохранить 1 байт, используя 65:90, так как верхний регистр разрешен.
user2390246

@ user2390246 Спасибо за указание!
Свен

Вы можете использовать 1вместо того, ""чтобы сбрить другой байт.
Джузеппе

@Giuseppe Спасибо за указание!
Свен Хоэнштейн

11

Vim, 29 байт

:h<_↵↵↵y$ZZ25o <Esc>{qqpblD+q25@q

Попробуйте онлайн!

↵ означает нажать клавишу возврата

<Esc> означает нажать клавишу выхода

Как это работает?

:h<_↵↵↵                             Open the help and navigate to the alphabet
       y$ZZ                         Copy the alphabet and close the help
           25o <Esc>                Abuse auto-indent and create a whitespace diagonal
                    gg              Go to the beginning of the file
                      qq            Record a macro
                        pb          Paste the alphabet and go to the first letter
                          lD        Go to the second letter and cut the rest of the alphabet
                            +       Go to the first non-blank character in the next line
                             q      Stop recording the macro
                              25@q  Run the macro for the remaining letters

Попробуйте онлайн! Вы можете использовать это, чтобы продемонстрировать это (V основан на Vim и в основном обратно совместим, за исключением, по-видимому, автоматических отступов по умолчанию - off). Кроме того, менее важно, что вы пропустили +в своем объяснении, которое бросило меня на секунду.
nmjcman101

Спасибо @ nmjcman101! Я пытался найти какой-нибудь способ попробовать vim онлайн и никогда не знал этого о V
jmriego

Вы можете использовать вместо <Esc>. Это выглядит немного лучше, на мой взгляд.
Пшеничный волшебник

Вы можете сохранить один байт, если вы делаете {вместо этогоgg
DJMcMayhem

Вы можете использовать 2↵ вместо ↵↵↵ и , возможно , Y вместо Y $
GB

11

Python 2 , 36 байт

n=65;exec"print'%*c'%(n,n);n+=1;"*26

Это использует преимущество посторонних пробелов, которые не влияют на правило появления .

Попробуйте онлайн!

Альтернативная версия, 38 байт

n=1;exec"print'%*c'%(n,n+96);n+=1;"*26

Это дает точный вывод из спецификации задачи.

Попробуйте онлайн!


Как вообще %*cработает?
Утренняя монахиня

%*<identifier>принимает два аргумента: длину для дополнения и фактическую вещь для замены. Некоторые printfреализации имеют еще более неясные функции, такие как %1$<identifier>я использовал здесь .
Деннис


8

Чистый Баш, 13

echo {a..z}^K^H

Здесь ^Kи ^Hнаходятся буквально вертикальные символы табуляции и возврата ASCII. xxdДамп этого сценария заключается в следующем - использовать xxd -rдля восстановления фактического сценария:

00000000: 6563 686f 207b 612e 2e7a 7d0b 08         echo {a..z}..
  • {a..z}стандартное расширение bash для создания a b c ... z(разделенных пробелами)
  • ^Kвертикальная табуляция падает курсор вниз на одну строку в том же положении
  • ^HЗабой перемещает курсор назад , чтобы стереть один разделитель пространства

Попробуйте онлайн . colи tacиспользуются в нижнем колонтитуле, чтобы заставить это правильно отображаться в окне браузера, но это не нужно в обычном терминале.


Если вышеприведенные неортодоксальные управляющие символы в выводе слишком растянуты, вы можете сделать это:

Баш + коммунальные услуги, 24

echo {a..z}^K^H|col -x|tac

Здесь ^Kи ^Hнаходятся буквально вертикальные символы табуляции и возврата ASCII. xxdДамп этого сценария заключается в следующем - использовать xxd -rдля восстановления фактического сценария:

00000000: 6563 686f 207b 612e 2e7a 7d0b 087c 636f  echo {a..z}..|co
00000010: 6c20 2d78 7c74 6163                      l -x|tac

Попробуйте онлайн . Вертикальная табуляция и backspace могут быть сделаны невидимыми для вашего браузера, но они есть (невидимые в chrome, видимые в firefox).

  • col -x повторно отображает ввод, так что забавные управляющие символы заменяются пробелами и символами новой строки, чтобы получить тот же визуальный результат
  • по какой-то причине colвыводит строки в обратном порядке. tacисправляет это.

Это очень круто :) (и благодаря meta и @Dennis за то, что они предложили сортировать ответы на Codegolf по активности вместо оценки, чтобы иметь лучшие ответы вместо встроенных (очень скучных) языков Codegolf: codegolf.meta.stackexchange. ru / questions / 10127 /… )
Оливье Дюлак

Многие терминалы визуализируются ^Kкак курсор вверх, это поведение, которое colдолжно эмулироваться здесь.
Нил

@ Нейл, да, это имеет смысл - colman-страница называет VT "обратным переводом строки". xterm, gnome-терминал и OSX-терминал все выпадают из строки, хотя ...
Digital Trauma

8

Brain-Flak , 124, 116 , 106 байт

((((()))))(((([][]){}){})[[]()]<>){(({})<(({})<({}<>({})({})<>)>)
{({}<(<>({})<>)>[()])}{}(<>[][]<>)>[()])}

Попробуйте онлайн!

Объяснение:

Этот ответ злоупотребляет Nilad высоты стека , но новым способом, которым я никогда раньше не пользовался, и которым я очень горжусь. Кроме этого, ответ не слишком умный.

Таким образом, анализируя символы, используемые в этом искусстве ASCII, на самом деле часто используются три значения:

  • 32 (пробел),

  • 64 (добавьте 64 к N, чтобы получить N-ю букву алфавита), и

  • 10 (новая строка)

Как и 26. (количество циклов). И эти числа помещаются в разные места, поэтому мы не можем использовать повторно промежуточные значения для уменьшения больших чисел. И все, что нужно для этих чисел - это колоссальные 86 байтов:

10:
((()()()()()){})

26:
((((()()()){}){}()){})

32:
((((()()()()){}){}){})

64:
(((((()()()()){}){}){}){})

Это ужасно Вот как мы делаем это более удобным. Очевидный подход должен нажать 32на альтернативный стек, что делает наш 32сниппет стать: (<>({})<>)и наш 64сниппет стал (<>({})({})<>). Если мы объединим наш начальный push 32 с нашим начальным push 26 , мы можем сэкономить примерно 8 байтов. (мой первый гольф).

Но вот тут-то и начинается хитрость, которой я действительно горжусь. Так как мы не используем альтернативный стек для чего-то еще, мы могли бы также сыграть в гольф на десятке. Чтобы сделать это, мы поместим 4 произвольных числа в стек прямо в начале программы. Так как мы также нажимаем 32, это увеличивает значение []nilad до 5, что делает наш 10фрагмент гораздо более удобным. И, к счастью для нас, на самом деле это позволяет нам играть в пуш-толчок 32 и 26 !

#Push 32, 26
(((((()()()()){}){}){})<>[(()()()){}])

#Push 10
((()()()()()){})

становится

#Push 32, 26 (-2 bytes)
(((((())))))((([][][]){}()())[[]]<>)

#Push 10 (-6 bytes)
(<>[][]<>)

Итак, вот подробное объяснение:

# Push 1 four times
((((()))))

# Push 32 to main stack (to reuse later)...
((([][][]){}()())

# And then 26 to the alternate stack
[[]()]<>)

#While true
{

    # Keep track of the current TOS
    (({})<

        # Push [TOS, TOS + 64] (To get uppercase characters)
        (({})<({}<>({})({})<>)>)

        # TOS times...
        {
            # Decrement the loop counter, while pushing a space underneath it
            ({}<(<>({})<>)>[()])

        # Endwhile, pop zeroed counter
        }{}

        # Push 10 (newline)
        (<>[][]<>)

    # Push TOS - 1 back one
    >[()])

# Endwhile
}

7

V , 15 13 11 байт

¬azòÙr klDj

Попробуйте онлайн!

объяснение

¬az         ' Insert a-z
   ò        ' Recursively
    Ù       ' Duplicate current line down
     r      ' Replace the first character with a ' '
       kl   ' Move up a line and right
         D  ' Delete from here to the end
          j ' Move back down

7

Google Sheets, 67 65 байт

=ArrayFormula(IF(ROW(A1:Z)=COLUMN(A1:Z26),CHAR(96+ROW(A1:Z26)),))

= ArrayFormula (ЕСЛИ (СТРОКА (A1: Z) = COLUMN (A1: Z26), СИМ (96 + СТРОКА (A1: Z26)), ""))

Уходя от разъяснения, что любой пробел подойдет, я использовал явно пустые ячейки

Выход

Дайте мне знать, если это не считается, если я неправильно понял количество байтов или я испортил какой-то этикет, так как это мой первый пост здесь.

Изменить: Оказывается, я могу сохранить 2 байта, опуская "", так как листы Google будут принимать пустое значение if.


1
Добро пожаловать в PPCG :) Выглядит хорошо! Хорошая работа, победив ответ на другие листы Google!
Стивен

7

APL (Dyalog) , 9 7 байтов SBCS

-2 байта благодаря подсказке ngn.

↑⍨∘-⌸⎕A

[Попробуйте онлайн!] [TIO-j3o0ipjy]

⎕A в верхнем регистре lphabet

 между каждой парой (элемент, список индексов) вставьте следующую скрытую функцию:

↑⍨ из стихии (письма) возьмите…

 и ...

- число символов с отрицательным индексом, то есть, что много символов сзади, с отступом на передней части с пробелами.

Попробуйте онлайн!


Приятно. Моя попытка J была немного более многословной. Есть ли перевод этих глаголов на J?
Иона

@Jonah Глаголы: есть {.и есть i.Наречия: ¨есть "0и есть ~.
Адам

Благодарю. Похоже, перевод J теряет некоторую краткость:(a.{~97+i.26){."0~-1+i.26
Иона

@ Adám вывод не выглядит как требуется; подсказка: используйте, чтобы вывести правильную матрицу и сохранить 2 байта
ngn

@ngn Вы также можете вернуть (…) список строк. Но я буду расследовать. Редактировать: Да, конечно!
Адам

6

Октава, 25 19 или 12? байтов

[diag(65:90)+32 '']

Попробуйте онлайн!

Другое решение, предложенное @LuisMendo (12 байт), которое я протестировал в windows-версии Octave:

diag('a':'z')

Объяснение:

Создает диагональную матрицу a:z.


@ LuisMendo In tio я не могу дать тот же результат. Это выражение, которое можно оценить, дает желаемый результат :)
rahnema1

Решение, предложенное Луисом, похоже, теперь работает на TIO ... Может быть, новая версия Octave?
Стьюи Гриффин

Или новая версия тио !?
rahnema1

6

Java 8, 72 71 70 61 байт

o->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}

-1 байт, выводя заглавные буквы вместо строчных.
-1 байт, печатая напрямую, а не возвращая многострочную строку.
-8 байт благодаря @ OliverGrégoire с помощью printfнепосредственного избавления от String s="";. А также -1 байт, изменив ()->на o->.

Попробуй это здесь.


Наивная реализация короче, чем я думал. Вы можете сохранить байт с помощью c=65(или 64фактически), чтобы вам не требовалось трехзначное число. Может ли возврат массива вместо строки сэкономить вам байты, так как вы можете удалить +"\n"?
TheLethalCoder

@TheLethalCoder Ах, не знал, что нам разрешено выводить заглавные буквы. Пролетел над этим. Благодарю. А что вы подразумеваете под выводом массива? Как массив массивов?
Кевин Круйссен,

1
@TheLethalCoder Любой совет приветствуется, так что спасибо. Но в этом случае он не будет короче. :)
Кевин Круйссен

1
@Winter О вашем первом предложении, которое все еще обсуждается в этом мета-посте , но, судя по голосам, я думаю, что оно действительно теперь разрешено. Что касается второго, я не уверен ... Это похоже на обман / нарушение правил, особенно после этих бурных обсуждений в комментариях к этой мета-записи и ответам .
Кевин Круйссен

1
62 байта: ()->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}используется та же идея, что и в другом вызове .
Оливье Грегуар,

5

Желе ,  10  9 байт

-1 байт благодаря Деннису (избегайте уменьшения , напрямую Jиспользуя пониженный диапазон 26Ḷ)

26Ḷ⁶ẋżØaY

Полная программа, которая печатает результат.

Попробуйте онлайн!

( ØaJ’⁶ẋżдля 7 - монадическая ссылка, которая возвращает список списков списков символов, но это, [["a"],[" ","b"],[" ","c"],...]вероятно, недопустимо.)

Я, однако, не удивлюсь, если бы был более короткий путь, о котором я не думал!

Как?

26Ḷ⁶ẋżØaY - Main link: no arguments
26        - literal 26
  Ḷ       - lowered range = [0,1,2,...,26]
   ⁶      - literal space character
    ẋ     - repeat          [ [],      [' '],      [' ',' '],    ...,  [' ',' ',...,' ']]
      Øa  - yield lowercase alphabet
     ż    - zip             [[[],'a'],[[' '],'b'],[[' ',' '],'c'],...,[[' ',' ',...,' '],'z']]
        Y - join with newlines  [[],'a','\n',[' '],'b',\n',[' ',' '],'c','\n',...,'\n',[' ',' ',...,' '],'z']
          - implicit print (smashes the above together, printing the desired output)

Я бы даже позволил, [["a"],[" ","b"],[" "," ","c"],...]так как список символов является альтернативным определением строки, но кортеж, похоже, не подходит :)
Стивен

Да, я так и думал.
Джонатан Аллан

1
... обратите внимание, что в приведенном выше примере каждый "..."представляет собой список символов, так что в действительности у [[['a']],[[[' '],['b']],[[' ',' '],['c']],...]Jelly нет строк, только списки.
Джонатан Аллан

26Ḷ⁶ẋżØaYсохраняет байт.
Деннис

ØaJ’⁶ẋżдля 7, для вашей альтернативной версии.
Утренняя монахиня


5

Алиса , 22 20 байт

52E&waq'a+q&' d&o]k@

Попробуйте онлайн!

Несмотря на то, что выходные данные являются строкой, оказывается, что порядковый режим не является подходящим решением для этой задачи.

объяснение

52E&w             k@     do 26 times
     a                   push 10 (LF)
      q                  push current tape position (initially zero)
       'a+               add the ASCII code for "a"
          q&'            push 32 (space) a number of times equal to tape position
              d&o        output entire stack
                 ]       move tape position one space to the right

Предыдущее решение

["za/?rO&
' !]\"ohkw@/

Попробуйте онлайн!

Я прошел около десяти 23-байтовых решений, прежде чем смог найти это.

объяснение

Эта программа использует ленту для отслеживания количества пробелов для вывода. В кардинальном и порядковом режимах используется одна и та же лента, но они имеют отдельные головки. Два режима имеют разные интерпретации того, что они видят на ленте, и программа полностью использует это различие.

Команды выполняются в следующем порядке:

[                   move cardinal tape position left
 "za"               push this string (as a string, since the final " is in ordinal mode)
     r              interpolate to entire range (i.e., the lowercase alphabet backward)
      h             split first character from string
       &            for each character in string: push that character and...
        w                                         push current address onto return address stack
         ' !        (cardinal mode) place 32 (space) at current cardinal tape position
            ]       (cardinal mode) move cardinal tape position right
             ?      (back to ordinal mode) read string from tape starting at ordinal tape position
                    this string will consist of n-1 spaces.
              o     output string of spaces
               O    output top of stack (current letter) followed by newline
                k   return to pushed return address. 
                    after 26 times through this loop, the return address stack will be empty and this is a no-op.
                 @  terminate

5

Brainfuck, 103 байта

>-<-----[[<+>->>+++>-<<<]>++]<<<<<<<<<[-]>>>-[<[-]<[-]<[>+>+<<-]>>[<<+>>-]<[>>>>.<<<<-]<+>>>>.+>>.<<<-]

Попробуйте онлайн!

Расположение переменных несколько улучшается.

объяснение

>-<-----[[<+>->>+++>-<<<]>++]   Initializes the tape.
<<<<<<<<<[-]>[-]>>-             Resets variables that
                                need to be at 0.
[                               For loop (25 to 0).
 <[-]<<[>+>+<<-]>>[<<+>>-]      Copy the spaces count in
                                order to use it in a loop.
 <[>>>>.<<<<-]                  Prints the spaces.
                                Prints the character followed
 <+>>>>.+>>.<<<-                by a new line. Also decrements
                                the main loop counter.
]

5

Google Sheets, 69 байт

=ArrayFormula(JOIN("
",REPT(" ",ROW(A1:A26)-1)&CHAR(96+ROW(A1:A26))))

Здесь ничего сложного. Единственный прием - использовать ArrayFormulaи ROW(A1:A26)вернуть 26 различных значений для JOINфункции. Вывод выглядит так:

Выход


Я думаю, что Excel 2016 может делать то же самое, TEXTJOINно я не могу вводить формулы массива в онлайн-версии, а сам имею только 2013 год. Формула должна быть такой:

=TEXTJOIN("
",FALSE,REPT(" ",ROW(A1:A26)-1)&CHAR(96+ROW(A1:A26)))

Ввод его в виде формулы массива ( Ctrl+ Shift+ Enter) добавляет фигурные скобки { }с обеих сторон, увеличивая его до 67 байт. Любой, кто может проверить, работает ли он, может использовать его как свой собственный ответ.


5

Семя , 6014 байта

Я не думаю, что это получит какие-либо награды, но просто для удовольствия, вот решение в Seed.

86 11103250503694729158762257823050815521568836599011209889044745493166180250197633623839266491438081837290079379263402288506775397211362446108152606095635373134468715450376738199004596861532212810083090232034321755895588102701453625219810339758989366211308223221344886043229936009486687653111291562495367476364760255760906228050130847228170228716790260998430434027546345063918859356161024202180254514539438087787769611000320430464740566450402368450792375043801526494811596087812709169139468697779440918934518195843690439213251884693846598754642076364755341359062651237754916053099089619667382845958005035392458577634784453744876558142057256976895330859887974064083588368087014591508237946214519271550243549214199679364098489146944338807874570414584343165070707969101892779772740177526390597395955859236589308394889243501541206981604661264930842784772121710695027991351718061777696274815931123342985242351444203296855501870888626347939456384376808446806093364176576945969539054970975848477876079897476093353730443488664472826635815956526890935049081522728044807877072639829234224838977148057506785320443165975265560224605597481381188291535996775480326796788286452216432605854564432262547835415260058472165825285438444435690700488258778785613363062417500848996527077259315494936037544655054620369560227407957368700650031346856230643646273909094915618471799926504192999361174763592054723307855670381682927214117502862645460031555724588536036895597768493827964819026940533784490457441244859937078155137620826821294513857153097135094397278852300032685608169642137925241118197368192392427097109982751185030229544527638686131131545529690698706313745703838144933923021851042677941879847025167921010148923860660695145106913052517930707522151230705792709484338746351589089180137363986003757314611932324492978098101655359729841878862276799317010824753645947659706175083519817734448003718088115457982394423932136760435046136644679525408371158980833993157988971884061469882136904103033944270884697456159261033500286722891139158500027351042265757431184139617566089023339480051231776345929815102059539844917563709940188668873305602146506284075271989710388430531233185164106985265575418252638186398535149202928422854319253947591044830747981534342833040219194969504971457701296402664807369043224201667623773161453335066484102800249947322601702575025462427139266561015140950621152993027466758026351218924607290766894274223554418125824416921899080393405328694235821466034161071834073874727856768719898425047229002772806527172294625623026601313091815217479540688812203850300478145319935479599086534606210099372526810614742385909275512758349679098012967475393301857434507012875239092688018536028125644341148882858752275129016876257290205949225918496182271679312996010157634568807332616541938310641844258434083838017690572891417189135014450484203635258935943095637185443145042430274553211816422809756194554145177421779800554334935224073734034988935790096239926730047370699006392111034056662661567902477446646680125183082979598538506383502737734442490068661537425714549752783861222862366340979663873475326752237893690641570287341027097775099918958849864419430754493042534812120486345363285167685811903366691676146427476942948696624274431993989133835880516551024369474029197791751838810883302415448112237526350703063618171739262753474029252659418383385834751808940073804107171146665382663467460066719556797639176747423279761528061219482681051780434845070421974558638870988408449698678976622755518024906714421419806347234183574860655249471877105716127767795785164699804819127058322715857697491583787449703283625085118896433923054087238479453964363805045497229148813441732912067120594705269402106426011497763749556561398150139686331615167139081591537739333533146667211063179804707883556569241294269430626179579760506971066676011512530066694518309930078451295032445835025178124213221937594928472509588116557231122849491576207720183829735710200290762251904109318007206980645946249679357907549498615310165588678201768095297568708803842208357473777731751349499510116345704811971207818719582793964185192140178454948686109674659005978400204479072321714207828018696339659886683414074211823497880135255138161141724546221354224299071581607979907417508104234534779573666933024250229754952685174194168516481670999039048675109878524061868078078216337487277443941946961426121900907734301692962783139932352047932263834773963592317279425421954035566305805348109175553209815893678595198155962166838761859540063188209014774346841267440789072833797121217961797443744676162541668802226500817146368372390178287945076657776275930590173768326046610094573983886099504933977126798348879838826160714899283593774855907724617352862079916515034033299006419237012240730789008999523238851913897908225482003661109026061857228300111070725651744312468140016983078297938157227595743419983763920290850801438187869169473456288283458163865462359588316419331445070232596307970490434468929587726795603069137946085898481642595124580643542063564880389350236902538522311931690905858973696558714577085714396738993556273941292496636824719451697631982422926675238248502170501569627556395875619564600587531422890212003952929325067813498958390095519100963598626450443103780781917045489137526377521695121594716424797216910752252094749957224424042047863869830458287114846161217532552045343745235776511344577755412402833175338541217548987687334493461236111032661075185714361252784989689657180878190058132112701323898697673356854132286586129946906160482715702618768869398700713988301485421822519104930442450343377920756456344715552821899659777521739288202633751258303637433110490141551780764889912485271829265224821750882760152112536985349681370761157202793523201156381835717321637420939424473215237574260806475544972321933149796156065126465186203580256364372579422208318560608817806013462242728082475787319168695978160861791054731154820533251279706873332364894538291172324730671914083193733203570060223897442373172904974570329139578763294810924815364789498523721281918680145538278976651264

Это переводится в следующую программу Befunge:

vaa{       @>
v#      g02<v
>30g20g`   |
10g-:!v!: < >#<
v,:g02_40g,1- ^
>1+20p$91+, v


4

Добавить ++ , 1069 байт

+97
&
-87
&
+22
&
+66
&
-88
&
+22
&
&
+67
&
-89
&
+22
&
&
&
+68
&
-90
&
+22
&
&
&
&
+69
&
-91
&
+22
&
&
&
&
&
+70
&
-92
&
+22
&
&
&
&
&
&
+71
&
-93
&
+22
&
&
&
&
&
&
&
+72
&
-94
&
+22
&
&
&
&
&
&
&
&
+73
&
-95
&
+22
&
&
&
&
&
&
&
&
&
+74
&
-96
&
+22
&
&
&
&
&
&
&
&
&
&
+75
&
-97
&
+22
&
&
&
&
&
&
&
&
&
&
&
+76
&
-98
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
+77
&
-99
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
+78
&
-100
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+79
&
-101
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+80
&
-102
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+81
&
-103
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+82
&
-104
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+83
&
-105
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+84
&
-106
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+85
&
-107
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+86
&
-108
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+87
&
-109
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+88
&
-110
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+89
&
-111
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+90
&
P

Попробуйте онлайн!

Ага. Это жестко закодировано. Я уверен, что есть лучший способ, и если вы хотите его найти, продолжайте, но этот способ, кажется, работает лучше всего, поскольку Add ++ трудно работать с памятью.


4

R , 59 49 47 байт

-10 байт благодаря джурио

-2 байта благодаря Свену Хоэнштейну

write("diag<-"(matrix("",26,26),letters),"",26)

Печать на стандартный вывод. Outgolfed пользователем 2390246

Попробуйте онлайн!


Вы можете заменить 26^2на, 676чтобы сохранить байт.
Дверная ручка

2
m=matrix("",26,26);diag(m)=letters;write(m,'',26)(49 байт)
Джурио

Для того же количества байтов, вы можете напечатать матрицу, используяcat(m,fill=27)
JAD

1
@djhurio "За такое же количество байтов"
JAD

1
@Giuseppe Команда "diag<-"(x, y)похожа на diag(x) <- y. Значение не присваивается переменной, но возвращается.
Свен Хоэнштайн

4

> <> , 46 44 42 байта

"A"0::?!v" "o1-40.
*(?!;30.>~$:oao1+$1+:d2

Попробуйте онлайн!

объяснение

Line 1:
"a"0::?!v" "o1-40.
"a"0                       :Initialize the stack items (print char and space count)
    ::?!v                  :Duplicate the space count, check if 0, go down if 0
         " "o1-            :Print a space then take 1 from the space count
               40.         :Jump to codepoint row 0 col 4 (this restarts the loop)
Line 2:
*(?!;30.>~$:oao1+$1+:d2
        >~                 :Remove the zeroed space counter off the stack
          $:oao1+          :Place our print char on the top of the stack, duplicate and print it, print a new line, increase it by 1; a->b->c etc
                 $1+       :Place our space count on the top of the stack and increase it by 1
*                   :d2    :Duplicate the space counter, add 26 to the stack
 (?!;                      :Add 0 to the stack, less than compare 0, if the counter is above 0 it terminates
     30.                   :Jump to the first line, (back to printing spaces)

Это совершенно другой дубль из моих предыдущих 46 байтов, поэтому я включил TIO в единственный. 46 байт. Попробуйте онлайн!

Ниже приведена ссылка на сообщения Эминьи, это был первый ответ> <>, но я считаю, что мой достаточно отличается (и сохраняет несколько байтов), чтобы оправдать второй.

Эминья ответ


И теперь мы связаны. Лучше всего, если вы играете в гольф на байте или двух, чтобы быть уверенным;)
Emigna

@Emigna, я думал, что 3 сохраненных байта будет достаточно: о, у меня еще есть работа :)
Teal

4

Haskell , 66 65 58 57 45 43 байта

Спасибо @nimi и @maple_shaft за сохранение 12 14 байтов.

unlines[(' '<$['b'..n])++[n]|n<-['a'..'z']]

Попробуйте онлайн!


1
Вы получили бы тот же счет, но иногда вы можете использовать <$вместо репликации:(' '<$[1..(fromEnum n-97)])
maple_shaft

2
Вы можете изменить предложение @ maple_shaft на (' '<$['b'..n]).
Ними

Поскольку безымянные функции разрешены, в них нет необходимости f=.
nimi

2
Кстати, граф же байт: ['a'..'z']>>= \n->(' '<$['b'..n])++[n,'\n'].
Ними

4

PHP, 23 байта

Примечание: используется кодировка IBM-850.

<?=join(~¶,range(a,z));

Запустите так:

echo '<?=join(~¶,range(a,z));' | php -n;echo
# With default (utf8) terminal:
echo '<?=join("\v",range(a,z));' | php -n;echo

объяснение

Создайте массив всех символов алфавита, соедините его вертикальной вкладкой в ​​качестве клея.


4

брейкфук , 80 байт

++++++++[>+>++++>++++++++>+++<<<<-]>++>>+>++[->[<<<.>>>->+<]>+[-<+>]<<<.+<<.>>>]

Попробуйте онлайн!

отформатирован:

++++++++[>+>++++
>++++++++>+++<<<
<-]>++>>+>++[->[
<<<.>>>->+<]>+[-
<+>]<<<.+<<.>>>]

Использует простую мультипликативную функцию генерации для помещения некоторых констант в память, затем повторяет процесс печати N пробелов, затем 'A' + Nдля N = 0..25.

Аннотированный:

INITIALIZE TAPE: 10 32 65 >26< 0 0
C_NEWLINE: 10
C_SPACE: 32
V_ALPHA: 65
V_COUNTER: 26
V_PREFIX: 0
V_PREFIX_TEMP: 0
++++++++[>+>++++>++++++++>+++<<<<-]>++>>+>++

WHILE V_COUNTER != 0  [-
   "PRINT C_SPACE REPEATED V_PREFIX TIMES"
   "V_PREFIX_TEMP = V_PREFIX"
     V_PREFIX TIMES  >[-
       PRINT C_SPACE <<<.>>>
       INCREMENT V_PREFIX_TEMP >+<
     ]
   "V_PREFIX = V_PREFIX_TEMP PLUS 1"
     V_PREFIX_TEMP PLUS 1 TIMES  >+[-
       INCREMENT V_PREFIX <+>
     ]
   PRINT C_ALPHA <<<.
   INCREMENT C_ALPHA +
   PRINT C_NEWLINE <<.
>>>]

4

RProgN 2 , 5 байтов

aS`\x0B.

\ x0B - литерал вертикальной табуляции

Это просто берет строчный алфавит, разбивает его и соединяет с вертикальными вкладками. Это производит ожидаемый эффект на определенных терминалах Bash.

Запуск сценария

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.