Dado un número entero no negativo, imprima uno X
que sea tan grande. X
es la salida para la entrada 0
, y agregará barras diagonales iguales a la entrada en cada dirección para extender las X
entradas más grandes.
Casos de prueba
0 0
X
1
\ /
X
/ \
2
\ /
\ /
X
/ \
/ \
...
10
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\ /
\ /
X
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
Reglas
Puede imprimir la salida o devolver una cadena o lista de cadenas desde una función. Se permite una nueva línea final, así como un espacio en blanco interior adicional que no afecta la aparición.
Este es el código de golf , ¡así que la respuesta más corta en bytes gana!
X
medio (parte de por qué lo agregué), pero quién sabe: DRespuestas:
Lienzo , 3 bytes.
Pruébalo aquí!
la mitad del tamaño de la respuesta de carbón: D
fuente
Carbón de leña , 6 bytes
Tu tontería no me detiene;)
Pruébalo en línea!
fuente
JavaScript (ES6), 79 bytes
Utiliza una función recursiva g que recorre una cuadrícula y construye la salida carácter por carácter.
¿Cómo?
Ambas variables x e y iteran de 2n a -1 , donde n es la entrada.
Para cada posición (x, y) en la cuadrícula, elegimos uno de estos caracteres:
/
\
X
utilizando las siguientes pruebas:
~x
: Falsy si x == -1 : hemos llegado al final de la línea.x-y
: Falsy si x == y : estamos ubicados en la antia diagonal.x+y-w
: Falsy si x + y == w : estamos ubicados en la diagonal.x-n
: Falsy si x == n : debido a que esta prueba solo se realiza cuando x == y , esto significa que estamos ubicados en el centro exacto de la cuadrícula.y el siguiente árbol de decisión:
Manifestación
Mostrar fragmento de código
fuente
MATL , 16 bytes
Pruébalo en línea!
Considere la entrada
2
como un ejemplo. La pila se muestra aquí al revés, es decir, los elementos inferiores son los que se empujaron más recientemente.fuente
C,
108106 bytesPruébalo en línea!
(−2 golf gracias a MD XF)
Imprime dos caracteres (al principio,
c = 47
que es una barra diagonal yc + 45
una barra invertida; luego se intercambian) con un ancho de campo dinámico.Los anchos de campo comienzan en
1
y2n
, y en cada iteración, el primer ancho se incrementa en 1, y el segundo se reduce en 2.Cuando el ancho del segundo campo se convierte en 0, genera
'X'
una nueva línea en lugar de los caracteres regulares e invierte la dirección de los incrementos (i
). Se imprime una nueva línea para todas las demás líneas por separado (puts("")
).fuente
a,b,i=1,c;g(n){for(b=2*n,c=47;a+=i;b?puts(""):(i=-i,c=92),b-=2*i)printf("%*c%*c",a,b?c+45*i:88,b,b?c:10);}
Pruébelo en línea!shortC , 111 bytes
Sobre la base de mi respuesta C . Conversiones:
R
->printf(
P
->putchar(
W
->while(
O
->for(
");}
Esto también usa códigos ASCII para
\
y/
.Pruébalo en línea!
fuente
Python 2 , 81 bytes
Pruébalo en línea!
fuente
C,
168155150 bytes-5 gracias a Computronium
Ciertamente se puede jugar al golf; Lo estoy haciendo Pruébalo en línea!
Sin golf:
fuente
V , 21 bytes
Pruébalo en línea!
Hexdump:
Explicación:
Esencialmente, tenemos Insertar una X, n veces extiende las barras .
Pero no es tan simple porque también tenemos que agregar las barras diagonales la primera vez. Si las barras ya estaban allí, podríamos escribir extender las barras como:
Lo que nos ahorraría 6 bytes.
fuente
C #,
157122120 bytesVersión sin golf:
fuente
_=d=>new string(' ',d);
(tenga en cuenta que no se necesitan llavesd
). Puede quitar las llaves alrededor del bucle for. Utilice una cadena literal para no tener que escapar de todas las barras diagonales inversas. Si configurai=0
, puede hacer++i<a+1
y eliminar eli++
.\n
un avance de línea real, aunque no estoy seguro de si podrá eliminar los corchetes alrededor del bucle for, debería intentarlo.++i<a+1
de++i<=a
EDITAR También puede guardar 4 bytes más de cambio de laFunc
denew string(' ',d)
a"".PadLeft(d)
_
.Mathematica, 71 bytes
(Parcialmente inspirado por la solución de 104 bytes de Jenny_mathy)
Devuelve una lista de cadenas.
Explicación:
IdentityMatrix[2#+1]
forma una matriz del tamaño correcto con 1s a lo largo de la diagonal y 0s en otros lugares. Luego, lo multiplicamos por"\\"
(una barra invertida escapada), lo que lo convierte en una matriz con barras invertidas a lo largo de la diagonal y ceros en otra parte, ya que, por supuesto, 1 barra invertida es barra invertida y 0 veces barra invertida es 0. Agregamos esto a"/"
veces su reverso para hacer La forma X. Ya casi hemos terminado, excepto que todavía hay ceros en todas partes, y el medio es"\\" + "/"
. Arreglamos estas dos cosas sustituyendo" "
por0
y"X"
pora_+_
, que coincide con cualquier suma de dos cosas (como_+_
debería, excepto que Mathematica es demasiado inteligente para su propio bien y lo interpreta como 2 veces_
). Finalmente,""<>#&/@
convierte esto en una lista de cadenas.fuente
Java (OpenJDK 8) , 135 bytes
Expresión lambda que toma un número entero y devuelve una matriz de cadenas
Pruébalo en línea!
Sin golf:
fuente
T-SQL, 201 bytes
Formateado:
La entrada es a través de la columna a en la tabla con nombre t , según nuestras pautas .
fuente
Rubí , 66 bytes
Función recursiva.
Pruébalo en línea!
Explicación
fuente
Jalea ,
2417 bytesPruébalo en línea!
Cómo funciona
-6 bytes gracias a @LeakyNun y -1 byte con una mejora adicional
fuente
Lote, 201 bytes
Comienza construyendo la línea superior, luego, después de imprimir cada línea, mueve el
\
espacio derecho una vez y el/
espacio izquierdo una vez, asegurándose de que hagan unaX
en el medio.fuente
PHP , 115 bytes
Pruébalo en línea!
fuente
Retina , 74 bytes
Pruébalo en línea! Explicación:
Coloque el
X
.Comenzando en
X
, trabajando hacia arriba, coloque una\
diagonal a la izquierda cada vez. También coloque/
dos espacios más después de la/
última vez.Comenzando en
X
, trabajando hacia abajo, coloque una/
diagonal a la izquierda cada vez. También coloque\
dos espacios más después de la/
última vez.El número de espacios entre las dos diagonales debe ser impar, por lo que
X
se elimina el último espacio en cada línea (excepto la línea original ).fuente
Mathematica, 131 bytes
Mathematica, 104 bytes
aquí hay otro enfoque usando Grid
fuente
APL (Dyalog) , 25 bytes
Requiere
⎕IO←0
cuál es el predeterminado en muchos sistemas.Pruébalo en línea!
' \/'[
...]
indexar la cadena con⎕
obtener entrada2×
multiplicar por dos1+
Agrega uno⍳
que muchos enteros∘.=⍨
tabla de igualdad (es decir, matriz de identidad; diagonal NO-SE)(
...)
aplique la siguiente función tácita en ese⊢
el argumento+
más2×
dos veces⌽
el argumento reflejado horizontalmente (es decir, diagonal NE-SW)fuente
Bash , 138 bytes
Pruébalo en línea!
Muy largo, bash heates '\ y /'
Menos golf
fuente
Python 2 ,
9584 bytes-10 bytes gracias a @FelipeNardiBatista
Pruébalo en línea!
fuente
05AB1E , 21 bytes
Pruébalo en línea!
fuente
Perl 5, 110 + 1 = 111 bytes
Utiliza
-n
bandera.fuente
QBIC , 90 bytes
Cómo funciona esta monstruosidad, se deja como ejercicio para el lector ...
Salida de muestra:
fuente
Visual Basic.Net ,
454450 Bytesno estoy seguro de si hacer un func para
writeline
ahorrará algunos bytes gracias a Stephen S por apuntar a laas ...
eliminación también cambióinteger
a laobject
última edición cambió la primera atrásfuente
as Types
eso, porque si es asíOption Strict Off
, VB.NET actúa como un lenguaje tipeado.function
s =!for loops
Gracias por el campoOption Strict
desactivado por defecto? Está en Visual Studio al menos05AB1E , 22 bytes
Pruébalo en línea!
Explicación
Solución alternativa de 22 bytes
fuente
Pyke, 14 bytes
Pruébalo aquí!
fuente
tcl, 134
manifestación
Establecer
n
en la primera línea.Puede ser que pueda jugar más golf usando un enfoque recursivo
fuente
R ,
7572 bytesInspirado por esta respuesta , genera una matriz implícita y la escribe en stdout; lee el tamaño de stdin. Tiene que construir una matriz de caracteres de espacio y usa
sep=''
b / c; de lo contrario, tiene problemas de espacio.Pruébalo en línea!
fuente