Учитывая строку, длина которой делится на 4, сделайте треугольник, как показано ниже.
Если строка есть abcdefghijkl
, то треугольник будет:
a
b l
c k
defghij
Если строка есть iamastringwithalengthdivisiblebyfour
, то треугольник будет:
i
a r
m u
a o
s f
t y
r b
i e
n l
gwithalengthdivisib
Если строка есть thisrepresentationisnotatriangle
, то треугольник будет:
t
h e
i l
s g
r n
e a
p i
r r
esentationisnotat
Заметки
- Строка будет состоять только из символов от
a
доz
. - Пробелы в начале / в конце и новые строки разрешены, если форма не нарушена.
- Список строк в качестве вывода разрешен.
Это код-гольф . Кратчайший ответ в байтах побеждает. Применяются стандартные лазейки .
✂
с?GH↙→→↖⊕÷Lθ⁴θ
будет работать в следующий раз, когда я05AB1E , 23 байта
Попробуйте онлайн!
объяснение
источник
JavaScript (ES6),
119117108105 байтОтформатировано и прокомментировано
Контрольные примеры
Показать фрагмент кода
источник
C #, 260 байт
Действительно хотел использовать
SetCursorPosition
.Ungolfed:
источник
Mathematica, 164 байта
вход
источник
[[1]]
можно заменить на#&@@
.@(...)
, просто сделайте[...]
вместо этого. И я не проверял, но вы, вероятно, можете сохранить другой байт, давColumn
имя (или, может быть, даже,Column[#,Alignment->Center]&
чтобы избежатьq
), а затем поместив все оставшиеся переменные в первый аргумент внешнегоColumn
(чтобы сохранить окружающие скобки).Python 3 , 120 байт
Первый гольф, подумал, что я мог бы также изучить Python по пути.
Попробуйте онлайн!
Объяснение:
Первый символ печатается сам после
len(a)//4
пробелов, затем первый и последний-йi
символы, начинающиеся со второго, печатаются через2*i - 1
пробел.Наконец, оставшаяся подстрока печатается.
источник
p=print
, а затем просто использоватьp
для трех, которыеprint
вы используете.//
(деление по полу) можно заменить на/
.GNU sed ,
178158132 + 1 = 133 байта+1 байт за
-r
флаг.Попробуйте онлайн!
объяснение
В предыдущих версиях я использовал много байтов, связанных с математикой, особыми случаями и очисткой, хотя интуитивно я был уверен, что их можно избежать. С тех пор мне это удалось, в основном.
Предположим, у нас есть вход
abcdEFGHIJKLMnop
. БуквыEFGHIJKLM
будут в нижней части треугольника, поэтому я использовал их в качестве наглядного пособия.Сначала мы подготовим ввод, поместив первый символ в отдельной строке (с пробелом) и вставив курсор (
;
) перед последним символом:Теперь у нас есть:
Теперь, в цикле, мы собираемся сделать несколько вещей до последней строки: 1. Скопируйте пробелы из предыдущей строки и вставьте их после первого символа плюс два; 2. Переместите последний символ справа после пробелов, за которым следует новая строка; и 3. Переместите курсор на три символа влево.
Вот результат каждой итерации:
Вы можете видеть, как пирамида начинает обретать форму. Вы также можете увидеть, для чего был выбран курсор: на каждой итерации он перемещался влево на три символа, а когда слева уже не осталось трех символов, он прерывал цикл, как раз тогда, когда мы достигли «дна» пирамиды.
Теперь мы собираемся сделать аналогичную операцию, но в обратном порядке. В цикле мы скопируем пробелы от начала строки с курсором до начала предыдущей строки, плюс один, в процессе перемещения курсора к этой строке.
Вот пара итераций и конечный результат:
Мы все закончили, за исключением некоторых дополнительных символов: A
;
и дополнительного пробела в первой строке и двух пробелов в «середине» пирамиды в следующих трех строках. Простая замена избавляет от них:Все сделано!
источник
Рубин , 106 байт
Попробуйте онлайн!
источник
Python 2 ,
100 9796 байтПопробуйте онлайн!
Объяснение:
Одна умная вещь, которую я здесь сделал, это заполнение ввода пробелом в конце, так что первые символы соединяются с ним, и это может быть вставлено в цикл (и так как конечные пробелы разрешены)
Количество циклов, чтобы следовать связан с
len(word)//4
. На последнем шаге печатается вся оставшаяся строка (это основание треугольника). Пробелы следуют простой схеме; первый набор пробелов уменьшается на 1, а второй набор пробелов увеличивается на 2.источник
a
как всегда будет кратным 4.//
->/
C 225 байт
объяснил
источник
C #, 172 байта
Попробуйте онлайн!
источник
Октава, 87 байт
* В машине с Windows приведенный выше код дает правильный результат, однако в tio я добавил код для его исправления.
Объяснение:
Попробуйте онлайн!
источник
Haskell , 136 байт
Попробуйте онлайн!
источник
PHP> = 7.1, 122 байта
PHP Sandbox Online
PHP> = 7.1, 124 байта
PHP Sandbox Online
источник
AWK , 129 байт
Попробуйте онлайн!
Я должен подумать, что это может быть немного больше, просто не видя этого.
источник
Сетчатка , 99 байт
Попробуйте онлайн! Объяснение: Первые два этапа генерируют первые две строки, но после этого специальный регистр не требуется, и каждая последующая строка может быть сгенерирована автоматически:
источник
Java 8, 213 байт
Объяснение:
Попробуй это здесь.
источник
Perl 5 , 76 байт
74 байта кода +2 для
-F
Попробуйте онлайн!
источник