Dada una cadena cuya longitud es divisible por 4, haga un triángulo como se muestra a continuación.
Si la cadena es abcdefghijkl
, entonces el triángulo sería:
a
b l
c k
defghij
Si la cadena es iamastringwithalengthdivisiblebyfour
, entonces el triángulo sería:
i
a r
m u
a o
s f
t y
r b
i e
n l
gwithalengthdivisib
Si la cadena es thisrepresentationisnotatriangle
, entonces el triángulo sería:
t
h e
i l
s g
r n
e a
p i
r r
esentationisnotat
Notas
- La cadena solo constará de caracteres de
a
az
. - Se permiten espacios en blanco iniciales y finales y nuevas líneas siempre que la forma no se rompa.
- Se permite una lista de cadenas como salida.
Este es el código de golf . La respuesta más corta en bytes gana. Se aplican lagunas estándar .
✂
s?GH↙→→↖⊕÷Lθ⁴θ
funcionará la próxima vez que presione Carbón05AB1E , 23 bytes
Pruébalo en línea!
Explicación
fuente
JavaScript (ES6),
119117108105 bytesFormateado y comentado
Casos de prueba
Mostrar fragmento de código
fuente
C #, 260 bytes
Realmente quería usar
SetCursorPosition
.Sin golf:
fuente
Mathematica, 164 bytes
entrada
fuente
[[1]]
se puede reemplazar con#&@@
.@(...)
, solo hazlo[...]
. Y no lo he probado, pero probablemente pueda guardar otro byte dandoColumn
un nombre (o tal vez incluso paraColumn[#,Alignment->Center]&
evitarq
) y luego colocando todas las variables restantes en el primer argumento del exteriorColumn
(para guardar los paréntesis circundantes).Python 3 , 120 bytes
Primero golf, pensé que bien podría aprender algo de Python en el camino.
Pruébalo en línea!
Explicación:
El primer carácter se imprime solo después de los
len(a)//4
espacios, luego se imprimen los caracteres primero y último ai
partir del segundo, separados por2*i - 1
espacios.Finalmente, se imprime la subcadena restante.
fuente
p=print
, y luego simplemente usarp
para los tresprint
s que usa.//
(división de piso) se puede reemplazar por/
.GNU sed ,
178158132 + 1 = 133 bytes+1 byte para
-r
bandera.Pruébalo en línea!
Explicación
En revisiones anteriores , utilicé muchos bytes relacionados con matemáticas, casos especiales y limpieza, aunque intuitivamente estaba seguro de que podrían evitarse. Desde entonces he logrado hacerlo, principalmente.
Supongamos que tenemos la entrada
abcdEFGHIJKLMnop
. Las letrasEFGHIJKLM
serán la parte inferior del triángulo, así que las he capitalizado como una ayuda visual.Primero preparamos la entrada colocando el primer carácter en su propia línea (precedido por un espacio) e insertando un cursor (
;
) antes del último carácter:Ahora tenemos:
Ahora, en un bucle, vamos a hacer algunas cosas en la última línea: 1. Copie los espacios de la línea anterior e insértelos después del primer carácter, más dos; 2. Mueva el último carácter a la derecha después de los espacios, seguido de una nueva línea; y 3. Mueva el cursor tres caracteres hacia la izquierda.
Aquí está el resultado de cada iteración:
Puedes ver que la pirámide comienza a tomar forma. También puede ver para qué era el cursor: en cada iteración se movía a la izquierda tres caracteres, y cuando ya no hay tres caracteres a su izquierda, se rompe el bucle, que sucede justo cuando hemos llegado al "fondo" de la pirámide
Ahora vamos a hacer una operación similar pero a la inversa. En un bucle, copiaremos los espacios desde el comienzo de la línea con el cursor hasta el comienzo de la línea anterior, más uno, en el proceso moviendo el cursor hacia esa línea.
Aquí hay un par de iteraciones y el resultado final:
Ya hemos terminado, excepto algunos caracteres adicionales: A
;
y espacio adicional en la primera línea, y dos espacios en el "centro" de la pirámide en las siguientes tres líneas. Una simple sustitución se deshace de ellos:¡Todo listo!
fuente
Ruby , 106 bytes
Pruébalo en línea!
fuente
Python 2 ,
100 9796 bytesPruébalo en línea!
Explicación:
Una cosa inteligente que he hecho aquí es rellenar la entrada con un espacio al final, de modo que el primer carácter se empareje con él y esto se pueda insertar en el bucle (y dado que se permiten espacios en blanco finales)
El número de bucles a seguir está asociado
len(word)//4
. En el paso final, se imprime toda la cadena restante (esto forma la base del triángulo). Los espacios siguen un patrón simple; el primer conjunto de espacios continúa disminuyendo en 1, mientras que el segundo conjunto de espacios continúa aumentando en 2.fuente
a
que siempre será un múltiplo de 4.//
->/
C 225 bytes
explicado
fuente
C #, 172 bytes
Pruébalo en línea!
fuente
Octava, 87 bytes
* En una máquina Windows, el código anterior produce el resultado correcto, sin embargo, en este momento agregué un código para corregirlo.
Explicación:
Pruébalo en línea!
fuente
Haskell , 136 bytes
Pruébalo en línea!
fuente
PHP> = 7.1, 122 bytes
PHP Sandbox en línea
PHP> = 7.1, 124 bytes
PHP Sandbox en línea
fuente
AWK , 129 bytes
Pruébalo en línea!
Debería pensar que esto se podría jugar un poco más, solo que no lo veo.
fuente
Retina , 99 bytes
Pruébalo en línea! Explicación: Las dos primeras etapas generan las dos primeras líneas, pero después de eso no es necesaria una carcasa especial y cada línea subsiguiente se puede generar automáticamente:
fuente
Java 8, 213 bytes
Explicación:
Pruébalo aquí
fuente
Perl 5 , 76 bytes
74 bytes de código +2 para
-F
Pruébalo en línea!
fuente