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


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Має працювати (почніть з backtick; для кожного I в 0 ... 25, спливуть неявний I, збільшить backtick та результат), але він чомусь видає помилку "порожній стек". .
ETHproductions

2
2 байти ?! У якому кодуванні знаходиться ПІВДЕННА СХІДКА один байт?
Вік

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()працює лише один раз .
Денніс

@Dennis Ах, ти правий. Виправлено це.
Дверна ручка

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: Дякую! Відредагуйте це.
Ніл А.

ƶздається настільки досконалим, але це не так :(.
Чарівний восьминога Урн

Λнапевно, ще не було в наявності, але 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.
Арнольд

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

Додавати - об'єднує даний об'єкт у str. Якщо об'єкт є цілим числом, він розглядається як кодова точка і перетворюється в символ перед конкатенацією.


12

R, 38 37 36 байт

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

(Використання writeнатхнене відповіддю @ Джузеппе .)


3
Я клянусь, що спробував це, але не зміг змусити його працювати! Молодці. Ви можете зберегти 1 байт, скориставшись 65:90, оскільки верхній регістр дозволений.
користувач2390246

@ 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 і здебільшого сумісний ззаду, за винятком випадкових автозакорененьких налаштувань для вимкнення). Крім того, менш важливо, ви пропустили +своє пояснення, яке кинуло мене на секунду.
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навіть працює?
Leaky Nun

%*<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 brace для виробництва a b c ... z(розділене місце)
  • ^Kвертикальна табуляція падає курсор вниз на один рядок в тому ж положенні
  • ^HЗабій переміщує курсор назад , щоб стерти один роздільник простору

Спробуйте в Інтернеті . colі tacвикористовуються в нижньому колонтитулі, щоб отримати це для правильного відображення у вікні браузера, але це не потрібно в звичайному терміналі.


Якщо вищевказані неортодоксальні символи управління у висновку занадто сильно розтягнуті для вас, ви можете зробити це:

Bash + загальні комунальні послуги, 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

Спробуйте в Інтернеті . Вертикальна вкладка та зворотна область можуть бути непомітними для вашого браузера, але вони є там (невидимі на хромі, видно на Firefox).

  • col -x рендерінга вводить таким чином, що смішні символи керування замінюються пробілами та новими рядками для отримання однакового візуального результату
  • чомусь colвиводить рядки у зворотному порядку. tacвиправляє це.

Це дуже круто :) (і дякую мета та @Dennis за те, що вони пропонували сортувати відповіді на codegolf за діяльністю, а не за рахунком, щоб мати кращі відповіді замість (дуже нудних) кодекгольфних мов, вбудованих таких: codegolf.meta.stackexchange. com / questions / 10127 /… )
Олів’є Дулак

Багато терміналів відображаються ^Kяк курсор вгору, що є поведінкою, яку colтут слід наслідувати.
Ніл

@Neil так, це має сенс - сторінка colназиває VT "каналом зворотного рядка". xterm, gnome-terminal і OSX-термінал - все це випадає з лінії ...
Digital Trauma

8

Мозг-Флак , 124, 116 , 106 байт

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

Спробуйте в Інтернеті!

Пояснення:

Ця відповідь зловживає висотою стека Nilad , але по-новому, яким я ніколи раніше не користувався, чим я дуже пишаюся. Крім цього, відповідь не надто розумна.

Таким чином, аналізуючи символи, використані в цьому мистецтві ASCII, дійсно є три значення, які часто використовуються:

  • 32 (пробіл),

  • 64 (додайте 64 до N для отримання N-ї літери алфавіту), і

  • 10 (новий рядок)

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

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

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

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

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

Це жахливо. Тож ось як ми робимо це зручніше. Очевидний підхід полягає в натисканні 32на альтернативний стек, завдяки чому наш 32фрагмент стає: (<>({})<>)і наш 64фрагмент стає (<>({})({})<>). Якщо поєднати наш початковий натиск 32 з початковим натисканням 26 , ми можемо приблизно зберегти 8 байт. (мій перший гольф).

Але ось де приходить хитрість, якою я дійсно пишаюся. Оскільки ми не використовуємо альтернативний стек ні для чого іншого, ми можемо також пограти в гольф. Для цього ми натиснемо 4 довільних числа на стек прямо на початку програми. Оскільки ми також натискаємо на 32, це збільшує значення []холоди, до 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

Google Таблиці, 67 65 байт

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

= ArrayFormula (ЯКЩО (ROW (A1: Z) = COLUMN (A1: Z26), CHAR (96 + ROW (A1: Z26)), ""))

Відступаючи від роз'яснення, що робитиме будь-який пробіл, я використав видимо порожні клітинки

Вихід

Дайте мені знати, якщо це не враховується, якщо я неправильно зрозумів кількість байтів або якщо я накрутив якийсь етикет, оскільки це моя перша публікація тут.

Редагувати: виявляється, я можу зберегти 2 байти, залишивши "", оскільки аркуші Google приймуть порожнє значення, якщо значення.


1
Ласкаво просимо до PPCG :) Виглядає добре! Гарна робота, побивши інші відповіді на Google Таблицях!
Стівен

7

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

-2 байти завдяки натяку на ngn.

↑⍨∘-⌸⎕A

[Спробуйте в Інтернеті!] [TIO-j3o0ipjy]

⎕A верхній регістр A lphabet

 між кожною парою (елемент, список індексів) вставити таку негласну функцію:

↑⍨ з елемента (літери) беруть…

 …

- заперечне число покажчиків символів, тобто багато символів ззаду, прокладки спереду з пробілами.

Спробуйте в Інтернеті!


Приємно. Моя спроба J була дещо більш багатослівною. Чи є переклад цих дієслів на J?
Йона

@Jonah Дієслова: є {.і є i.Прислівники: ¨є "0і є ~.
Адам

Дякую. Схоже, що переклад J втрачає деяку стислість:(a.{~97+i.26){."0~-1+i.26
Jonah

@ Adám вихід не виглядає так, як потрібно; підказка: використовуйте для виведення правильної матриці та збережіть 2 байти
п.

@ngn Ви також можете повернути (...) список рядків. Але я розслідую. Редагувати: О так, звичайно!
Adám

6

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

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

Спробуйте в Інтернеті!

Інше рішення, запропоноване @LuisMendo (12 байт), що я тестував його у Windows версії Octave:

diag('a':'z')

Пояснення:

Породжує діагональну матрицю a:z.


@LuisMendo У tio я не можу дати такий же результат. Це вираз, який можна оцінити, що дає бажаний результат :)
rahnema1

Рішення, запропоноване Луїсом, здається, працює на TIO зараз ... Можливо, нова версія Octave?
Стюі Гріффін

Або нова версія tio !?
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вашої альтернативної версії.
Leaky Nun


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@/

Спробуйте в Інтернеті!

Я пройшов десь десять байтових рішень, перш ніж мені вдалося знайти це.

Пояснення

Ця програма використовує стрічку для відстеження кількості пробілів для виведення. Кардинальний і порядковий режими використовують одну і ту ж стрічку, але вони мають окремі головки стрічки. Два режими мають різні інтерпретації того, що вони бачать на стрічці, і програма повністю використовує цю різницю.

Команди виконуються в такому порядку:

[                   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 Таблиці, 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 байт завдяки djhurio

-2 байти завдяки Свена Гогенштейна

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

Друкується до stdout. Перевершив користувач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 збережених байтів буде достатньо: o здогадуюсь, мені ще трохи роботи:
Teal pelican

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)])
копії

2
Ви можете змінити пропозицію @ maple_shaft на (' '<$['b'..n]).
німі

Оскільки неназвані функції дозволені, немає необхідності в цьому f=.
німі

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.