Triangularity es un nuevo esolang desarrollado por Mr. Xcoder donde la estructura del código debe seguir un patrón muy específico:
- Para la
n
línea de código th, debe haber exactamente2n-1
caracteres del programa en él. Esto causa una forma triangular / piramidal, con la primera línea con solo un carácter y el resto aumentando en incrementos de 2. - Cada línea debe rellenarse con
.
s a la izquierda y a la derecha, de modo que los caracteres se centren en sus líneas y todas las líneas se rellenen con la misma longitud. Sil
se define como el número de líneas en el programa, cada línea en el programa debe tener una longitud de2 * l - 1
Por ejemplo, el programa de la izquierda es válido, pero el programa de la derecha no lo es:
Valid | Invalid
|
...A... | ABCDE
..BCD.. | FGH
.EFGHI. | IJKLMN
JKLMNOP | OPQRS
Cuando se presenta en la estructura válida, el nombre se vuelve obvio.
Tarea
Su tarea es tomar una cadena de línea única como entrada, que representa el código de Triangularidad, y convertirla en un código válido como se describió anteriormente.
Especificaciones para E / S:
- La entrada solo contendrá caracteres en el rango
0x20 - 0x7e
- La longitud de la entrada siempre será un número cuadrado y, por lo tanto, se puede rellenar muy bien.
- Debe usar puntos para el relleno de salida, no otra cosa.
Puede ingresar y enviar a través de cualquier método aceptable . Este es un código de golf, por lo que gana el código más corto en bytes .
Casos de prueba
input
----
output
g
----
g
PcSa
----
.P.
cSa
DfJ0vCq7G
----
..D..
.fJ0.
vCq7G
7xsB8a1Oqw5fhHX0
----
...7...
..xsB..
.8a1Oq.
w5fhHX0
QNYATbkX2sKZ6IuOmofwhgaef
----
....Q....
...NYA...
..TbkX2..
.sKZ6IuO.
mofwhgaef
ABCDEF"$%& G8"F@
----
...A...
..BCD..
.EF"$%.
& G8"F@
ab.c
----
.a.
b.c
Para aquellos que conocen la triangularidad, notarán desde el último caso de prueba que las cadenas no tienen que ser manejadas
fuente
Respuestas:
Triangularidad , 127 bytes.
Pruébalo en línea!
Explicación
Eliminando los caracteres que componen el relleno, obtenemos el siguiente programa:
... Que es bastante largo, ¿verdad? Vamos a dividirlo en pedazos.
Generando los enteros [0… √len (entrada))
Generando los puntos
Recortar los personajes en el frente
Recortar los personajes al final
Poner fin al bucle e imprimir bonitas
fuente
J
extremo y generar una serie de líneas. Sin embargo, no sé si eso le ahorrará algo, si el final de la última línea debe rellenarse.
para llenar el espacio restante.f
es necesario porque el rango no puede aceptar argumentos flotantes (incluso con.0
) 2) EliminarJ
no guarda ningún byte debido al relleno, así que elegí el formato de salida más bonito.Japt ,
151410 bytesEmite una matriz de líneas.
Pruébalo | Verifique todos los casos de prueba
Explantacion
Solución original
Intentalo
fuente
Casco , 15 bytes
Pruébalo en línea!
Explicación
fuente
05AB1E ,
201918 bytesSalvó un byte gracias a Magic Octopus Urn
Pruébalo en línea!
Explicación
fuente
ÅÉ
para las probabilidades puede ayudar?g;ÅÉ£Rvy'.N×.ø}r»
? Pero no es eso porque no está bien jajaja.ÅÉ
definitivamente ayudaría si pudiéramos averiguar la longitud de la fila inferior en 2 bytes. Sin embargo, no sé si podemos. Podría ser otra forma de incorporarlo también.)R
lugar de lar
cual no guardó ningún byte: /Python 2 , 83 bytes
Pruébalo en línea!
fuente
Jalea ,
2219 bytesUn enlace monádico que devuelve una lista de listas de caracteres (las líneas)
Pruébalo en línea!
¿Cómo?
fuente
JavaScript (ES7),
8278 bytesCasos de prueba
Mostrar fragmento de código
Comentado
fuente
05AB1E , 25 bytes
Pruébalo en línea!
fuente
MATL , 21 bytes
Pruébalo en línea!
Explicación
Considere la entrada
'DfJ0vCq7G'
como un ejemplo. El contenido de la pila se muestra separado por comas, con el elemento superior al final. Las filas en una matriz 2D usan punto y coma como separador.fuente
Limpio ,
107948988 bytesPruébalo en línea! Ejemplo de uso:
@[]1 ['ABCDEF"$%& G8"F@']
.fuente
Haskell ,
8468 bytesPruébalo en línea!
Ejemplo de uso:
[]%1 $ "abcd"
produce la lista de líneas[".a.","bcd"]
.fuente
Perl,
5652 bytesIncluye
+3
para-p
Dar entrada en STDIN (en principio sin nueva línea final, pero eso solo importa para la entrada vacía)
fuente
-p
cuesta solo 1 byte'
. Pero este código lo hace, por lo que debe colocarse en un archivo (o escapar en la línea de comando) que necesita 3 caracteres adicionales en comparación con la#!
línea normal . Así que en este caso se trata+3
(por código normal verá que de hecho sólo cuentan+
parap
)Rojo ,
227203bytesPruébalo en línea!
Sin golf:
fuente
Retina ,
887271 bytesPruébalo en línea! Editar: Guardado
1213 bytes gracias a @MartinEnder. Explicación:Divide el primer personaje en su propia línea para hacer rodar la pelota.
Corta cada línea dos caracteres más que la anterior.
Izquierda la primera mitad de cada línea, centrándolas efectivamente.
Relleno derecho de todas las líneas.
fuente
Carbón ,
2119 bytesPruébalo en línea! El enlace es a la versión detallada del código. Editar: Guardado 2 bytes por descubrimiento
SquareRoot
. Explicación:fuente
Python 2 , 84 bytes
Pruébalo en línea!
fuente
Limpio , 123 bytes
Pruébalo en línea!
fuente
Ruby ,
7366 bytesPruébalo en línea!
-5 bytes: devuelve una matriz de cadenas en lugar de imprimirlas
-2 bytes: declarar
z
en su lugar en lugar de antes de tiempoSin golf:
Declarando una variable
r=q-1
para que pueda tomars[r*r...q*q]
guarda exactamente cero bytes.Usar en
.center
lugar de rellenar manualmente también ahorra cero bytes, pero me gusta más.fuente
Stax , 19 bytes
Ejecutar y depurarlo
ASCII equivalente:
fuente