Вы должны напечатать этот точный текст:
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGFEDCBA
ABCDEFEDCBA
ABCDEDCBA
ABCDCBA
ABCBA
ABA
A
Спекуляции
- Дополнительные трейлинг-строки разрешены в конце вывода.
- В конце каждой строки допускаются дополнительные завершающие пробелы (U + 0020), включая дополнительные завершающие новые строки.
- Вы можете использовать все строчные буквы вместо прописных, но нельзя печатать частично строчные, частично заглавные.
- Вы можете вернуть текст как вывод функции вместо печати в полной программе.
счет
Поскольку это треугольник, и у треугольника есть 3 стороны, а 3 - небольшое число, ваш код должен быть маленьким с точки зрения количества байтов.
code-golf
kolmogorov-complexity
alphabet
Дрянная Монахиня
источник
источник
Ответы:
Vim, 37 байт
легенда
источник
:h<_↵↵↵YZZP
), затем записываю макрос (qq…q
), который многократно отсекает букву в верхней строке, делает две ее копии, чтобы увеличить треугольник по вертикали, а затем добавляет отрубленную букву ко всем строкам. вырастить это горизонтально. Я повторяю этот макрос еще 24 раза, чтобы нарисовать полный треугольник.Логотип,
232 207 196190 байтКто-то говорил треугольники?
Вытащите свой компас и транспортир, и давайте сделаем это графическим способом. Геометрия использует равносторонний треугольник для выравнивания результатов. Раньше у меня был равнобедренный треугольник, но он занимал слишком много десятичных знаков. Это изменение также уплотняло вывод, уменьшая количество экранной подготовки и смены шрифта, которые я должен был сделать.
Я использовал онлайн-переводчик Calormen, чтобы уточнить это. Если вам не хватает экранной недвижимости, она обернется, но вы также можете поиграть с некоторыми цифрами, чтобы позаботиться об этом. Я использовал полноэкранный режим «F11» в своем браузере.
r
Процедура рисует линиюn
символов. Символ определяется автоматически в зависимости от того, сколько сегментов ему сказано использовать.b
Параметр рассказывает , сколько временно повернуть так, чтобы буквы указывают в правильном направлении.l
Параметр определяет линейное расстояние между буквами.В
t
Шаги процедуры на следующую позицию и вызываетr
функцию в четыре раза , чтобы создать треугольник, вращающийся в случае необходимости. Я назвал его дважды для вертикальной стороны, потому что это заняло меньше байтов, чем один раз для специальной обработки. Конец процедуры устанавливает черепашку для начала следующего треугольника, на один шаг выше.Z
Это особый случай, поэтому мы просто печатаем его напрямую и вращаем, как будто мы только что закончили треугольник. Наконец,t
вызывается 25 раз.источник
Haskell, 58 байт
Определяет функцию,
t
которая возвращает вывод в виде строки.источник
Желе ,
1613 байтСпасибо @LeakyNun за игру в 3 байта!
Попробуйте онлайн!
Как это устроено
источник
Python, 74 байта
Функция Python 2, которая печатает и не принимает аргументов. Ключевой идеей является создание треугольного паттерна туда-сюда с рекурсией. Сначала рассмотрим эту более простую функцию, которая печатает буквы «А» до «Z» и вниз до «А»:
Функция сначала печатает «A» (код символа 65), затем возвращается к «B» (66) и так далее до «Z» (90). Оттуда он перестает повторяться. По пути возврата обратно в рекурсивный стек он печатает любой символ,
t
напечатанный на том же слое, от «Y» до «A».Основной код делает то же самое, за исключением того, что он накапливается в
s
цепочку букв и печатает строку вверх и внизs+s[-2::-1]
.Спасибо xsot за 2 байта.
В Python 3 то же самое происходит на один байт короче (73 байта), помещая все в одну строку.
источник
f(x=66,s='A')
. Это позволяет обновлятьs
вызов функции вместо тела функции.брейнфук,
1733121119 байтЧуть более читаемая версия:
Объяснение возможно приехать.
источник
05AB1E ,
20 13 126 байтовСохранено 2 байта благодаря Аднану.
Сохранено 6 байт благодаря Magic Octopus Urn и некоторым новым языковым функциям.
Попробуйте онлайн!
объяснение
источник
Œ26£
на.p
, что является префиксной командой. Кроме того , вы можете изменить ,D,
чтобы=
, который печатает без выскакивают.gF,
!Â
очень хороша и очень удобна.û
это новее, чем вызов, и этот ответ не будет конкурировать.J,
262322 байтаобъяснение
источник
f=:,1}.|.
попробуйте этоPython 3, 97 байт
Идео это!
источник
'\n'.join(a+a[-2::-1])
Рубин, 71 байт
Попробуйте это на repl.it
источник
> <> , 60 байт
Попробуйте онлайн!
источник
C
272247234230144137 байт:( Сохранено много байтов (
272 -> 230
) в моем предыдущем методе благодаря отличным подсказкам и трюкам от sigalor ! )( Сохранено почти 100 байт (
230 -> 144
) путем переключения на лучший метод. )Мой первый ответ когда - либо в
C
. Я только недавно начал самообучаться, так что давайте посмотрим, как это происходит.С этим в действии! (Ideone)
источник
main()
тип возвращаемого значения и даже#include <stdio.h>
. GCC (а также такие сайты, как Ideone) согласны с этим. Затем вы можете «передать» определения переменных в список параметров функции. Пустьfor(int i=65;...
станетfor(i=65...
и изменениеmain()
кmain(i)
. Сделайте то же самое для любой другой переменной int (GCC по умолчанию пропускает типыint
).main()
наmain(i)
?i
переменную в инициализации цикла for, вам нужно объявить ее где-нибудь еще. И поскольку (по крайней мере, в C) параметры функции можно использовать как обычные переменные, проблем не должно быть. Кстати, какой компилятор вы используете?C
в Ideone. Я получаю несколько<variable> undeclared
ошибок.JavaScript (ES6), 81 байт
источник
Mathematica 59 байт
источник
//Column
с конца и префикс вашего кода сработаетColumn@
.〚
и〛
как отдельные байты. Я сомневаюсь, что есть однобайтовая кодовая страница, которая имеет их и также поддерживается Mathematica из коробки. Они были бы на три байта в UTF-8, поэтому они не сохраняют ничего поверх обычного[[...]]
. Я также не уверен, насколько это законноColumn
, поскольку он отображает только список строк в блокноте Mathematica. Запуск этого кода из файла скрипта ничего не отобразит. Тем не менее,Print/@
такое же количество байтов и работает в любом случае.[what you see](actual link)
. Ex.[Example Link](https://www.example.com)
, который показывает в качестве примера ссылкуДьялог АПЛ, 18 байт
источник
R,
63 6159 байтПолезно
LETTTERS[0]
не возвращает никаких символов.Редактировать: потерял один благодаря @leakynun
Изменить: еще два благодаря @plannapus
источник
\n
TSQL, 159 байт
скрипка
источник
Javascript (с использованием внешней библиотеки-Enumerable), 135 байт
Ссылка на библиотеку: https://github.com/mvegh1/Enumerable
Объяснение кода: Создайте диапазон целых чисел, начиная с 1, для количества 51. Для каждого напишите строку в соответствии со сложным пред. Сделайте некоторое волшебство JS с глобальными переменными и кэшированием ... и вуаля. Для каждого int в WriteLine мы создаем левый диапазон целых чисел и сохраняем его в глобальном «g», а также String Joining (Write) с
""
разделителем и отображаем каждое int в String, сопоставляя код int. Затем мы объединяем правую часть, беря обращение этой последовательности (и пропуская первый элемент, потому что он будет соответствовать последнему элементу исходного порядка ...), записывая с той же логикой. РЕДАКТИРОВАТЬ: Обновлены внутренние записи в библиотеке. Пустая последовательность теперь напишет пустую строку вместо нуля. Это также побрило 15 байтов от ответаисточник
import sympy
илиfrom sympy import*
в верхней части. В + х Баш ответы различны , потому что вы должны установить только х , не позволит ему каким - то образом.sympy
,numpy
,scipy
и т.д. , все время.Powershell,
6152 байтаСпасибо TimmyD за сохранение 9 байтов!
Прокручивает значения ASCII для заглавных букв вперед, затем назад. Для каждого числа создается массив первых чисел X, удаляется номер X-1, затем добавляется обратная сторона первых чисел X, которые затем преобразуются в символы и объединяются в строку.
источник
65..90..65
по прихоти ранее безуспешно. Думаю, я забыл, что могу просто сложить диапазоны.Чеддер ,
10296796967 байт17 байтов благодаря Downgoat и вдохновение для еще 10.
Тот факт, что строки могут объединять, но не массивы, означает, что мне придется преобразовать два диапазона в строки, объединить, а затем преобразовать обратно в массивы.
Кроме того, тот факт, что
vfuse
создаются ведущие newliens, означает, что мне нужно будет сгенерировать первую строку вручную, а затем сопоставить с остальными.@"
как диада (функция с двумя аргументами) может преобразовывать в строку напрямую, но не работает для обратного диапазона (если первый аргумент больше, чем второй).Диапазон был наполовину включен. После исправления ошибки это стало включительно.
использование
Чеддер, 55 байтов (неконкурентный)
В последней версии со всеми исправлениями ответ таков:
но это было сделано после вызова.
источник
@"(1|>26)
может быть1@"26
String.letters
может быть(65@"91)
String.letters.slice(0,i)
может быть65@"(66+i)
C, 93 байта
Звоните
f()
без аргументов.Попробуйте это на Ideone .
источник
VBA, 94 байта
Позвонить в ближайшее окно с? T
Просто чтобы объяснить, что происходит: я использую функцию Abs дважды, чтобы отразить как перемещение по алфавиту, так и длину строки. Он хорошо подходит для этой задачи из-за единственного экстремального значения в обоих случаях, которое соответствует пересечению нуля переменной pre-Abs.
В качестве простого набора команд в окне VBA Immediate, а не программы или функции, для следующего потребуется 72 байта:
(с благодарностью @GuitarPicker)
источник
Function T:
, заканчивайте с:?T
(хотя это сработает только один раз, потому что после этого вам нужно будет сбросить T на «» - но кому нужно более одного из этих треугольников?)?
ты идешь с ним;
.Python,
7371 байтСпасибо @xnor за рекурсию
объяснение
x
является значением ASCII следующей буквы в алфавитеs
это аккумулятор для алфавитаt
это линия в треугольнике (то естьs
+s backwards
)t
если алфавит сделан (то есть мы в центре)t+f(...)+t
с:x
порядковымs
сопровождается следующим письмомt
сброс наs
+s backwards
+\n
Обновить
\n
(+1) и сокращенные условные (-3) все благодаря @xnorисточник
t
к следующему циклу. Хотя есть дополнительный ведущий символ новой строки;x=66,s='A''
избавляется от этого. Базовый случай может быть сокращен доx/92*t or
.HTML + CSS, 884 символа
(763 символа HTML + 121 символ CSS)
Просто расширение Дырявый Nun «s комментарий о MonkeyZeus » s ответ . (Хотя я могу неправильно прочитать комментарий ...)
источник
Брахилог ,
3729 байтКредиты Fatalize для его помощи во всем.
4 байта благодаря Fatalize и вдохновение для еще 4 байтов.
Попробуйте онлайн!
Предикат 0 (Основной предикат)
Предикат 1 (Вспомогательный предикат)
Это в основном строит палиндром из заданной строки.
источник
,A
в Предикате 1h
, сохранив один байт.:1:2yt.
с:2&.
и добавляя!
(точки выбора разреза) в конце предиката 2.[char:char]y
для генерации sustringsabcd…
вместо~c[A:B]
R
127125 байтНе полностью удовлетворен этим решением, особенно двумя
for
петлями, но не мог прийти с чем-то лучшим!LETTERS
содержит заглавные буквыUngolfed:
ifelse
это более короткий путь для unsingif... else...
и работает следующим образом:ifelse(condition,action if TRUE, action if FALSE)
Другое решение 125 байтов:
источник
Java 131 байт
Без использования строки (131 байт)
Codegolfed
Со строкой (173 байта)
Codegolfed
Благодаря манатворку и Кевину Круйссену
источник
d!=-1
сd>-1
, то же самое для к. (Кстати, вы забыли починить версию для гольфа.)i+=k==1?1:-1
можете играть в гольф двумя вещами: может бытьi+=k
иSystem.out.print((char)c+(c+d<65?"\n":"")),c+=d==1?1:-1);
может бытьSystem.out.print((char)c+((c+=d)<65?"\n":"")));
. Таким образом, всего получается ( 131 байт ):for(int i=0,k=1;i>-1;k=k>-1&i<25?1:-1,i+=k)for(int c=65,d=1;c>64;d=d>-1&c<65+i?1:-1,System.out.print((char)c+((c+=d)<65?"\n":"")));
мозговой трах, 79 байт
отформатирован:
Попробуйте онлайн
источник
Sesos , 27 байт
Попробуйте онлайн! Проверьте Debug, чтобы увидеть сгенерированный код SBIN.
Сесос сборка
Двоичный файл выше был сгенерирован путем сборки следующего кода SASM.
источник
/// , 208 байт
Конечно, не победа, но вот она, предшествующая Мартину Эндеру ...
источник