Вдохновленный прослушиваются выходом в @Carcigenicate Clojure ответа «s для печати этого алмаза вызова.
Напечатайте этот точный текст:
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1234567890
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
(От середины кнаружи в обоих направлениях каждая цифра отделяется на один пробел больше, чем предыдущая строка.)
Правила соревнований:
- Там не будет никакого ввода ( или пустой неиспользуемый ввод ).
- Конечные пробелы не являются обязательными.
- Одиночный трейлинг новой строки не является обязательным.
- Пробелы или новые строки не допускаются.
- Возвращение массива строк не допускается. Вы должны либо вывести текст, либо иметь функцию, которая возвращает единственную строку с правильным результатом.
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте придумать как можно более короткий ответ для «любого» языка программирования. - К вашему ответу применяются стандартные правила , поэтому вы можете использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода.
- Также, пожалуйста, добавьте объяснение, если это необходимо.
code-golf
ascii-art
number
kolmogorov-complexity
Кевин Круйссен
источник
источник
Ответы:
SOGL V0.12 , 12 байт
Попробуй здесь! Объяснение:
источник
Python 2 ,
59 57 5655 байтПопробуйте онлайн!
объяснение
i=8
- Присваивает значение8
переменной с именемi
.exec"..."*17
- Выполнить этот блок кода (...
) 17 раз.print(...)
- Вывести результат.' '*abs(i)
- Создать строку с пробелом повторяется|i|
раз..join('1234567890')
- Чередуйте строку, созданную выше1234567890
, так, чтобы|i|
между цифрами вставлялись пробелы.i-=1
- Уменьшитьi
, и, выполняя его 17 раз, он достигает-8
, что создает повторяющийся узор с помощьюabs()
.источник
exec
55 байтов . Использовал аналогичный подход, чтобы получить Python 3 до 57 байт . Не видел никакого очевидного способа сделать это короче, опускаяexec
, но решил, что я бы упомянул это как возможность.Vim, 35 байт:
Объяснение:
источник
05AB1E ,
1413 байтПопробуйте онлайн!
объяснение
источник
s
... имеет ли смысл объединять строку со списком или список со строкой? Я предложу улучшение для Аднана. Ох, и есть.∊
дляû»
.8F9ÝÀNð×ý}».∊
Я сделал сделал космический корабль пасть! И я был взволнован предложением 12-байтового редактирования.C64 ASM, 358 байт (102 байта, скомпилированных с basicstub)
Это самое близкое, что я мог получить из-за очевидных ограничений:
(Возможно, может быть оптимизирован совсем немного)
источник
TSQL,
220148 байтУлучшение, опубликованное ZLK:
Выход:
источник
DECLARE @ VARCHAR(MAX)=''SELECT TOP 17@+=REPLACE('1@2@3@4@5@6@7@8@9@0','@',SPACE(ABS(9-RANK()OVER(ORDER BY object_id))))+' 'FROM sys.objects PRINT @
sys.objects
наsysobjects
, а 1object_id` на «id
Я искал более короткие таблицы вsys
схеме, но ничего короткого не имело таких коротких столбцов, какsysobjects
CAST
(с помощьюPOWER(10)
) наVARCHAR
LOG10
иREPLICATE
:DECLARE @o VARCHAR(MAX)=''SELECT TOP 17 @o+=REPLACE('1@2@3@4@5@6@7@8@9@0','@',replicate(' ',LOG10(POWER(10,ABS(ROW_NUMBER()OVER(ORDER BY id)-9)+1)/10)))+' 'FROM sysobjects PRINT @o
@
сбрить 3 символа.APL (Dyalog) , 22 байта
Попробуйте онлайн!
⎕D
D igits от нуля до девяти1⌽
повернуть на один шаг вправо (ставит ноль в конце)⊂
приложить (рассматривать как единое целое)(
...)↑¨¨
для каждого из этих чисел взять столько символов из каждой буквы:⍳17
с одного до семнадцати¯9+
вычесть девять|
найти абсолютные значения1+
добавить одну∊¨
заручиться поддержкой↑
изменить один слой глубины на уровень ранга (Matrify)источник
>:
,APL is not a golfing language
...↑⊃¨,/¨(1+|¯9+⍳17)↑¨¨⊂1⌽⎕D
... ಠ_ಠHaskell ,
5855 байтПопробуйте онлайн!
Это в основном решение @nimi :)
источник
Java 11 (JDK) , 98 байт
Попробуйте онлайн!
String::repeat
.Предыдущий ответ ( Java (OpenJDK 8) ),
113112 байтПопробуйте онлайн!
Пояснения
Я в основном строю следующие
String
17 раз (N
это переменная, а не фактическое значение):Это все ожидаемые цифры, объединённых
%1$Ns
гдеN
это количество пробелов между каждой цифрой.%1$Ns
в основном означает «возьмите первый аргумент и добавьте его, пока длина не станет меньшеN
». Кроме того ,%1$0s
не поддерживаются , так это особый случай%1$s
сделан для0
.Наконец, я форматирую и печатаю эту строку, используя один аргумент:,
""
чтобы форматировщик всегда использовал одну и ту же пустую строку, заполняя ее пробелами по мере необходимости.Сохраняет
источник
()->
с ,o->
чтобы сохранить байты. :)o
int
for(o=-9;++o<9;)
Japt
-R
,1918161413 байтПротестируйте или попробуйте онлайн
объяснение
источник
9ÆAõ%A qXîÃw ê ·
JavaScript (ES2017),
83737268 байтСпасибо Shaggy за сохранение 10 байтов. Спасибо Крейгу за сохранение 1 байта. Спасибо дуги за сохранение 4 байта.
источник
Math.abs
. Я также сделалa
список не жестко закодированным, но это предпочтение ...a=[...Array(10).keys()];for(i=-8;i<9;i++)console.log(a.join(' '.repeat(i<0?-i:i)))
[..."1234567890"].join("".padEnd(i<0?-i:i))
[...Array(10).keys]
будет0
первым элементом, а не последним.for(i=-8,s="";i<9;i++)s+=[..."1234567890"].join("".padEnd(i<0?-i:i))+`X`
гдеX
находится фактическаяБрахилог ,
302928 байтПопробуйте онлайн!
Сохраненный один байт благодаря Leaky Nun .
объяснение
источник
Древесный уголь , 18 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Примечание:
Cast(1)
занимает такое же количество байтов, потому"1"
что раньше требовался бы разделитель":"
(который, как это происходит, не может быть вставлен в девербосификатор).источник
R , 108 байт
Просто вставляю и сворачиваю струны.
Попробуйте онлайн!
Редактировать: спасибо за Challenger5 за указание на проблему. Исправлено сейчас.
Редактировать 2: сохранил байт благодаря bouncyball.
источник
paste0
взамен,paste
поэтому пришлось добавить байт :(el
:el(strsplit("1234567890",""))
вместоstrsplit("1234567890","")[[1]]
paste
утверждений, используяsep
аргумент tocat
и сделав немного больше, чтобы получить его до 70 байтPython 3 ,
585754 байтаПопробуйте онлайн!
(спасибо @flornquake за последние три байта; я полностью забыл использовать
sep
для сохранения и сравнения.join
)источник
while i+9:print(*'1234567890',sep=' '*abs(i));i-=1
Pyth ,
1413 байтов1 байт благодаря Mnemonic.
Попробуйте онлайн!
источник
Java 8,
235234206163 байтаОбновление : -28 байт благодаря Leaky Nun!
Обновление 2 : -43 байта благодаря Leaky Nun снова!
Ungolfed:
Попробуйте онлайн
РЕДАКТИРОВАТЬ: код ранее был неправильным! Сделал ошибку при игре в коде, он должен работать как задумано сейчас!
источник
public
, и избавиться от некоторых ненужных мест. И есть еще кое-что, что можно улучшить, но я предлагаю прочитать советы и посмотреть, где вы можете улучшить себя. Снова добро пожаловать, и приятного пребывания! :)Шелуха , 21 байт
Это полная программа, которая печатает в STDOUT. Попробуйте онлайн! Есть много висячих мест.
объяснение
В Husk до сих пор не хватает многих важных вещей, таких как функция диапазона с двумя аргументами, поэтому некоторые части этого решения немного хакерские.
источник
ṁs`:0ḣ9
на,uṁsḣ10
чтобы сгенерировать строку "1234567890" с одним меньшим байтом!T-SQL 145
152байтаОбновлено для использования:
master..spt_values
генерировать числа (WHERE type = 'P'
всегда последовательные, начиная с 0)TOP 17
Идея @ ZLKРезультаты:
(Спасибо @JanDrozen за идею ЗАМЕНИТЬ)
источник
SELECT TOP 17REPLACE('1x2x3x4x5x6x7x8x9x0','x',SPACE(ABS(9-RANK()OVER(ORDER BY object_id))))FROM sys.objects
(при условии, что вам не нужно печатать).Clojure,
12699 байтов-27 исправив пару глупых ошибок. Внешнее использование
a
не было необходимости, поэтому я смог избавиться отa
всего и просто написатьapply str
один раз. Это также позволило мне использовать макрос функции для основной функции, который сохранил несколько байтов. Я также добавил вызовMath/abs
вместо повторной привязкиn-spaces
.В основном порт Clojure идеи Python @ Mr.Xcoder. Оглядываясь назад, я должен был изначально использовать метод
abs
/range
для задачи с бриллиантом, но тогда я, возможно, не произвел ошибочный вывод!Довольно просто Объединяет числовую строку с количеством пробелов, которые зависят от текущей строки.
источник
Желе , 15 байт
Попробуйте онлайн!
источник
Mathematica, 92 байта
Попробуйте онлайн
скопируйте / вставьте код с помощью ctrl-v
нажмите shift + enter для запуска
источник
C 97 байтов
Ваш компилятор, вероятно, будет много жаловаться на этот код; мой бросил 7 предупреждений 4 разных типов. Может улучшить код позже.
Попробуйте онлайн!
источник
C (gcc) , 76 байт
Попробуйте онлайн!
Он выводит некоторые пробелы, которые должны быть в порядке.
Он печатает числа, используя выравниваемые по левому краю поля динамической длины - для этого предназначена строка формата
%-*d
.Внутренний цикл имеет некоторую забавную инициализацию (начинается с 10; любое кратное 10 было бы хорошо), чтобы «упростить» его условие завершения.
источник
Древесный уголь ,
21 20 1918 байтПопробуйте онлайн!
Ссылка на подробную версию . По сути, я создаю нижнюю часть рисунка, а затем отражаю текст вверх.
источник
E…⁹⪫E…·¹χI﹪κχ× ι‖B↑
(также для 19 байтов), но интерпретатору это, кажется, не нравится (я сам не вижу, что с ним не так).Map
была красная сельдь, так что теперь я разместил свой 18-байтный ответ.CJam , 21 байт
Попробуйте онлайн!
объяснение
источник
9{S*A,(+\*}%_W%);\+N*
Пакетный, 163 байта
Примечание. Первая строка заканчивается 9 пробелами. Пояснение: Используется креативная нумерация строк! Первый цикл должен выполняться 9 раз и каждый раз удалять пробел, а второй цикл должен выполняться 8 раз и каждый раз добавлять пробел. Первое достигается путем его запуска 7 раз и проваливания в 8-й раз, в то время как второе достигается путем добавления двух пробелов и провала, чтобы удалить один из них снова.
источник
SOGL V0.12 , 14 байтов
Попробуй здесь!
Объяснение:
источник
PHP , 69 байт
Попробуйте онлайн!
источник
PowerShell , 30 байт
Попробуйте онлайн!
Создает диапазон
8,7,6...2,1,0,1,2...8
затем перебирает каждое число. Внутри цикла мы строим ряд1..9
сцепленных с0
затем-join
числами в диапазоне вместе с соответствующим количеством пробелов. Каждая строка остается в конвейере, а вывод неявным при завершении программы.источник