Hoy, 11 de noviembre, se conoce como el Día del Recuerdo , el Día del Armisticio o el Día de los Veteranos (según el país), y es un día de reflexión y gratitud para los miembros de las fuerzas armadas y su servicio, específicamente comenzó a reflejar el fin de las hostilidades europeas. en la primera guerra mundial. Reflexionemos sobre eso con una simple salida de arte ASCII de 11/11
.
Dada una entrada n
, la salida de una representación de arte ASCII 11/11
es de n
unidades de altura. Específicamente, cada uno 1
está compuesto por tubos verticales ||
, la barra está compuesta por barras //
y cada personaje está separado por dos espacios. Tenga en cuenta que esto significa diferentes anchos de salida; por ejemplo, para más n=3
abajo, vea cómo la "parte inferior" de la barra está a dos espacios desde la 1
izquierda, pero está a cuatro espacios desde la 1
derecha, de modo que la parte superior de la barra se alinea apropiadamente y está a dos espacios del lado 1
derecho.
n = 1
|| || // || ||
n = 2
|| || // || ||
|| || // || ||
n = 3
|| || // || ||
|| || // || ||
|| || // || ||
n = 4
|| || // || ||
|| || // || ||
|| || // || ||
|| || // || ||
n = 5
|| || // || ||
|| || // || ||
|| || // || ||
|| || // || ||
|| || // || ||
y así.
Entrada
Un número entero positivo solo en cualquier formato conveniente , n > 0
.
Salida
Una representación de arte ASCII de 11/11
, siguiendo las reglas y ejemplos anteriores. Las nuevas líneas iniciales / finales u otros espacios en blanco son opcionales, siempre que los caracteres se alineen adecuadamente.
Reglas
- Un programa completo o una función son aceptables. Si es una función, puede devolver el resultado en lugar de imprimirlo.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
$'
y el$`
en la expresión regular? Nunca había visto eso antes y me encantaría entenderlo mejor.$&
sería el partido mismo).05AB1E , 24 bytes
Pruébalo en línea!
Explicación
Versión anterior de 26 bytes
Pruébalo en línea!
fuente
" "×"//"«.s¦R"|| || "s«vyû}»
, resulta que palendromize no es una buena opción, por razones más obvias ahora ... y de todos modos superaste mi bytecount más rápido, je.Perl, 45 bytes
-9 bytes gracias a @Gabriel Benamy
47 bytes de código + 1 byte para
-n
bandera.Corre con
-nE
banderas:fuente
"|| ||"
a"|| "x2
y luego girar(2+$_)
en apenas$_
+( .. )
la$@
tarea. Funciona en mi computadora, al menos.+( .. )
, gracias. Sin embargo, no puedo cambiar"|| ||"
a"|| "x2
porque necesito dos espacios entre||
."|| "
tiene dos espacios después de las tuberías (simplemente no se muestra correctamente aquí por alguna razón), y está duplicando esa cadena en la"|| || "
que se ocupan los 2 espacios adicionales de$"x(2+$_)
||
cuando había dos.JavaScript (ES6),
8877 bytesEs
posible que elenfoque recursivo no sea el más corto ..map
versión (88 bytes):Comprensión de matriz (86 bytes):
for
versión de bucle (89 bytes):.replace
versión (85 bytes):fuente
Retina, 29 bytes
Puerto de mi solución JavaScript. Tenga en cuenta el espacio después
$*
y dos espacios después||
.fuente
V , 30 bytes
Pruébalo en línea!
Como de costumbre, aquí hay un hexdump:
fuente
5i|| <esc>3b2r/
. Sin embargo, estarás en un lugar un poco diferente, y no puedo leer V, así que no estoy seguro de si eso importa.Lote, 130 bytes
No es un puerto de mi solución JavaScript. Como los
|
s son difíciles de manipular en Batch, usox
s como marcadores de posición y los reemplazo en la salida, esto convenientemente también reduce el tamaño de mi código. Comienza configurandos
la salida deseada paran=1
(n
se pasa en la línea de comando), luego inserta espacios según sea necesario para obtener la primera línea para el valor real den
, luego realiza un bucle a través de la impresión de la cadena y desplaza la barra diagonal hacia la izquierda por un carácter cada vez.fuente
BaCon , 71 bytes
Un programa BÁSICO completo en una línea.
fuente
1 TO
?Lisp común, 216 bytes
Voy a decir de inmediato que esta es una solución horrible para el desafío. Sin embargo, funciona, y estoy cansado.
Uso:
Por alguna razón, en lugar de hacer algo cuerdo, decidí abordar esto con un bucle dentro de una
format
llamada. Este bucle itera a través de los contenidos devueltos por la otra construcción de bucle real al final, con los últimos seis elementos eliminados (por lo tanto, labutlast
s repetida ). El contenido del valor devuelto por esta construcción de bucle consiste en un recuento de relleno para el frente de las barras, los caracteres de relleno (espacios), el recuento de relleno para la parte posterior de las barras y, finalmente, los mismos caracteres de relleno.Soy bastante nuevo en Lisp, y entiendo que definitivamente hay mucho margen de mejora aquí.
fuente
Python 2,
767571 BytesTodavía estoy trabajando en una versión más corta, aunque no está mal.
¡Gracias mbomb007 por detectar un error!
fuente
x='|| '*2;print x+(n-i)*' '+'//'+' '*i+x[::-1]
//
en la última fila y dos espacios después//
en la primera fila. Deben ser dos espacios en ambos casos.R, 86 bytes
Solo un
for
enfoque de bucle simple :fuente
Retina , 40 bytes
Pruébalo en línea!
Explicación
Esto convierte la entrada
N
enDonde
S
corresponde aN
espacios.Hay dos cosas que suceden aquí.
;{:
indica que esta etapa y la última deben ejecutarse en un bucle hasta que no puedan cambiar la cadena.:
indica que el resultado de esta etapa debe imprimirse después de cada iteración e;
indica que el resultado final del ciclo (y, por lo tanto, de todo el programa) no debe imprimirse. El escenario en sí solo reemplaza elx
s con|| ||
la primera iteración (y no hace nada después), de modo que ahora tenemos la primera línea de la salida requerida (e imprimirla).Finalmente, esto desplaza el
//
carácter a la izquierda, siempre que haya al menos tres espacios a la izquierda del//
. Luego volvemos a la etapa anterior (que ahora solo imprime la línea actual, ya que no hay másx
s) y luego repetimos.fuente
Rubí, 60 bytes.
fuente
C,
116 9489 bytesPruébalo en Ideone
fuente
Ruby,
767473 bytesComo una función toma
7372 bytes, contando la definición:fuente
Powershell, 66 bytes
fuente
read-host
-param($a)1..$a|%{$s="|| ";$s*2+" "*($a-$_)+"// "+" "*$_+$s*2}
C #, 150 bytes
Golfizado:
Sin golf:
Pruebas:
Salida:
fuente
Groovy, 63 caracteres / bytes
Aquí está mi intento con Groovy, usando un cierre anónimo y bucles simples para imprimir el arte ASCII a la salida estándar:
{n->n.times{println'|| '*2+' '*(n-it-1)+'//'+' '*it+' ||'*2}}
Puedes probarlo en línea aquí . Simplemente haga clic en "Editar en la consola" y luego "Ejecutar script".
Tratando de hacer lo mismo y devolviendo una cadena en lugar de imprimir, no pude obtener menos de 71 bytes:
{n->a='';n.times{a+='|| '*2+' '*(n-it-1)+'//'+' '*it+' ||'*2+'\n'};a}
fuente
Python 3, 78 bytes
Aún tratando de acortar ...
fuente
for
a la misma línea quedef
? (Así:)def m(n):for e in range(n):print(a," "*(n-e),"//"," "*(e+1),a)
Además, puede guardar dos bytes reemplazándolos(e+1)
con-~e
.