El reto
Su tarea es crear un programa que tome cualquier entrada de cadena dada y la envíe en formato cuadrado. Las cadenas vacías deberían devolver una cadena vacía.
Ejemplos
Dada la entrada:
golf
Su programa debería generar:
golf
o  l
l  o
flog
Entrada:
123
Salida:
123
2 2
321
Entrada:
a
Salida:
a
Entrada:
Hello, world!
Salida (observe el espacio entre, y w - la brecha no es solo una nueva línea):
Hello, world!
e           d
l           l
l           r
o           o
,           w
w           ,
o           o
r           l
l           l
d           e
!dlrow ,olleH
Tanteo
Este es el código de golf , por lo que gana la respuesta más corta en cada idioma.
                    
                        code-golf
                                string
                                code-golf
                                number
                                sequence
                                combinatorics
                                code-golf
                                tips
                                javascript
                                code-golf
                                kolmogorov-complexity
                                fibonacci
                                restricted-time
                                code-golf
                                ascii-art
                                code-golf
                                string
                                text-processing
                                code-golf
                                sequence
                                set-partitions
                                code-golf
                                kolmogorov-complexity
                                natural-language
                                code-golf
                                string
                                code-golf
                                math
                                code-challenge
                                restricted-source
                                code-golf
                                code-golf
                                number
                                base-conversion
                                cops-and-robbers
                                encryption
                                code-challenge
                                quine
                                optimized-output
                                king-of-the-hill
                                python
                                
                    
                    
                        SpookyGengar
fuente
                
                fuente

Respuestas:
Carbón ,
75 bytesPruébalo en línea! El enlace es a la versión detallada del código. Editar: Guardado 2 bytes gracias a @CarlosAlejo. Explicación:
(Múltiples direcciones al comando Reflect se ejecutan consecutivamente en lugar de simultáneamente).
fuente
θ‖B↙↘. Pruébalo en línea!ReflectOverlaplugar deReflectButterflyevitar voltear caracteres. :-)MATL ,
201611 bytesPruébalo en MATL en línea!
EDITAR: el código funciona en la versión 20.2.1, que es anterior al desafío. El enlace usa esa versión. (En 20.2.2 el código sería más corto, pero es posterior al desafío).
Explicación
fuente
Jalea ,
29 2217 bytesCarbón de leña
seráderrotar a + d esta partitura ...Un enlace monádico que toma y devuelve una lista de personajes; o un programa completo imprimiendo el resultado.
Pruébalo en línea!
¿Cómo?
fuente
'Hello'"Spooky's""123", etc. (Python se usa para interpretar la entrada).C, 109 bytes
Pruébalo en línea!
Trucos notables:
En lugar de perder bytes
strlen, simplemente tomamos la longitud de la cadena mientras imprimimos simultáneamente la primera línea:Esto funciona porque
printfdevuelve el número de bytes escritos.Para las líneas intermedias, necesitamos recorrer la cadena pero excluir tanto el primer como el último carácter. Esto se logra con la condición
(que es más corto que
(++s)[1]), que omite el primer carácter debido a que++está en la condición y omite el último deteniéndose cuando el personaje pasa el carácter actual'\0'(en lugar de detenerse en'\0').En el cuerpo del primer bucle,
imprimimos el carácter actual, luego el carácter "reflejado" apropiado (haciendo un seguimiento
j, que entra en los negativos, lo que resulta en una situación extraña de indexación en una cadena con un número negativo) acolchado a una longitud deiespacios (dondeiestá convenientementestrlen(s) - 1).La impresión invertida en la última línea es bastante sencilla; El único truco es el
*s*~i--, que es la forma más corta de obteneri+2iteraciones del cuerpo del bucle (que no depende dei; todo lo queise utiliza es contar). La*s*parte funky se asegura de que el ciclo no se ejecute si*ses así'\0', lo que sucede en la entrada de longitud 1.fuente
Octava, 40 bytes
Pruébalo en línea!
Es mi respuesta, pero publicado después de @Luis MATL answer
fuente
Haskell ,
8478 bytesPruébalo en línea! Uso:
f "test". Devuelve una lista de líneas.Editar: -6 bytes gracias a dianne!
fuente
reverse;r=reverse;f s@(_:x)|_:y<-r x=s:[a:(y>>" ")++[b]|(a,b)<-zip x y]++[r s];f s=[s]es de 78 bytes.Python 2 ,
89818886 bytesPruébalo en línea!
fuente
R , 113 bytes
Pruébalo en línea!
fuente
05AB1E ,
17161519 bytesPruébalo en línea!
Explicación
Ejemplo con
input = golfLa solución para la entrada de 1 letra era bastante costosa.
Siento que un enfoque diferente podría ser mejor ahora.
fuente
Python 2 ,
9988 bytes-4 bytes gracias a musicman523.
Pruébalo en línea!
Devuelve una lista de cadenas.
fuente
sy entrandos[::-1]en eljoinMathematica, 128 bytes
fuente
C, 96 bytes
Versión de bonificación (122 bytes):
fuente
Swift 3 ,
215199 bytesPruébalo en línea
fuente
Python 3, 88 bytes
fuente
l+1 andpodría reescribirsel+1andpara guardar un byte.0or, donde python no se analiza porque0oes un prefijo octal.JavaScript (ES8),
108112 bytesMenos golfo
Gracias a Justin Mariner por guardar muchos bytes, que luego se agotaron agregando la comprobación de caracteres cero o individual necesaria para cumplir con el desafío. Tu consigues eso :-(
fuente
`+s[i+1].padEnd(s.length-1)+v,s)+`y usandor.join``.String.prototype.padStarty etiquetados literales de plantilla. Lo necesitaba para mantener la ayuda además de la verificación de longitud al mínimo :-)(n=s.length-1)?(r=<...>+r.join``:sy usandopadEnd(n). Si la longitud es1,length-1es0(falso).padEndes ES2017.PHP , 118 bytes
Pruébalo en línea!
fuente
APL , 58 bytes
Con
⎕IO←0.Pruébalo en línea!
¿Cómo?
c←≢⍵- longitud de la cuerdar←⍳- distanciao←∘.⌈⍨- producto exterior con mínimoo⌊⌽⊖- minimizar con sí mismo cumplió 180 o×- multiplicar conx←∘....⍨r- producto exterior de la gama con((c-1)=⍺⌈⍵)∨0=⍺⌊⍵- el marco de la matrizx+- agregar el marco(' ',⍵)[...]- obtener por índice de la cadena concatenada al espaciofuente
⍉⊖⍉⊖ser⌽⊖?JavaScript (ES2017), 87 bytes
Versión ES6: 93 bytes
Menos golf
fuente
padEndes ES2017.l+~i, esto evita tener que restar 1 dos veces en lugar de restar 2 una vez.l-~-is=>[...s].reverse(l=s.length).map((c,i,z)=>i?l+~i?s[i]+' '.repeat(l-2)+c:z.join``:s).join`\n`peros=>[...s].reverse(l=s.length-2).map((c,i,z)=>i?i+~l?s[i]+' '.repeat(l)+c:z.join``:s).join`\n`también funciona.Java, 191 bytes
fuente
(s)puede ser justos. A los bucles con líneas individuales en el interior se les pueden quitar las llaves. Puede regresar en lugar de imprimir si eso le ahorrará bytes. Usasint ien ambos bucles, no puedo decir si están en diferentes ámbitos, pero vale la pena señalar. Inicializar variables similares juntas generalmente ahorra bytes.for(int i=0;i<l;i++){o.print(s.charAt(l-1-i));}->for(int i=0;i<l;){o.print(s.charAt(l-1-i++));}. No necesitas el punto y coma final.C # (.NET Core) ,
179161bytes-18 bytes gracias a TheLethalCoder
Pruébalo en línea!
No estoy seguro de las reglas, si esto es necesario para contar los bytes o no:Alguien por favor corrígeme sobre esto.Sin golf:
fuente
usingen su recuento de bytes. Como está utilizando LinqToCharArray()puede ser justoToArray(), ¿realmente lo necesita antesReverse()? A medida que lo useString, debe calificarlo completamente o incluirlo, sin embargo, esto también se puede solucionar fácilmente cambiándolostring. Elifpodría ser más corto como un ternarios+=l>1?if code:"";. Puede eliminar eli++del bucle y publicar incrementarlo end[i++].icon melgustaint l=s.Length-1,i=1;. ¡Y creo que podría ser eso!Retina , 106 bytes
Pruébalo en línea! Explicación:
Si hay al menos dos caracteres, duplique la entrada.
Invierta el duplicado.
Convierte las cuerdas en triángulos. El triángulo superior comienza con la entrada y elimina el primer carácter cada vez, mientras que el triángulo inferior comienza con la primera letra de la entrada invertida y agrega un carácter cada vez.
Une los triángulos juntos, superpuestos para que el último personaje forme la
/diagonal.Cambia todos los personajes a espacios, si están al menos a un personaje del final en cada lado.
Elimine las líneas en blanco sobrantes.
fuente
Python 3, 85 bytes
Usando la entrada para la fila superior :)
fuente
Lua , 104 bytes
Pruébalo en línea!
fuente
puna vez ...Python 3, 106 bytes
Una versión funcional ...
fuente
Python 2 , 100 bytes
Pruébalo en línea!
fuente
Mathematica,
13891 bytesPuede probarlo en línea pegando lo siguiente en Wolfram Cloud Sandbox y haciendo clic en "evaluar celda" o presionando Shift + Enter o Numpad Enter:
fuente