Треугольность - это новый esolang, разработанный г-ном Xcoder, где структура кода должна следовать очень специфической схеме:
- Для этой
n
строки кода в ней должны быть ровно2n-1
символы программы. Это приводит к форме треугольника / пирамиды, причем первая строка имеет только один символ, а остальные увеличиваются с шагом 2. - Каждая строка должна быть дополнена
.
s слева и справа так, чтобы символы центрировались на их линиях, а все строки - одинаковой длины. Еслиl
определяется как количество строк в программе, каждая строка в программе должна иметь длину2 * l - 1
Например, программа слева действительна, но программа справа не является:
Valid | Invalid
|
...A... | ABCDE
..BCD.. | FGH
.EFGHI. | IJKLMN
JKLMNOP | OPQRS
Когда выложены в действующей структуре, имя становится очевидным.
задача
Ваша задача - взять в качестве входных данных однострочную строку, представляющую код треугольности, и вывести ее, преобразованную в действительный код, как описано выше.
Спецификации для ввода / вывода:
- Ввод будет содержать только символы в диапазоне
0x20 - 0x7e
- Длина ввода всегда будет квадратным числом и, таким образом, будет дополняться.
- Вы должны использовать точки для заполнения вывода, а не что-то еще.
Вы можете вводить и выводить любым приемлемым способом. Это код-гольф, поэтому выигрывает самый короткий код в байтах !
Контрольные примеры
input
----
output
g
----
g
PcSa
----
.P.
cSa
DfJ0vCq7G
----
..D..
.fJ0.
vCq7G
7xsB8a1Oqw5fhHX0
----
...7...
..xsB..
.8a1Oq.
w5fhHX0
QNYATbkX2sKZ6IuOmofwhgaef
----
....Q....
...NYA...
..TbkX2..
.sKZ6IuO.
mofwhgaef
ABCDEF"$%& G8"F@
----
...A...
..BCD..
.EF"$%.
& G8"F@
ab.c
----
.a.
b.c
Для тех, кто знает треугольность, вы заметите из последнего теста, что строки не должны быть обработаны
code-golf
string
code-golf
combinatorics
code-golf
math
number
code-golf
matrix
code-golf
string
decision-problem
code-golf
internet
code-golf
number
number-theory
integer
expression-building
code-challenge
primes
cops-and-robbers
obfuscation
code-challenge
primes
cops-and-robbers
obfuscation
code-golf
string
balanced-string
code-golf
quine
code-generation
code-golf
matrix
code-golf
tips
c#
code-golf
ascii-art
code-golf
ascii-art
source-layout
code-golf
quine
source-layout
popularity-contest
language-design
code-golf
array-manipulation
subsequence
code-golf
matrix
math
code-challenge
game
graph-theory
atomic-code-golf
code-golf
number
integer
polynomials
equation
code-golf
array-manipulation
sorting
Caird Coneheringaahing
источник
источник
Ответы:
Треугольность , 127 байтов
Попробуйте онлайн!
объяснение
Удаляя символы, которые восполняют отступы, мы получаем следующую программу:
... Что довольно длинно, верно? Давайте разбить его на куски.
Генерация целых чисел [0… √len (вход))
Генерация точек
Обрезка персонажей спереди
Обрезка персонажей в конце
Завершение цикла и красивая печать
источник
J
в конце и вывести массив строк. Не знаю, спасет ли это что-нибудь, хотя, если конец последней строки должен быть дополнен,.
чтобы заполнить оставшееся пространство.f
необходимо, потому что range не может принимать аргументы с плавающей запятой (даже с.0
) 2) Избавление отJ
не сохраняет байтов из-за заполнения, поэтому я выбрал более хороший формат вывода.Japt ,
151410 байтВыводит массив строк.
Попробуй это | Проверьте все тесты
Explantion
Оригинальное решение
Попытайся
источник
Шелуха , 15 байт
Попробуйте онлайн!
объяснение
источник
05AB1E ,
201918 байтСохраненный байт благодаря Волшебной Урне Осьминога
Попробуйте онлайн!
объяснение
источник
ÅÉ
шансы могут помочь?g;ÅÉ£Rvy'.N×.ø}r»
? Но не это, потому что это не правильно, лол.ÅÉ
определенно помогло бы, если бы мы могли узнать длину нижнего ряда в 2 байта. Хотя я не знаю, сможем ли мы. Может быть еще один способ включить это.)R
вместоr
которого не сохранял ни одного байта: /Python 2 , 83 байта
Попробуйте онлайн!
источник
Желе ,
2219 байтМонадическая ссылка, возвращающая список списков символов (строк)
Попробуйте онлайн!
Как?
источник
JavaScript (ES7),
8278 байтКонтрольные примеры
Показать фрагмент кода
комментарии
источник
05AB1E , 25 байтов
Попробуйте онлайн!
источник
MATL , 21 байт
Попробуйте онлайн!
объяснение
Рассмотрим ввод
'DfJ0vCq7G'
в качестве примера. Содержимое стека показывается через запятую, а верхний элемент последний. Строки в массиве 2D используют точку с запятой в качестве разделителя.источник
Чисто ,
107948988 байтПопробуйте онлайн! Пример использования:
@[]1 ['ABCDEF"$%& G8"F@']
.источник
Haskell ,
8468 байтовПопробуйте онлайн!
Пример использования:
[]%1 $ "abcd"
выдает список строк[".a.","bcd"]
.источник
Perl,
5652 байтаВключает
+3
в себя для-p
Предоставить ввод для STDIN (в принципе без окончательного перевода строки, но это имеет значение только для пустого ввода)
источник
-p
стоит всего 1 байт'
. Но этот код делает, поэтому его нужно поместить в файл (или экранировать в командной строке), который требует 3 дополнительных символа по сравнению с обычной#!
строкой. Так что в этом случае это так+3
(для нормального кода вы увидите, что я действительно рассчитываю только+
на этоp
)Красный ,
227203 байтаПопробуйте онлайн!
Ungolfed:
источник
Retina ,
887271 байтПопробуйте онлайн! Изменить: Сохранено
1213 байт благодаря @MartinEnder. Объяснение:Разделите первого персонажа на собственную линию, чтобы заставить мяч катиться.
Разрежьте каждую строку на два символа длиннее предыдущего.
Левая клавиша первой половины каждой строки, эффективно их центрируя.
Правый блокнот всех линий.
источник
Древесный уголь ,
2119 байтПопробуйте онлайн! Ссылка на подробную версию кода. Редактировать: Сохранено 2 байта путем обнаружения
SquareRoot
. Объяснение:источник
Python 2 , 84 байта
Попробуйте онлайн!
источник
Чисто , 123 байта
Попробуйте онлайн!
источник
Рубин ,
7366 байтПопробуйте онлайн!
-5 байт: вернуть массив строк вместо их печати
-2 байта: объявить
z
на месте, а не раньше времениUngolfed:
Объявление переменной,
r=q-1
чтобы я мог взять,s[r*r...q*q]
сохраняет ровно ноль байтов.Использование
.center
вместо заполнения вручную также экономит ноль байтов, но мне это нравится больше.источник
Stax , 19 байт
Запустите и отладьте его
ASCII эквивалент:
источник