Se le dará una Cadena que consiste en ASCII imprimible (sin líneas nuevas). Tu tarea es construir una bonita escalera para mi castillo.
¿Cómo construir una bonita escalera?
En primer lugar, debe obtener todas las rotaciones de la cadena. Por ejemplo, la cadena
abcd
tiene las siguientes rotaciones:abcd, bcda, cdab, dabc
(cada carácter se mueve hasta el final hasta llegar al último carácter).Ahora colocamos cada rotación una encima de la otra:
abcd bcda cdab dabc
Realmente no podemos subir a una pared recta, por lo que debemos construir escaleras. Eso significa que debe agregar una cantidad de espacios antes de cada rotación correspondiente a su índice en la lista de rotación:
abcd bcda cdab dabc
También necesitas una escalera que se una al otro lado de mi castillo, por lo que debes construir una como la siguiente, invirtiendo cada rotación y agregando algo de espacio:
abcd dcba bcda adcb cdab badc dabccbad
Este es el código de golf , por lo tanto, el código más corto en bytes gana y se aplican las reglas estándar para la etiqueta.
Casos de prueba
Entrada:
abcd
Salida:abcd dcba bcda adcb cdab badc dabccbad
Entrada:
aaaa
Salida:aaaa aaaa aaaa aaaa aaaa aaaa aaaaaaaa
Entrada:
Code golf
Salida (Observe los espacios):Code golf flog edoC ode golfC Cflog edo de golfCo oCflog ed e golfCod doCflog e golfCode edoCflog golfCode edoCflog olfCode g g edoCflo lfCode go og edoCfl fCode gollog edoCf
dab
C. -------Respuestas:
05AB1E , 12 bytes
Código:
Utiliza la codificación 05AB1E . Pruébalo en línea!
Explicación:
fuente
Jalea , 16 bytes
Pruébalo en línea!
Por supuesto, -1 usando Jonathan Allan 's
ɓ
!fuente
J’ɓ⁹⁶ẋ;"ṙz⁶Zm€0Y
(oLḶ
paraJ’
)Retina , 47 bytes
Pruébalo en línea! Explicación: La primera etapa crea la escalera izquierda al considerar cada carácter y crear espacios iguales a la posición actual, luego el resto de la cadena, luego el inicio de la cadena, luego espacios iguales al resto de la cadena. El resto de la secuencia de comandos se ejecuta sobre cada línea recién generada a su vez. Primero se duplica la línea, luego los caracteres del duplicado se invierten, luego la línea y su duplicado se concatenan.
fuente
Python 3 , 89 bytes
Pruébalo en línea!
-1 byte gracias a ovs
-1 byte gracias a Lynn
fuente
l-i-1
puede serl+~i
tan~i == -i-1
' '*(l+~i)*2
igual' '*(l+~i)
, que es un byte más corto!C (gcc) , 126 bytes
Pruébalo en línea!
fuente
Carbón ,
23 2120 bytesPruébalo en línea!
Probablemente se pueda jugar más, pero estoy publicando desde la aplicación móvil. Enlace a la versión detallada .
fuente
G→↘←Lθθ‖C
.Haskell,
8079 bytesPruébalo en línea!
Cómo funciona
Editar: Gracias a @ Ørjan Johansen por un byte.
fuente
u#_=u
Guarda un byte.unlines
dóndeu#_=u
no escribe check y luego cambié a construir una sola cadena ... ¡Gracias!J, 34 bytes
sin golf
Pruébalo en línea!
fuente
Pyth , 19 bytes
Pruébalo en línea!
fuente
Mathematica, 119 bytes
fuente
PHP, 95 bytes
Ejecutar como tubería
-nR
o probarlo en línea .Descompostura
fuente
Japt , 22 bytes
La nueva línea principal es parte del programa.
Pruébalo en línea!
Ejecute todos los casos de prueba con mi WIP CodePen.
Explicación
Implícito:
U
= cadena de entrada. La primera línea está en blanco para no sobrescribirU
.La segunda línea asigna implícitamente la longitud (
l
) deU
aV
.Tercera línea:
fuente
Pyth, 20 bytes
Pruébalo en línea!
fuente
Javascript (ES6), 118 bytes
Fragmento de código de ejemplo:
fuente
Python 2 ,
8583 bytesl+~i
y me ayudó a detectar un espacio no deseadoPruébalo en línea!
fuente
l-1-i
puede serl+~i
tan~i == -i-1
8vo ,
173168bytesCódigo
Versión sin golf con comentarios
Uso y ejemplos
O más claramente
fuente