Inspirado por la salida con errores en la respuesta Clojure de @Carcigenicate para el desafío Imprimir este diamante .
Imprime este texto exacto:
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1234567890
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
(Desde el centro hacia afuera en ambas direcciones, cada dígito está separado por un espacio más que la línea anterior).
Reglas de desafío:
- No habrá entrada ( o una entrada vacía sin usar ).
- Los espacios finales son opcionales.
- Una nueva línea final es opcional.
- No se permiten espacios iniciales ni líneas nuevas.
- No se permite devolver una matriz de cadenas. Debe generar el texto o tener una función que devuelva una sola cadena con el resultado correcto.
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de código de golf lo desalienten de publicar respuestas con idiomas que no sean de código. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Se aplican reglas estándar para su respuesta, por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código.
- Además, agregue una explicación si es necesario.
code-golf
ascii-art
number
kolmogorov-complexity
Kevin Cruijssen
fuente
fuente
Respuestas:
SOGL V0.12 , 12 bytes
Pruébalo aquí! Explicación:
fuente
Python 2 ,
59 57 5655 bytesPruébalo en línea!
Explicación
i=8
- Asigna el valor8
a una variable llamadai
.exec"..."*17
- Ejecute ese bloque de código (...
) 17 veces.print(...)
- Salida del resultado.' '*abs(i)
- Crear una cadena con un espacio repetido|i|
veces..join('1234567890')
- Intercalar la cadena creada anteriormente con1234567890
, de modo que|i|
se inserten espacios entre los dígitos.i-=1
- Disminuyai
, y al ejecutarlo 17 veces, alcanza-8
, lo que crea el patrón repetitivo con la ayuda deabs()
.fuente
exec
55 bytes . Se utilizó un enfoque similar para reducir Python 3 a 57 bytes . No vi ninguna forma obvia de acortarloexec
, omitiendo , pero pensé que lo mencionaría como una posibilidad.Vim, 35 bytes:
Explicación:
fuente
05AB1E ,
1413 bytesPruébalo en línea!
Explicación
fuente
s
... ¿tiene sentido unir una cadena con una lista o una lista con una cadena? Sugeriré una mejora a Adnan. Ah, y hay.∊
paraû»
.8F9ÝÀNð×ý}».∊
Lo hice hizo una nave espacial fauces! Y estaba muy entusiasmado con sugerir una edición de 12 bytes.ASM C64, 358 bytes (102 bytes compilados con basicstub)
Esto es lo más cerca que pude llegar debido a limitaciones obvias:
(Probablemente podría optimizarse bastante)
fuente
TSQL,
220148 bytesMejora publicada por ZLK:
Salida:
fuente
DECLARE @ VARCHAR(MAX)=''SELECT TOP 17@+=REPLACE('1@2@3@4@5@6@7@8@9@0','@',SPACE(ABS(9-RANK()OVER(ORDER BY object_id))))+' 'FROM sys.objects PRINT @
sys.objects
consysobjects
, y 1object_id` conid
Busqué tablas más cortas en elsys
esquema, pero nada corto tenía columnas tan cortas comosysobjects
CAST
(con elPOWER(10)
) aVARCHAR
LOG10
yREPLICATE
:DECLARE @o VARCHAR(MAX)=''SELECT TOP 17 @o+=REPLACE('1@2@3@4@5@6@7@8@9@0','@',replicate(' ',LOG10(POWER(10,ABS(ROW_NUMBER()OVER(ORDER BY id)-9)+1)/10)))+' 'FROM sysobjects PRINT @o
@
3 caracteres.APL (Dyalog) , 22 bytes
Pruébalo en línea!
⎕D
D igita de cero a nueve1⌽
girar un paso a la derecha (pone cero al final)⊂
adjuntar (para tratar como unidad)(
...)↑¨¨
para cada uno de estos números, tome esa cantidad de caracteres de cada una de las letras:⍳17
uno a diecisiete¯9+
restar nueve|
encontrar los valores absolutos1+
Agrega uno∊¨
alistar (aplanar) cada↑
cambiar una capa de profundidad a un nivel de rango (matrificar)fuente
>:
.APL is not a golfing language
...↑⊃¨,/¨(1+|¯9+⍳17)↑¨¨⊂1⌽⎕D
... ಠ_ಠHaskell ,
5855 bytesPruébalo en línea!
Esta es básicamente la solución de @nimi :)
fuente
Java 11 (JDK) , 98 bytes
Pruébalo en línea!
String::repeat
.Respuesta anterior ( Java (OpenJDK 8) ),
113112 bytesPruébalo en línea!
Explicaciones
Básicamente estoy construyendo las siguientes
String
17 veces (N
es una variable, no un valor real):Son todos los dígitos esperados, unidos por
%1$Ns
dondeN
está el número de espacios entre cada dígito.%1$Ns
básicamente significa "tomar el primer argumento y rellenarlo hasta que la longitud sea al menosN
". Además,%1$0s
no se admite por lo que un caso especial%1$s
se hace para0
.Finalmente, imprimo en formato esa cadena usando un solo argumento:,
""
por lo que el formateador reutiliza siempre la misma cadena vacía, rellenándola con espacios según sea necesario.Ahorra
fuente
()->
cono->
guardar un byte. :)o
unint
y usarlo en tu bucle for?for(o=-9;++o<9;)
Japt
-R
,1918161413 bytesPruébalo o pruébalo en línea
Explicación
fuente
9ÆAõ%A qXîÃw ê ·
JavaScript (ES2017),
83737268 bytesGracias Shaggy por guardar 10 bytes. Gracias Craig por guardar 1 byte. Gracias arcos por guardar 4 bytes.
fuente
Math.abs
. También hice laa
lista no codificada, pero esa es una preferencia ...a=[...Array(10).keys()];for(i=-8;i<9;i++)console.log(a.join(' '.repeat(i<0?-i:i)))
[..."1234567890"].join("".padEnd(i<0?-i:i))
[...Array(10).keys]
tendría0
como primer elemento, no como el último.for(i=-8,s="";i<9;i++)s+=[..."1234567890"].join("".padEnd(i<0?-i:i))+`X`
, dondeX
es una nueva línea realBrachylog ,
302928 bytesPruébalo en línea!
Salvado un byte gracias a Leaky Nun .
Explicación
fuente
Carbón , 18 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Nota:
Cast(1)
toma el mismo número de bytes porque"1"
necesitaría un separador antes":"
(lo que sucede que el desverbosificador no puede insertar).fuente
R , 108 bytes
Solo pegando y colapsando las cuerdas.
Pruébalo en línea!
Editar: gracias por Challenger5 por señalar un problema. Lo arregló ahora.
Edición 2: guardado un byte gracias a bouncyball.
fuente
paste0
lugar depaste
tener que agregar un byte :(el
: enel(strsplit("1234567890",""))
lugar destrsplit("1234567890","")[[1]]
paste
declaraciones utilizando elsep
argumento aycat
haciendo un poco más para llegar a 70 bytesPython 3 ,
585754 bytesPruébalo en línea!
(gracias a @flornquake por los últimos tres bytes; olvidé completamente usar
sep
para guardar vs..join
)fuente
while i+9:print(*'1234567890',sep=' '*abs(i));i-=1
Pyth ,
1413 bytes1 byte gracias a Mnemonic.
Pruébalo en línea!
fuente
Java 8,
235234206163 bytesActualización : -28 bytes gracias a Leaky Nun!
Actualización 2 : -43 bytes gracias a Leaky Nun nuevamente.
Sin golf:
Pruébalo en línea
EDITAR: ¡ El código anterior estaba equivocado! Cometió un error al jugar el código, ¡debería funcionar como se esperaba ahora!
fuente
public
y eliminar algunos espacios innecesarios. Y hay algunas cosas más que mejorar, pero le sugiero que lea los consejos y vea dónde puede mejorar usted mismo. Nuevamente bienvenido, y disfruta tu estadía! :)Casco , 21 bytes
Este es un programa completo que imprime en STDOUT. Pruébalo en línea! Hay muchos espacios finales.
Explicación
A Husk todavía le faltan muchas cosas esenciales, como una función de rango de dos argumentos, por lo que partes de esta solución son un poco extravagantes.
fuente
ṁs`:0ḣ9
conuṁsḣ10
para generar la cadena "1234567890" con un byte menos!T-SQL 145
152bytesActualizado para usar:
master..spt_values
para generar números (WHERE type = 'P'
siempre son consecutivos, comenzando en 0)TOP 17
ideaResultados:
(Gracias @ JanDrozen por la idea REEMPLAZAR)
fuente
SELECT TOP 17REPLACE('1x2x3x4x5x6x7x8x9x0','x',SPACE(ABS(9-RANK()OVER(ORDER BY object_id))))FROM sys.objects
(suponiendo que no necesite imprimir).Clojure,
12699 bytes-27 arreglando un par de errores tontos. El uso externo de
a
no era necesario, así que pude deshacerme pora
completo y solo escribirapply str
una vez. Eso también me permitió usar una macro de función para la función principal, que ahorró algunos bytes. También incluí la llamada enMath/abs
lugar de volver a vincularn-spaces
.Básicamente un puerto Clojure de la idea de Python de @ Mr.Xcoder. En retrospectiva, debería haber usado el método
abs
/range
para el desafío del diamante originalmente, ¡pero es posible que no haya producido la salida con errores!Bastante simple. Une la cadena de números con varios espacios que dependen de la fila actual.
fuente
Jalea , 15 bytes
Pruébalo en línea!
fuente
Mathematica, 92 bytes
Pruébalo en línea
copiar / pegar código con ctrl-v
presione shift + enter para ejecutar
fuente
C, 97 bytes
Su compilador probablemente se quejará mucho sobre este código; el mío lanzó 7 advertencias de 4 tipos diferentes. Podría mejorar el código más tarde.
Pruébalo en línea!
fuente
C (gcc) , 76 bytes
Pruébalo en línea!
Produce algunos espacios finales, que se supone que están bien.
Imprime los números usando campos de longitud dinámica justificados a la izquierda, para eso es la cadena de formato
%-*d
.El bucle interno tiene una inicialización divertida (comienza desde 10; cualquier múltiplo de 10 estaría bien) para "simplificar" su condición de terminación.
fuente
Carbón ,
21 20 1918 bytesPruébalo en línea!
Enlace a la versión detallada . Básicamente creo la parte inferior del dibujo y luego reflejo el texto hacia arriba.
fuente
E…⁹⪫E…·¹χI﹪κχ× ι‖B↑
(también para 19 bytes) pero al intérprete no parece gustarle (no puedo ver qué le pasa).Map
era un arenque rojo, así que ahora publiqué mi respuesta de 18 bytes.CJam , 21 bytes
Pruébalo en línea!
Explicación
fuente
9{S*A,(+\*}%_W%);\+N*
Lote, 163 bytes
Nota: La primera línea termina en 9 espacios. Explicación: ¡Utiliza la numeración de líneas creativas! El primer ciclo debe ejecutarse 9 veces y eliminar un espacio cada vez, mientras que el segundo ciclo debe ejecutarse 8 veces y agregar un espacio cada vez. El primero se logra ejecutándolo 7 veces y cayendo por octava vez, mientras que el segundo se logra agregando dos espacios y cayendo para eliminar uno de ellos nuevamente.
fuente
SOGL V0.12 , 14 bytes
Pruébalo aquí!
Explicación:
fuente
PHP , 69 bytes
Pruébalo en línea!
fuente
PowerShell , 30 bytes
Pruébalo en línea!
Construye un rango de
8,7,6...2,1,0,1,2...8
luego recorre cada número. Dentro del bucle construimos una serie de1..9
concatenada con0
entonces-join
los números en el rango junto con el número apropiado de espacios. Cada cadena se deja en la tubería y la salida está implícita al finalizar el programa.fuente