Dada una cadena de entrada de longitud 2
o más larga que consta únicamente de caracteres alfabéticos [A-Z]
o [a-z]
(su elección si son todas mayúsculas o minúsculas), genera una cadena continua de caracteres que forman un patrón de doble diamante.
La cadena de entrada comienza en la línea central y se extiende hacia abajo y hacia la derecha en diagonal hasta llegar al final de la cadena de entrada. Luego, el patrón continúa hacia arriba y hacia la derecha en diagonal hasta que esté tan por encima de la línea central como la longitud de la cadena de entrada menos 1. Continúe hacia abajo y hacia la derecha hacia la línea central, luego hacia abajo y hacia abajo. izquierda, luego hacia arriba y hacia la izquierda (yendo "detrás" del personaje central) y finalmente hacia abajo y hacia la izquierda de regreso al personaje inicial.
Eso es un poco prolijo, y se demuestra mejor con algunos ejemplos:
"YOU"
U Y
Y O U O
Y O U
O Y U Y
U O
^ ^
↙ ↖ ↗ ↘
↘ ↗ >
↘ ↗ ↖ ↙
V V
Vea cómo YOU
comienza en la línea central y sigue hacia abajo y hacia la derecha, luego hacia arriba y hacia la derecha, etc., hasta que regrese al principio. Observe especialmente cómo la Y
parte superior e izquierda está "detrás" O
y, por lo tanto, no se muestra.
Algunos ejemplos adicionales:
"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
- La entrada y salida se pueden dar por cualquier método conveniente .
- Se garantiza que la entrada tendrá al menos dos letras de largo (es decir, nunca recibirá
""
como entrada). - Puede imprimirlo en STDOUT o devolverlo como resultado de una función.
- Un programa completo o una función son aceptables.
- Cualquier cantidad de espacio en blanco extraño es aceptable, siempre y cuando los caracteres se alineen apropiadamente (por ejemplo, siéntase libre de rellenar como un rectángulo).
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).