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).
Respuestas:
Carbón , 17 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Dibuja a lo largo de un camino.
Dibuja en las direcciones ↘↗↗↘↙↖↖↙ (
<
y>
son shorthands para esos dos pares, pero los otros pares no tienen shorthands).Cada segmento de ruta tiene la misma longitud, incluidos los extremos, de la longitud de la entrada.
Use la entrada como el texto que se escribirá a lo largo de la ruta.
Imprima las dos primeras partes de la ruta nuevamente para que el carácter del medio sea correcto.
fuente
05AB1E , 12 bytes
Pruébalo en línea!
fuente
1, 3, 3, 1, 7, 5, 5, 7
?JavaScript (ES6),
157155154bytesDevuelve una matriz de caracteres.
Pruébalo en línea!
¿Cómo?
El índice basado en 0 del carácter central que se debe omitir en la forma de diamante es:
Comentado
fuente
JavaScript (ES6), 136 bytes
Devuelve una matriz bidimensional. Funciona dibujando la cadena en la matriz que calcula directamente las coordenadas de destino trabajando hacia atrás desde el final para que la celda central se sobrescriba automáticamente. Explicación:
Cadena de entrada
Distancia entre "rebotes", también la mitad del índice de la última fila y uno menos que la longitud.
Índice de la última columna, también la mitad de la longitud del texto a dibujar.
Matriz de espacios.
Cuenta atrás desde la última celda hasta la primera.
Llamada recursiva para procesar las celdas restantes.
Calcule la fila de esta celda.
Calcule la columna de esta celda y el carácter que pertenece allí.
Termine devolviendo la matriz.
Comience al final del texto.
fuente
J ,
797775 bytesPruébalo en línea!
fuente
C (sonido metálico) ,
201196188 bytesPruébalo en línea!
-13 sugerencias @ceilingcat
fuente
Python 2 , 137 bytes
Pruébalo en línea!
Un programa completo que toma una cadena como entrada e imprime la versión diamantada.
fuente