При заданной входной строке длиной 2
или более, состоящей исключительно из буквенных символов [A-Z]
или [a-z]
(по вашему выбору, если они все в верхнем или нижнем регистре), выведите непрерывную строку символов, образующую двойной ромбовидный шаблон.
Входная строка начинается с центральной линии и продолжается вниз и вправо по диагонали, пока не будет достигнут конец входной строки. Затем паттерн продолжается вверх и вправо по диагонали, пока вы не окажетесь выше центральной линии до длины входной строки минус 1. Продолжайте движение вниз и вправо до центральной линии, затем вниз и влево, затем вверх и влево («позади» центрального символа) и, наконец, вниз и влево назад к начальному символу.
Это немного многословно, и это лучше продемонстрировать на нескольких примерах:
"YOU"
U Y
Y O U O
Y O U
O Y U Y
U O
^ ^
↙ ↖ ↗ ↘
↘ ↗ >
↘ ↗ ↖ ↙
V V
Посмотрите, как YOU
начинается с центральной линии и следует вниз и вправо, затем вверх и вправо и т. Д., Пока не вернется к началу. Обратите особое внимание Y
на то, как верхняя и левая части находятся «позади» O
и поэтому не показаны.
Некоторые дополнительные примеры:
"HI"
I I
H H H
I I
"TEST"
E E
S T T S
T T T T
T S T
E E E E
S T T S
T T
"HELLO"
L L
O L E L
H E H O
E H O H
H L E
E L L L
L E L L
L H E O
O H
- Вход и выход могут быть заданы любым удобным способом .
- Входные данные гарантированно должны быть длиной не менее двух букв (т. Е. Вы никогда не получите в
""
качестве входных данных). - Вы можете распечатать его в STDOUT или вернуть как результат функции.
- Допустимы либо полная программа, либо функция.
- Допускается любое количество посторонних пробелов, при условии, что символы выстраиваются в линию соответствующим образом (например, не стесняйтесь дополнить прямоугольником).
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
Ответы:
Древесный уголь , 17 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Нарисуйте вдоль пути.
Нарисуйте в направлениях ↘↗↗↘↙↖↖↙ (
<
и>
являются короткими цепочками для этих двух пар, но другие пары не имеют коротких цепочек.)Каждый сегмент пути имеет одинаковую длину, включая концы, длины входных данных.
Используйте ввод как текст, который будет написан вдоль пути.
Напечатайте первые две части пути снова, чтобы средний символ был правильным.
источник
05AB1E , 12 байтов
Попробуйте онлайн!
источник
1, 3, 3, 1, 7, 5, 5, 7
?JavaScript (ES6),
157 155154 байтаВозвращает матрицу символов.
Попробуйте онлайн!
Как?
Основанный на 0 индекс символа центра, который должен быть пропущен в форме ромба:
комментарии
источник
JavaScript (ES6), 136 байт
Возвращает двумерный массив. Работает, рисуя строку в массиве, непосредственно вычисляя координаты назначения, работая в обратном направлении от конца, так что центральная ячейка автоматически перезаписывается. Объяснение:
Строка ввода.
Расстояние между "отскоками", также половина индекса последней строки и один меньше, чем длина.
Последний индекс столбца, также половина длины текста для рисования.
Массив пробелов.
Обратный отсчет от последней ячейки до первой.
Рекурсивный вызов для обработки оставшихся ячеек.
Рассчитайте строку этой ячейки.
Рассчитайте столбец этой ячейки и принадлежащий ей символ.
Готово, возвращая массив.
Начните в конце текста.
источник
J ,
797775 байтПопробуйте онлайн!
источник
C (лязг) ,
201196188 байтПопробуйте онлайн!
-13 предложений @ceilingcat
источник
Python 2 , 137 байт
Попробуйте онлайн!
Полная программа, которая принимает строку в качестве входных данных для распечатки ромбовидной версии.
источник