Escriba un programa o función que tome un entero N no negativo de stdin o como un argumento de función. Debe imprimir o devolver una cadena de un cuadrado hueco de arte ASCII cuyos lados están hechos con N copias del número N.
Específicamente:
Si N es 0
, no se utilizan copias de N, por lo que no debería haber salida (o solo una nueva línea final).
Si N es 1
, la salida es:
1
Si N es 2
:
22
22
Si N es 3
:
333
3 3
333
Si N es 4
:
4444
4 4
4 4
4444
Si N es 5
:
55555
5 5
5 5
5 5
55555
El patrón continúa hasta el 6
final 9
.
Si N es 10
, la salida es:
10101010101010101010
10 10
10 10
10 10
10 10
10 10
10 10
10 10
10 10
10101010101010101010
Tenga en cuenta que esto no es realmente cuadrado. Tiene 10 filas de alto pero 20 columnas de ancho porque 10
tiene dos caracteres de largo. Esto está destinado. El punto es que cada lado del "cuadrado" contiene N copias de N. Por lo tanto, todas las entradas más allá 9
serán técnicamente rectángulos ASCII.
Por ejemplo, si N es 23
, la salida es:
2323232323232323232323232323232323232323232323
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
2323232323232323232323232323232323232323232323
Aquí están Pastebins de los productos necesarios para 99
, 100
, 111
, y 123
(que puede parecer mal en un navegador, pero en un editor de texto que va a mirar correcta). El resultado para 1000
es demasiado grande para Pastebin pero tendría 1000 filas y 4000 columnas. Los números con 4 o más dígitos deben funcionar igual que los números más pequeños.
Detalles:
- N debe escribirse en la representación habitual de números decimales, sin
+
signo u otros no dígitos. - El área hueca solo debe llenarse con espacios.
- Ninguna línea debe tener espacios iniciales o finales.
- Opcionalmente, se permite una nueva línea después de la última línea de los cuadrados.
- Los idiomas escritos después de que se realizó este desafío son bienvenidos, simplemente no son elegibles para ganar .
- ¡El código más corto en bytes gana!
fuente
Respuestas:
Jolf,
31272523 bytesEsto está codificado en la codificación ISO-8859-7 y contiene elementos no imprimibles, así que aquí hay un hexdump:
Pruebe este violín en línea o verifique todos los casos de prueba a la vez (use el botón de ejecución completa) .
Esto sale con un error para n = 0, que está permitido por defecto.
¡Muchas gracias a Conor por jugar al golf
46! bytes inb4 tachado cuatro todavía parece un comentario cuatroExplicación
fuente
xxd -r
.Shtriped , 317 bytes
Mientras hago la pregunta, puedo mostrar mi nuevo lenguaje "purista".
(definitivamente funciona en v1.0.0 )
No hay operaciones matemáticas integradas en Shtriped, excepto incrementos y decrementos. Tampoco hay bucles o condicionales, por lo que todas estas cosas deben construirse desde cero en cada programa.
Eso es lo que hace mi programa, por ejemplo,
@
es esencialmente un bucle for,+
es una función de suma,}
es>=
. La salida real solo se produce en las últimas 8 líneas del programa.Tampoco hay cadenas en Shtriped. Puede incorporar e imprimir cadenas, pero todas están representadas internamente como enteros de precisión arbitrarios que solo pueden incrementarse y decrementarse. Por lo tanto, no hay una manera fácil de obtener la longitud de la cadena
10
para completar el centro cuadrado con la cantidad correcta de espacios. Tuve que improvisar la función~
que efectivamente calculafloor(log10(N)) + 1
para encontrar la longitud de N en decimal.Esto probablemente podría ser un poco más golfed reordenando dónde y cómo el que se utilizan las variables, pero no que mucho más. No hay forma de evitar las limitaciones inherentes de Shtriped. (De todos modos, nunca fue un lenguaje de golf).
Código comentado (una barra invertida es un comentario):
fuente
En serio,
32313029 bytesPruébalo en línea!
Explicación:
fuente
JavaScript (ES6),
73 8278 bytesGuardado a4 bytes gracias a @ user81655
Toma una cadena, no un número para la entrada.
Pruébelo en línea (todos los navegadores funcionan)
fuente
*(n-2)
con*~-~-n
para guardar un byte.MATL ,
342926 bytesEsto funciona con la versión actual (13.0.0) del lenguaje / compilador
Pruébalo en línea!
fuente
T-SQL / SQL Server 2012+,
167161 bytesSalida:
LiveDemo
Ingrese el tamaño deseado y haga clic Run querypara obtener representación de texto.
Tenga en cuenta que esta demostración no muestra la fuente de ancho fijo . Entonces
7
es más grueso que1
.EDITAR:
Si tratamos la entrada como una cadena:
LiveDemo2
fuente
Julia, 78 bytes
Esta es una función anónima que acepta un número entero e imprime el rectángulo ASCII en STDOUT. Para llamarlo, asígnelo a una variable.
Sin golf:
Pruébalo en línea
fuente
Ruby, 100 bytes
Lástima que ni siquiera pude vencer a JS. Se agradecería cualquier ayuda adicional al golf.
Aquí hay una versión más o menos no golfista:
fuente
n.to_s
ya que la usa mucho, lo que le dam*n
para la primera parte ym+" "*[(n-2)*m.length,0].max+m
para la segunda parte.Retina, 76 bytes
La explicación tal vez llegue mañana.
Pruébelo en línea aquí.
fuente
C ++ 14, 156 caracteres
Pensé que era una solución bastante buena, aunque obviamente no puede superar la mayoría de las otras entradas aquí.
Sin golf:
Y como siempre, para llamar a la función use
[](string t) { ... }("10");
fuente
TSQL,
112104 bytesfuente
Minkolang 0.15 , 57 bytes
Pruébalo aquí!
Explicación
fuente
Perl,
797674 bytesMuy claro. El primer argumento de la línea de comandos se toma como el número. Coloque el script en un archivo y ejecútelo
perl file.pl 1
.fuente
shift
puede ser reemplazado conpop
.Perl,
626058 + 2 = 60 bytesRequiere
-nlE
banderas:Con espacios añadidos:
fuente
R, 90 bytes
Esto crea una matriz de
x*x
tamaño y luego se llena con espacios de tamañonchar(x)
. Si esx
menor que 2, entonces no se está llenando nada.fuente
x=scan();m=matrix(x,x,x);m[k<--c(1,x),k]=format("",w=nchar(x));write(m,"",x,,"")
es 10 bytes menos usando indexación negativa y reemplazándolon=x,s=''
conx,,''
tio.run/nexus/r#DYpBCsAgDAT/…write("[<-"(matrix(x<-scan(),x,x),k<--c(1,x),k,gsub("."," ",x)),1,x,,"")
por 72 bytes.Pyth - 26 bytes
Pruébelo en línea aquí .
fuente
Pip
-l
, 21 bytesUtiliza características de lenguaje más nuevas que la pregunta, lo cual está permitido según la política actual; Si se interpreta que la redacción de la pregunta anula dicha política, consulte la respuesta de 25 bytes a continuación.
Pruébalo en línea!
Gracias a la respuesta MATL de Luis Mendo por el
(a+1)%n<2
truco.Explicación
Yq
lee una línea de stdin y la introducey
. Entonces:Respuesta original de 2016, 25 bytes (más
-l
indicador):Registro de cambios:
MC
fue agregado más recientemente; en ese momento, uséMMCG
(mapa-mapa + cuadrícula de coordenadas).++
en las listas, por lo que tuve que hacer++*
(aplicar++
a cada elemento) en su lugar.M
ap se ha extendido: ahora<string1> M <string2>
devuelve una lista delen(<string2>)
copias de<string1>
; en ese momento, solíasX#y
, repitiendo cadenas por espaciolen(y)
.fuente
Pyth,
3730 bytesPruébalo aquí
fuente
Retina , 90
De nuevo, estoy bastante seguro de que esto será muy fácil de encontrar por los expertos:
Pruébalo en línea.
fuente
¶
lugar de;
deshacerse de la última etapa?)[^¶]+
es útil.+
.Jalea, 28 bytes
Grr, no puedo decir si Jelly es mala con las cuerdas, o si yo soy mala con Jelly.
Pruébalo en línea.
fuente
Pyke , 33 bytes (no competitivo)
Explicación:
fuente
CJam, 27 bytes
Gracias a @ MartinBüttner por sugerir
ff
. Ela+[0X(]&
es bastante sospechoso, pero bueno.Pruébalo en línea!
fuente
Python 2, 70 caracteres
fuente
Haskell, 78 bytes
Ejemplo de uso:
La función
>>
es útil:<list> >> <string>
hacelength <list>
copias de<string>
, por ejemplo, líneas superiores e inferiores parax=10
are[1..10] >> "10"
->"10101010101010101010"
.fuente
1
que grita una sola salida1
. Además, devuelve una lista de cadenas, mientras que el desafío solicita una sola cadena. Tuvimos reglas de IO mucho más estrictas en los días, las reglas de IO flexibles son algo más reciente.Perl, 72 bytes
Se basa en las características modernas de Perl:
está disponible automáticamente desde Perl 5.10 (simplemente use v5.10 o posterior).
felizmente acepta para trabajar en un valor p (un str_expr no necesariamente reducida a una variable escalar) para producir un r esultado (la ' r opción' al final de la expresión regular) sin alterar la str_expr inicial.
fuente
PHP, 151 bytes
Desorden absoluto, necesita más tiempo para optimizar.
s(Number)
te da la salida.fuente
Java 8, 280 bytes
¡Solo es aproximadamente 10 veces más largo que las respuestas más cortas, lo cual es realmente bueno para Java!
Ejemplo de ejecución:
fuente
Python 3,
10896148 bytesUngolfed / explicado:
Como esta es mi primera respuesta de código de golf , algunas críticas constructivas y / o sugerencias serían útiles.
fuente
while b!=0:print(a+" "*int(len(a))*c+1);b-=1
. Además,while b:
es equivalente awhile b!=0
, por lo que faltan 3 bytes más.Óxido,
141137 bytesAbusó de algunas cosas de formato, de lo contrario, esto hubiera sido mucho más tiempo.
Desempaquetado:
Enlace de juegos
fuente
Powershell,
989695838275 bytesUngolfed y explicó el script de prueba:
Salida:
fuente