Para los propósitos del desafío actual de "delinear" una palabra significa rodearla sucesivamente con sus propias letras, comenzando con la última, y finalmente reemplazar la palabra original en el centro con espacios:
oooooo
onnnno
on -> on no
onnnno
oooooo
Tarea:
Dada una lista de palabras, que consiste solo en letras minúsculas y / o mayúsculas en inglés, delinea cada palabra y muestra todos los bloques resultantes uno al lado del otro horizontalmente, separados por una columna de espacio único, alineados verticalmente en el centro de los bloques.
Puede escribir un programa completo o una función.
Entrada:
Una lista de palabras, o si lo prefiere, una cadena delimitada por espacio u otro símbolo
Salida:
La representación ASCII de los bloques para las palabras resumidas. Se permiten espacios en blanco iniciales / finales.
Casos de prueba:
Input 1: ["code", "golf"] (or "code golf")
Output 1:
cccccccccccc gggggggggggg
cooooooooooc goooooooooog
coddddddddoc gollllllllog
codeeeeeedoc golfffffflog
code edoc golf flog
codeeeeeedoc golfffffflog
coddddddddoc gollllllllog
cooooooooooc goooooooooog
cccccccccccc gggggggggggg
Input 2: ["I", "am", "just", "a", "man"] (or "I am just a man")
Output 2:
jjjjjjjjjjjj
juuuuuuuuuuj mmmmmmmmm
aaaaaa jussssssssuj maaaaaaam
III ammmma justtttttsuj aaa mannnnnam
I I am ma just tsuj a a man nam
III ammmma justtttttsuj aaa mannnnnam
aaaaaa jussssssssuj maaaaaaam
juuuuuuuuuuj mmmmmmmmm
jjjjjjjjjjjj
Criterios ganadores:
El código más corto en bytes en cada idioma gana. Le agradeceré mucho si comenta / explica su código y enfoque.
Respuestas:
Lienzo ,
2220 bytesPruébalo aquí!
Explicación:
fuente
Carbón , 35 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Pase sobre la lista de entrada.
Obtenga la longitud de la palabra actual.
Muévase a la esquina superior izquierda del contorno resultante.
Bucle una vez para cada personaje.
Dibuja un cuadro con la altura, el ancho y el carácter apropiados.
Muévase a la esquina superior izquierda del siguiente cuadro.
Moverse al siguiente esquema.
fuente
Haskell ,
188183174171167 bytes-9-13 bytes gracias a Laikoni .Pruébalo en línea!
fuente
\a->and[p a>=p x|x<-f<$>w]
puede ser\a->all((p a>=).p)$f<$>w
yk c=(++[c]).(c:)
puede serk c s=c:s++[c]
.Pyth,
3433 bytesPruébalo en línea.
Elimina un montón de espacios en blanco adicionales, pero eso está permitido por el desafío.
Explicación
m
...Q
hace lo siguiente para cada palabrad
en la entradaQ
:m\ d
asigna la palabra conx => " "
, esencialmente creando la lista[" ", ..., " "]
con tantos elementos como la palabra tiene letras..idd
intercala la palabra consigo misma, repitiendo las letras de la palabra dos veces._
invierte esta cadena.word
se convierteddrrooww
.u
comienza conG
= la matriz de espacios, y aplica lo siguiente con cada letra en la cadena intercalada enH
:*2H
repite el personaje dos veces.jR
...G
coloca cada cadenaG
entre el par de caracteres.C
intercambia filas y columnas. Cuando estos tres pasos se realizan dos veces con el mismo carácterH
, esto resume las líneasG
con ese carácter.d
.+;
antecede una columna de espacio.s
aplana la matriz de columnas para cada palabra y laJ
guarda en la variableJ
.m
...J
hace lo siguiente para cada columna de la salida:.[lJd;
rellena ambos lados de la columna con espacios para que la longitud de la columna sea igual al número de columnas. Esto siempre es suficiente relleno para alinear las columnas verticalmente.C
convierte las columnas en filas yj
une las filas con nuevas líneas.Solución alternativa, 33 bytes.
Pruébalo en línea.
Tenga en cuenta que hay un espacio final. Principalmente el mismo algoritmo, excepto que solo rellena columnas en la parte superior y luego se transpone con relleno de espacio.
fuente
R , 189 bytes
Pruébalo en línea!
Una colaboración entre digEmAll y yo en el chat .
fuente
APL (Dyalog Classic) ,
575150 bytesPruébalo en línea!
fuente
Stax ,
2625 bytesEjecutar y depurarlo
fuente
05AB1E , 46 bytes
No estoy muy contento con eso, pero me alegro de que esté funcionando.
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente