Друк / вивід L-фабета


65

Натхненний друком Джорджа Гібсона "Друк табули" .

Ви повинні надрукувати / вивести саме цей текст:

ABCDEFGHIJKLMNOPQRSTUVWXYZ
BBCDEFGHIJKLMNOPQRSTUVWXYZ
CCCDEFGHIJKLMNOPQRSTUVWXYZ
DDDDEFGHIJKLMNOPQRSTUVWXYZ
EEEEEFGHIJKLMNOPQRSTUVWXYZ
FFFFFFGHIJKLMNOPQRSTUVWXYZ
GGGGGGGHIJKLMNOPQRSTUVWXYZ
HHHHHHHHIJKLMNOPQRSTUVWXYZ
IIIIIIIIIJKLMNOPQRSTUVWXYZ
JJJJJJJJJJKLMNOPQRSTUVWXYZ
KKKKKKKKKKKLMNOPQRSTUVWXYZ
LLLLLLLLLLLLMNOPQRSTUVWXYZ
MMMMMMMMMMMMMNOPQRSTUVWXYZ
NNNNNNNNNNNNNNOPQRSTUVWXYZ
OOOOOOOOOOOOOOOPQRSTUVWXYZ
PPPPPPPPPPPPPPPPQRSTUVWXYZ
QQQQQQQQQQQQQQQQQRSTUVWXYZ
RRRRRRRRRRRRRRRRRRSTUVWXYZ
SSSSSSSSSSSSSSSSSSSTUVWXYZ
TTTTTTTTTTTTTTTTTTTTUVWXYZ
UUUUUUUUUUUUUUUUUUUUUVWXYZ
VVVVVVVVVVVVVVVVVVVVVVWXYZ
WWWWWWWWWWWWWWWWWWWWWWWXYZ
XXXXXXXXXXXXXXXXXXXXXXXXYZ
YYYYYYYYYYYYYYYYYYYYYYYYYZ
ZZZZZZZZZZZZZZZZZZZZZZZZZZ

(Так, я набрав це вручну)

Ви можете використовувати всі малі регістри замість усіх великих літер.

Однак ваш вибір справи повинен бути узгодженим у всьому тексті.

Правила / Вимоги

  • Кожне подання повинно бути або повною програмою, або функцією. Якщо це функція, її потрібно запускати, лише додаючи виклик функції в нижній частині програми. Все інше (наприклад, заголовки в C), має бути включено.
  • Якщо це можливо, надайте посилання на сайт, де можна перевірити вашу програму.
  • Ваша програма не повинна нічого писати STDERR.
  • Стандартні лазівки заборонені.
  • Ваша програма може виводити в будь-якому випадку, але вона повинна бути надрукована (не масив чи подібне).

Оцінка балів

Програми оцінюються за байтами, за замовчуванням у UTF-8 або іншим набором символів на ваш вибір.

Зрештою, відповідь з найменшими байтами переможе.

Подання

Щоб переконатися, що ваша відповідь відображається, будь ласка, почніть свою відповідь із заголовка, використовуючи наступний шаблон Markdown:

# Language Name, N bytes

де Nрозмір вашого подання. Якщо ви покращите свій рахунок, ви можете зберегти старі бали у заголовку, прокресливши їх. Наприклад:

# Ruby, <s>104</s> <s>101</s> 96 bytes

Якщо ви хочете включити у свій заголовок декілька чисел (наприклад, тому що ваш результат становить суму двох файлів або ви хочете окремо вказати штрафні санкції для перекладача), переконайтесь, що фактичний результат - це останнє число у заголовку:

# Perl, 43 + 2 (-p flag) = 45 bytes

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

# [><>](http://esolangs.org/wiki/Fish), 121 bytes

Таблиця лідерів

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



5
Чи може вихід (як повернене значення функції) бути масивом рядків?
Дверна ручка

@Doorknob я б сказав, що ні.
Leaky Nun

@GeorgeGibson Так.
Leaky Nun

@LeakyNun Чи дозволений останній рядок?
Якубе

Відповіді:


61

Excel, 19 604 байт

=CHAR(64+MAX(COLUMN(),ROW()))

Вставте цю формулу A1, а потім перетягніть все A1:Z26.

Кількість байтів:

  1. Формула - 27 байт.
  2. Копіювати його потрібно 26 ^ 2 рази. 27 * 26 * 26 = 19604.
  3. Я та інші думали, що оцінка повинна бути нижчою, оскільки вам не потрібно вводити формулу знову і знову. Я зараз думаю, що це не має значення - ми рахуємо розмір програми, а не роботу, витрачену на її написання.
  4. Для порівняння - див. Цю відповідь на 28 187 символів JS - очевидно, хтось генерував це, а не вводив усе це, але він не змінює свого розміру.

22
це змусило мене сміятись, ви повинні розмістити на мета-sking, як рахувати це
Rohan Jhunjhunwala

19
Справедлива кількість для цього складе 45: (1) введіть A1:Z26у поле Ім'я (зліва від рядка формул) [ 7 байт]; (2) набрати =CHAR(64+MAX(COLUMN(),ROW()))+ ввести у рядок формул [ 30 байт]; (3) Alt E I D Alt E I Rвведіть вибраний діапазон [ 8 байт]. Всього 7 + 30 + 8 = 45 .
Йофан

8
Я не думаю, що підрахунок автозаповнення вважається меншою кількістю байтів. Тоді я міг би, мабуть, зменшити свою Java вниз, стверджуючи, що мережини заповнюються автоматично. Я думаю, що міра натисканням на 46 натискань клавіш більш справедлива
Rohan Jhunjhunwala

3
@rohan Я, наприклад, був би чудово з вами, називаючи Java + автозаповненням мови.
Джон Дворак

5
@Joffan [A1:Z26]="=CHAR(64+MAX(COLUMN(),ROW()))"- 40 байт і все ще елегантно
Анастасія-Романова 秀

39

Vim, 43 байти

:h<_↵jjYZZPqqlmaYp`ajyl:norm v0r♥"↵`ajq25@q

Тут представлено Return ( 0x0a) і являє собою Ctrl-R ( 0x12).

Не зовсім така коротка, як моя відповідь Tabula Recta, але ...

введіть тут опис зображення


3
що. то. пекло. є. це. божевільний магія.
haneefmubarak

1
Яку сторінку допомоги ви відкриваєте? Коли я роблю h<_↵це приносить мені:help at_t
DJMcMayhem

Я відкриваюсь v_b_<_exampleу Vim 7.4 для Cygwin.
Лінн

@haneefmubarak Так, це магія Віма.
Хром

28

Желе, 6 байт

ØA»'j⁷

Спробуйте тут. Якби я вчора не лінувався і втілив цю однобайтову альтернативу j⁷(приєднайтесь до нових рядків) ...

ØA      The uppercase alphabet.
  »'    Table of max(x, y).
    j⁷  Join by newlines.

7
Аргу, ніндзя за кілька хвилин ... Ця альтернатива не допомогла б, оскільки ланцюг розкрутиться.
Денніс

Дурне запитання, але якщо це 6 байт, у якому наборі символів це?
Містер Лістер

@MrLister: Я додав посилання на кодову сторінку Jelly у назві відповіді.
Лінн

Приєднуйтесь до linefeed є Y.
PurkkaKoodari

@ Pietu1998 Я думаю, що Yпост датує виклик, хоча
caird coinheringaahing


16

/// , 141 94 92 82 байт

/:/\\\\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#
\/a\///A/#

Спробуйте в Інтернеті: Демонстрація

Досить весела мова.

Пояснення:

Скоротіть код, щоб надрукувати квадрат 4х4:

/:/\\\\A//#/:b:c:d://:/\/a#
\/a\///A/#

Перша заміна /:/\\\\A/замінює :на \\A. Це дає:

/#/\\Ab\\Ac\\Ad\\A//\\A/\/a#
\/a\///A/#

Потім /#/\\Ab\\Ac\\Ad\\A//\\A/замінюється #на \Ab\Ac\Ad\A:

/\\A/\/a\Ab\Ac\Ad\A
\/a\///A/\Ab\Ac\Ad\A

Тепер /\\A/\/a\Ab\Ac\Ad\A<newline>\/a\//кожний \Aв наступному коді замінює на /aAbAcAdA<newline>/a/, тому це призводить до:

/A//aAbAcAdA
/a/b/aAbAcAdA
/a/c/aAbAcAdA
/a/d/aAbAcAdA
/a/

Тепер перша частина /A//видаляє всі As.

abcd
/a/b/abcd
/a/c/abcd
/a/d/abcd
/a/

Перші п’ять символів abcd<newline>надрукуються. Наступна команда /a/b/замінює aна b, в результаті чого:

bbcd
/b/c/bbcd
/b/d/bbcd
/b/

Знову bbcd<newline>друкуються перші п’ять символів . Наступна команда /b/c/замінюється bна c:

cccd
/c/d/cccd
/c/

Знову cccd<newline>друкуються перші п’ять символів . Наступна команда /c/d/замінюється cна d:

dddd
/d/

Перші п’ять символів dddd<newline>надрукуються. А наступна команда /d/неповна і тому нічого не робить.


Чорт, це розумно. Хороша робота. :) Будь-які ідеї для вирішення цих завдань до виклику tabula recta?
Мартін Ендер

@MartinEnder Ні, ще не. Подивлюся ввечері. Через цю проблему перерва на обід розширилася вже на повну годину (вдвічі більше звичайної).
Jakube

Я щось придумав (із великою допомогою ваших ідей, особливо як ви змінюєте наступні інструкції для обробки одного персонажа за іншим).
Мартін Ендер


10

Математика, 69 65 57 байт

Збережено 8 байт завдяки @MartinEnder .

FromCharacterCode[64+Max~Array~{26,26}]~StringRiffle~"
"&

Анонімна функція. Не приймає введення і повертає рядок як вихід. В основному просто бере char('A' + max(x, y))для всіх x , y від 1 до 26.


5
Поздравляю 10k!
Loovjo

9

/// , 348 байт

/|/\/\///v/NNN|u/MMM|t/LLL|s/WXYZ|r/OOO|q/KLMa|p/RRRR|o/QQQQ|n/PPPP|m/SSS|l/EFGc|k/RSTb|j/UUUU|i/TTTT|h/WWW|g/VVV|f/XXXX|e/ZZZZZ|d/YYYYY|c/HIJq|b/UVs
|a/NOPQk/ABCDlBBCDlCCCDlDDDDlEEEElFFFFFFGcGGGGGGGcHHHHHHHcIIIIIIIIIJqJJJJJJJJJJqKKKKKKKKKKqttttMauuuuMavvvvNarrrrrPQknnnnQkooooQkppppRkmmmmmmSTbiiiiibjjjjjbgggggggVs
hhhhhhhWs
ffffffYZ
dddddZ
eeeeeZ

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

Я використовував ту саму методику, щоб будувати це, як і для моєї /// відповіді на виклик, на якому ґрунтувався . Однак мені довелося виправити скрипт CJam, оскільки він неправильно обробляв підрядки, які можуть перекривати себе.


Мені справді потрібно вивчити цю мову ...
Джордж Гібсон

9

Сітківка , 41 байт

Кількість байтів передбачає кодування ISO 8859-1. Провідна передача ліній є значною.


26$*Z
{`^[^A].+
$&¶$&
}T0-2`L`_L`^(.)\1+

Пояснення


26$*Z

Встановіть рядок на 26 копій Z. Потім {...}доручіть Retina виконати дві інші інструкції в циклі, поки рядок не перестане змінюватися.

{`^[^A].+
$&¶$&

Дублюйте перший рядок, якщо він не починається з A.

}T0-2`L`_L`^(.)\1+

Це стадія транслітерації. Він застосовується лише в тому випадку, якщо рядок починається щонайменше з двох копій одного і того ж символу. Якщо так, усі, крім останнього, символи зменшуються. Декрементація відбувається шляхом зіставлення L(верхнього алфавіту великого регістру) до _L(порожній, а потім алфавіт верхнього регістру). Значення "всі, крім останнього" позначається лімітом, -2який говорить Ретіні лише транслітерацію всіх символів до другого до останнього в матчі.

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


2
Congratz за 100k! :)
Yytsi



7

R, 58 байт

l=LETTERS;for(i in 1:26){l[2:i-1]=l[i];cat(l,"\n",sep="")}

Завдяки перевазі оператора 2:i-1еквівалентно 1:(i-1). Використовується вбудована константа, LETTERSяка містить алфавіт у верхньому регістрі. Все інше досить зрозуміле.
Використання:

> l=LETTERS;for(i in 1:26){l[2:i-1]=l[i];cat(l,"\n",sep="")}
ABCDEFGHIJKLMNOPQRSTUVWXYZ
BBCDEFGHIJKLMNOPQRSTUVWXYZ
CCCDEFGHIJKLMNOPQRSTUVWXYZ
DDDDEFGHIJKLMNOPQRSTUVWXYZ
EEEEEFGHIJKLMNOPQRSTUVWXYZ
FFFFFFGHIJKLMNOPQRSTUVWXYZ
GGGGGGGHIJKLMNOPQRSTUVWXYZ
HHHHHHHHIJKLMNOPQRSTUVWXYZ
IIIIIIIIIJKLMNOPQRSTUVWXYZ
JJJJJJJJJJKLMNOPQRSTUVWXYZ
KKKKKKKKKKKLMNOPQRSTUVWXYZ
LLLLLLLLLLLLMNOPQRSTUVWXYZ
MMMMMMMMMMMMMNOPQRSTUVWXYZ
NNNNNNNNNNNNNNOPQRSTUVWXYZ
OOOOOOOOOOOOOOOPQRSTUVWXYZ
PPPPPPPPPPPPPPPPQRSTUVWXYZ
QQQQQQQQQQQQQQQQQRSTUVWXYZ
RRRRRRRRRRRRRRRRRRSTUVWXYZ
SSSSSSSSSSSSSSSSSSSTUVWXYZ
TTTTTTTTTTTTTTTTTTTTUVWXYZ
UUUUUUUUUUUUUUUUUUUUUVWXYZ
VVVVVVVVVVVVVVVVVVVVVVWXYZ
WWWWWWWWWWWWWWWWWWWWWWWXYZ
XXXXXXXXXXXXXXXXXXXXXXXXYZ
YYYYYYYYYYYYYYYYYYYYYYYYYZ
ZZZZZZZZZZZZZZZZZZZZZZZZZZ

Новий користувач пропонує запропонувати вашу відповідь тут
Kritixi Lithos,

7

Сесос , 25 байт

0000000: 2829c0 756fc6 aecae2 aecd9c 39e09e 099c63 7d8e3d  ().uo.......9....c}.=
0000015: 65a7c0 39                                         e..9

Спробуйте в Інтернеті! Поставте прапорець Налагодження, щоб побачити створений код SBIN.

Збірка Sesos

Бінарний файл, описаний вище, був сформований шляхом складання наступного коду SASM.

add 26
jmp
    jmp
        rwd 1, add 1, rwd 1, add 1, fwd 2, sub 1
    jnz
    rwd 2, add 64
    jmp
        fwd 2, add 1, rwd 2, sub 1
    jnz
    fwd 1, sub 1
jnz
fwd 1
jmp
    jmp
        rwd 1, add 1, fwd 1, sub 1
    jnz
    nop
        rwd 1
    jnz
    fwd 1
    jmp
        put, add 1, fwd 1
    jnz
    fwd 1
    jmp
        put, fwd 1
    jnz
    add 10, put, get
    nop
        rwd 1
    jnz
    fwd 1
; jnz (implicit)

Як це працює

Почнемо з ініціалізації стрічки до ABCDEFGHIJKLMNOPQRSTUVWXYZ. Це так.

Запишіть 26 у клітинку, залишивши стрічку в наступному стані.

                                                       v
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 0

Поки комірка під головою даних не дорівнює нулю, робимо наступне.

Скопіюйте номер у дві клітинки зліва та додайте 64 до крайньої лівої копії.

                                                   v
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 90 26 0 0

Перемістіть крайню ліву копію до початкового місця, а потім відніміть 1 від крайньої правої копії.

                                                     v
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 90 0

Процес зупиняється після 26 ітерацій, оскільки до цього часу найправіша копія дорівнює 0 . Переміщаємо комірку праворуч, тому остаточний стан стрічки після ініціалізації наступний.

     v
0 0 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

Тепер ми готові генерувати вихід, повторюючи наступний процес, поки комірка під головою даних не дорівнює нулю.

Спочатку переміщуємо вміст комірки під головою даних на один блок ліворуч, потім переміщуємо ліворуч до останньої комірки з ненульовим вмістом.

   v
0 65 0 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

Тепер ми друкуємо всі комірки, починаючи з тієї, що знаходиться під головою даних, і рухаємося правою до тих пір, поки не знайдемо комірку 0 , збільшуючи кожну друковану комірку після її друку. Після друку Aстрічка виглядає наступним чином.

     v
0 66 0 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

Тепер ми рухаємося праворуч, знову друкуючи всі комірки, поки не з’явиться 0- ячейка. Після друку BCDEFGHIJKLMNOPQRSTUVWXYZстрічка виглядає наступним чином.

                                                                                  v
0 66 0 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

Тепер ми записуємо 10 до поточної комірки, друкуємо відповідний символ (linefeed) та нуль комірки із закликом до getпустого вводу, залишаючи стрічку незмінною.

Нарешті, переходимо до останнього ненульового зліва, готуючи стрічку до наступної ітерації.

        v
0 66 0 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

Наступна ітерація схожа. Спочатку переміщаємо 66 однієї комірки вліво, друкуємо обидві 66 комірок ( BB) і збільшуємо їх до 67 , потім друкуємо інші ненульові комірки праворуч ( CDEFGHIJKLMNOPQRSTUVWXYZ) і, нарешті, розміщуємо дані голови на 67 , залишаючи стрічку наступним чином .

           v
0 66 66 0 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

Після ще 24 повторень і після друку ZZZZZZZZZZZZZZZZZZZZZZZZZZта подачі ліній стрічки залишаються в наступному стані.

                                                                                  v
0 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 0 0

Переміщення головки даних ліворуч до наступної ненульової комірки залишить її у своєму поточному положенні, тому комірка під нею дорівнює 0 і цикл закінчується.



6

Матлаб / Октава, 43 39 байт

1 байт вилучено завдяки ідеї @ beaker використовувати [...,'']для перетворення в char.

@()[91-rot90(gallery('minij',26),2),'']

Це анонімна функція, яка повертає двовимірний масив символів.

Спробуйте це на Ideone .

Пояснення

gallery('minij',...) дає матрицю, в якій кожен запис дорівнює мінімуму індексів його рядків і стовпців:

 1     1     1     1  ...
 1     2     2     2
 1     2     3     3
 1     2     3     4
 ...

Це повертається на 180 градусів за допомогою rot90(...,2):

26    25    24    23  ...
25    25    24    23
24    24    24    23
23    23    23    23
...  

91-...Операція дає ASCII - коди прописних літер:

65    66    67    68
66    66    67    68
67    67    67    68
68    68    69    68 ...
...

Нарешті [...,'']об'єднується горизонтально з порожнім рядком. Це призводить до перетворення в char.


1
Дуже розумне використанняgallery
Suever

2
Шкода, що немає gallery('maxij',...), а? ;)
Мартін Ендер

@MartinEnder Всього! :-) BTW, я чекаю на Mathematica вбудований ...
Луїс Мендо

Ви довго чекаєте, це виклик на основі струн. : P
Мартін Ендер

6

PowerShell v2 +, 76 52 40 байт

65..90|%{-join[char[]](,$_*$i+++$_..90)}

Петлі від 65до 89. Кожна ітерація, ми побудувавши масив з допомогою коми-оператору , який складається з поточного числа , $_помноженого на пост-збільшенні змінних хелперів $i++, зчеплений з масивом поточного числа $_до 90. Це інкапсульовано у складі масиву char та масиву та -joinразом у рядку. Наприклад, для першої ітерації цей масив був би еквівалентним 65..90або цілому алфавіту. Другою ітерацією було б 66+66..90або весь алфавіт з Bповторним і ні A.

Усі вони залишилися на конвеєрі в кінці програми (як масив), а друк на консолі неявний (за замовчуванням .ToString()для масиву відокремлюється новий рядок, тому ми отримуємо це безкоштовно).

PS C:\Tools\Scripts\golfing> .\print-the-l-phabet.ps1
ABCDEFGHIJKLMNOPQRSTUVWXYZ
BBCDEFGHIJKLMNOPQRSTUVWXYZ
CCCDEFGHIJKLMNOPQRSTUVWXYZ
DDDDEFGHIJKLMNOPQRSTUVWXYZ
EEEEEFGHIJKLMNOPQRSTUVWXYZ
FFFFFFGHIJKLMNOPQRSTUVWXYZ
GGGGGGGHIJKLMNOPQRSTUVWXYZ
HHHHHHHHIJKLMNOPQRSTUVWXYZ
IIIIIIIIIJKLMNOPQRSTUVWXYZ
JJJJJJJJJJKLMNOPQRSTUVWXYZ
KKKKKKKKKKKLMNOPQRSTUVWXYZ
LLLLLLLLLLLLMNOPQRSTUVWXYZ
MMMMMMMMMMMMMNOPQRSTUVWXYZ
NNNNNNNNNNNNNNOPQRSTUVWXYZ
OOOOOOOOOOOOOOOPQRSTUVWXYZ
PPPPPPPPPPPPPPPPQRSTUVWXYZ
QQQQQQQQQQQQQQQQQRSTUVWXYZ
RRRRRRRRRRRRRRRRRRSTUVWXYZ
SSSSSSSSSSSSSSSSSSSTUVWXYZ
TTTTTTTTTTTTTTTTTTTTUVWXYZ
UUUUUUUUUUUUUUUUUUUUUVWXYZ
VVVVVVVVVVVVVVVVVVVVVVWXYZ
WWWWWWWWWWWWWWWWWWWWWWWXYZ
XXXXXXXXXXXXXXXXXXXXXXXXYZ
YYYYYYYYYYYYYYYYYYYYYYYYYZ
ZZZZZZZZZZZZZZZZZZZZZZZZZZ

6

C #, 147 байт

void e(){for(int i=0,j=97;i<26;i++,j++)Console.WriteLine(new string((char)j,i)+new string(Enumerable.Range(j,26-i).Select(n=>(char)n).ToArray()));}

інколи мені цікаво, чому я навіть намагаюся

редагувати: виправити

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


Я насправді не тому, що я також використовую консоль, яка вимагає від мене ввести System.Console, який ніхто не робить.
downrep_nation

врахуйте, що встановлення j = 97, і я beilieve (char) j + i + "" може працювати і бути коротшим, але я знаю лише java, тому я не впевнений
Rohan Jhunjhunwala

j використовується як зміщення першого символу. якщо мені робити j = 97, мені потрібно зробити j ++ aswell
downrep_nation

2
що сумно, це те, що його ~ 50% довше, ніж рішення, яке виходить на голову
fyrepenguin

1
Це не дає правильної відповіді, коли я запускаю її, чи можете ви додати посилання, щоб спробувати?
TheLethalCoder

5

MATL, 10 байт

lY2t!2$X>c

Демонстрація в Інтернеті (Якщо у вас є проблеми з цим перекладачем, пінг мені в чаті MATL . Також, ось посилання TIO, якщо у вас є проблеми)

Пояснення

lY2     % Push an array of characters to the stack: 'AB...Z'
t!      % Duplicate and transpose
2$X>    % Take the element-wise maximum between these two (with expansion)
c       % Explicitly convert back to characters
        % Implicitly display the result.

5

Python 2, 76 70 68 байт

a=range(65,91)
i=0
for c in a:a[:i]=[c]*i;i+=1;print'%c'*26%tuple(a)

Дуже схожа на мою відповідь на пов'язане питання .

Збережено 2 байти завдяки @xnor (знову)!


1
Так само , як і раніше, коротше , щоб включити execв forвикористовувати поточний символ ітеріруемого над: for c in a:a[:i]=[c]*i;i+=1;print'%c'*26%tuple(a).
xnor

Ого, це чудово: D
ABcDexter


4

05AB1E , 9 байт

Код:

AAv¬N×?=¦

Пояснення:

AA         # Push the alphabet twice.
  v        # For each in the alphabet.
   ¬       # Get the first character and
    N×     # multiply by the iteration variable.
      ?    # Pop and print.
       =   # Print the initial alphabet without popping.
        ¦  # Remove the first character of the initial alphabet and repeat.

Використовує кодування CP-1252 . Спробуйте в Інтернеті! .


4

Javascript ES6, 81 байт

x=>[...a='ABCDEFGHIJKLMNOPQRSTUVWXYZ'].map((x,y)=>x.repeat(y)+a.slice(y)).join`
`

Самопояснення.


Чи буде щось на зразок [... "ПІСЛЯ"]. Мапа буде коротшою?
МерМонті

Це був мій оригінальний підхід, але це на 2 байти довше.
Mama Fun Roll

Такий підхід я подумав, побачивши цей виклик
мерМонти,

Взагалі, краще використовувати replaceбільше mapпід час ітерації рядків char-by-char.
Mama Fun Roll

1
В a.slice(y)якому змінна буде aвзялося?
gcampbell

4

R, 56 байт

Не майте жодного коментаря, але відповідь @plannapus можна трохи переграти:

for(i in 1:26)cat({L=LETTERS;L[1:i]=L[i];L},"\n",sep="")

в результаті виходить однаковий вихід:

ABCDEFGHIJKLMNOPQRSTUVWXYZ
BBCDEFGHIJKLMNOPQRSTUVWXYZ
CCCDEFGHIJKLMNOPQRSTUVWXYZ
DDDDEFGHIJKLMNOPQRSTUVWXYZ
EEEEEFGHIJKLMNOPQRSTUVWXYZ
FFFFFFGHIJKLMNOPQRSTUVWXYZ
GGGGGGGHIJKLMNOPQRSTUVWXYZ
HHHHHHHHIJKLMNOPQRSTUVWXYZ
IIIIIIIIIJKLMNOPQRSTUVWXYZ
JJJJJJJJJJKLMNOPQRSTUVWXYZ
KKKKKKKKKKKLMNOPQRSTUVWXYZ
LLLLLLLLLLLLMNOPQRSTUVWXYZ
MMMMMMMMMMMMMNOPQRSTUVWXYZ
NNNNNNNNNNNNNNOPQRSTUVWXYZ
OOOOOOOOOOOOOOOPQRSTUVWXYZ
PPPPPPPPPPPPPPPPQRSTUVWXYZ
QQQQQQQQQQQQQQQQQRSTUVWXYZ
RRRRRRRRRRRRRRRRRRSTUVWXYZ
SSSSSSSSSSSSSSSSSSSTUVWXYZ
TTTTTTTTTTTTTTTTTTTTUVWXYZ
UUUUUUUUUUUUUUUUUUUUUVWXYZ
VVVVVVVVVVVVVVVVVVVVVVWXYZ
WWWWWWWWWWWWWWWWWWWWWWWXYZ
XXXXXXXXXXXXXXXXXXXXXXXXYZ
YYYYYYYYYYYYYYYYYYYYYYYYYZ
ZZZZZZZZZZZZZZZZZZZZZZZZZZ

Хоча, якщо відповідь як матриця дозволена ( тобто як тут ), ми могли б зробити 49 байт:

sapply(1:26,function(l){L=LETTERS;L[1:l]=L[l];L})

Я залишив коментар до відповіді @plannapus, що перенаправляє його до вашої відповіді
Kritixi Lithos,

Це добре, але є ще коротший підхід
Джузеппе

4

R , 42 41 байт

write(outer(L<-LETTERS,L,pmax),'',26,,'')

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

Наступний найкоротший R відповідь ще трохи занадто довго , так як він виводить через підрядник. Раніше сьогодні я думав над іншим питанням і зрозумів, що для цього можливий набагато коротший підхід: я генерую матрицю відразу за допомогою outerі pmax(паралельний максимум), а потім друкую її (*) за один крок write.

(*) технічно його транспонірують, але він, на щастя, симетричний по всій його діагоналі.


3

Haskell, 53 46 байт

unlines[(i<$['B'..i])++[i..'Z']|i<-['A'..'Z']]

Повертає один рядок з L-фабетом.

пройдіть через символи iвід Aдо Zта складіть список (length ['B'..i])копій, за якими iслідує [i..'Z']. Об’єднайте елементи між новими рядками.


3

Python 3, 71 65 байт

Завдяки @LeakyNun за -6 байт

r=range(26)
for i in r:print(''.join(chr(max(i,x)+65)for x in r))

Повна програма, яка друкує на STDOUT.

Як це працює

Задамо коди символів буквах алфавіту, з 0за Aв 25протягом Z. Програма циклічно проходить інтервал [0, 25]за допомогою лічильника ліній i, який визначає поточний символ, який потрібно повторити, і довжину повторного розділу, і символьний індекс x. При виклику max(i,x)всі символи нижче повторюваного символу затискаються на код символу того самого. Додавання 65та виклик chrперетворює отримані коди символів у їх еквіваленти ASCII; ''.joinоб'єднує символи, і кожен рядок друкується до STDOUT.

Спробуйте це на Ideone


3

𝔼𝕊𝕄𝕚𝕟, 12 символів / 15 байт

ᶐⓢ⒨Ċ_+ᶐč_)ü⬬

Try it here (Chrome Canary only).

В основному порт моєї відповіді ES6.


Я не добираюся ZZZZZZZZZZZZZZZ...до підсумкового рядка. Лише отримання одного Z.
cwallenpoole

Який браузер ви використовуєте?
Mama Fun Roll


+1, щоб позбутися цієї негативної оцінки. Не працює в Google Chrome, але працює у FireFox.
Кевін Круїссен

Спробував і ФФ, але це не вийшло. Ну добре. Вилучено -1.
cwallenpoole

3

R, 54 байти

v=L=LETTERS;for(i in 2:26){L[1:i]=L[i];v=cbind(v,L)};v

У цьому рішенні використовується вбудована константа RLETTERS , яка ... добре ... перераховує великі літери. Існує також константа lettersдля малих літер.


Я трохи непомітний, але це виводить матрицю, а не точний потрібний текст (тобто бажаний вихід не повинен мати всіх лапок, пробілів, назв рядків, імен тощо).
планування

3

C, 78 70 67 байт

f(i,j){for(;++i<27;puts(""))for(j=0;++j<27;putchar((i>j?i:j)+64));}

У коді використовуються такі методи гольфу для C:

Також правило If it is a function, it must be runnable by only needing to add the function call to the bottom of the program.не забороняє викликати функцію з параметрами (завдяки ABcDexter!).

Спробуйте це на Ideone

Нерозроблена версія (без жодних попереджень з gcc) виглядатиме так:

#include <stdio.h>

#define MAX(x, y) (x>y ? x : y)

int main()
{
    for(int i=0; i<26; i++)
    {
        for(int j=0; j<26; j++)
            printf("%c", MAX(i, j) + 'A');
        printf("\n");
    }
    return 0;
}

Зберегти 8 байт: f(i,j){for(i=0;++i<27;puts(""))for(j=0;++j<27;putchar((i>j?i:j)+64));}. Вам не потрібна повна програма, просто функція, яка виконує одні й ті ж операції кожного разу, коли вона викликається (що це робить).
owacoder

@owacoder Спасибі, виправили це.
сигалор

Чи можете ви видалити це i=0;і зробити функцію дзвінка як f(0,0)?
ABcDexter

1
@ABcDexter Так, це повинно працювати (правило If it is a function, it must be runnable by only needing to add the function call to the bottom of the program., схоже, це не забороняє, оскільки воно не говорить про те, дозволені параметри виклику функції). Я дозволяю mainзателефонувати f(0)все-таки, тому що ініціалізація другого циклу (той, що має jлічильник) необхідний.
сигалор

@sigalor Так. Я спробував себе в C, але побачив, що ваш код коротший :)
ABcDexter

3

Чеддар, 90 байт

(|>26).map(i->String.letters.chars.map((j,k,l)->k<i?l[i]:j).fuse).vfuse.slice(1)

Це String.lettersзанадто довго: /

Довелося додати, .slice(1)тому що введення нового рядка заборонено

Пояснення

(|>26)       // Range from [0, 26)
.map(i->     // Loop through that range
 String.letters.chars // Alphabet array
  .map(               // Loop through alphabet
  (j,k,l) ->          // j = letter, j = index, l = alphabet
    k<i?l[i]:j        // Basically `l[max(k,i)]` 
  ).fuse     // Collapse the array
).vfuse      // Join on newlines

Чеддар, 65 байт (неконкурентоспроможний)

(|>26).map(i->String.letters.map((j,k,l)->k<i?l[i]:j).fuse).vfuse

Працює з нічним відділенням . Неконкуруюча ... сумна частина полягає в тому, що у мене вже були зміни ... просто ніколи не вчинялися; _;


Я подумав щось на зразок 65@"90творів для String.letters
Conor O'Brien
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.