Dada la entrada tilesXy tilesYcrear un método que haría un anillo rectangular de los mosaicos.
La función debe ordenar los mosaicos en un anillo como este:
tilesXytilesYsiempre son valores enteros positivos, no puede ser 0tilesXytilesYno siempre son iguales, valores como esperar:2x5,6x3etc.- No es necesario verificar la entrada no válida
- Puede usar cualquier forma de mostrar los mosaicos, incluidas las matrices 2d, el arte ASCII o el texto impreso.
- No hay una forma estricta de cómo se pasa la entrada siempre que sean dos enteros.
- No puede ser una línea, dibujar un rectángulo de tamaño
tilesXytilesYpíxeles no es válido - El código más corto gana


Respuestas:
Dyalog APL, 8 bytes
Este tren de funciones monádicas toma la altura y el ancho como argumentos correctos y devuelve una matriz 2D de 0 '(borde) y 1 ' s (interior). Pruébelo en TryAPL .
Cómo funciona
fuente
MATL , 10 bytes
Esto genera una matriz que contiene ceros y unos.
Pruébalo en línea!
Para la salida gráfica, agregue
1YGal final para mostrar la matriz como una imagen ( 13 bytes ):¡Pruébalo en MATL Online! Por ejemplo,
produce
fuente
HTML / JS / CSS,
198194 bytesVersión de salida gráfica. El recuento de bytes no incluye
f=ni los tres<input>elementos que se utilizan solo con fines de demostración. Guardado 3 bytes gracias a @IsmaelMiguel.fuente
f=(n,m)=>{d.style.width=n*25+'px';d.style.height=m*25+'px';}puede simplificar af=(n,m)=>with(d.style)width=n*25+'px',height=m*25+'px';?withsí me ahorra 3 bytes pero todavía necesito el{}s. Por otro lado,;es innecesario, así que también lo eliminé.MATL , 10 bytes
Los argumentos de entrada son alto y ancho como enteros. La salida es una matriz de tamaño
height x widthdonde los mosaicos límite son 0 y los valores internos son 1.Pruébalo en línea!
Explicación
Misma lógica que mi otra respuesta con menos bytes.
fuente
MATLAB,
3231 bytesEsto crea una función anónima que luego se puede ejecutar como
ans([4 5])dentro del espacio de trabajo.La entrada es
[height, width]y la salida es una matriz con 1 en el centro y 0 para el límite.La forma en que esto funciona es una matriz de unos, se crea el tamaño de la entrada. Luego se convoluciona con una matriz de identificación de 3 x 3 con unos en la diagonal. Usamos la
sameentrada paraconv2(acortada's'aquí) para mantener el resultado del mismo tamaño que la entrada.Luego queremos convertir la salida a un valor binario con 0 alrededor del límite y 1 dentro. Usamos la desigualdad
>2porque todos los píxeles de borde tendrán un resultado <3 y todos los elementos no limítrofes tendrán un resultado igual a 3.Para salida gráfica:
fuente
Jalea , 10 bytes
Devuelve una cuadrícula de 0 's (borde) y 1 ' s (interior). Pruébalo en línea!
Cómo funciona
fuente
Julia,
4634 bytesEsta es una función que acepta dos enteros y devuelve una matriz booleana bidimensional.
Construimos una matriz n × m usando una comprensión de matriz con un doble
forbucle. Para cada índice de 1 a n y 1 a m , es decir, cada elemento de la matriz, establecemos el valor entruesi n > i > 1 y 1 < j < m . Esto es cierto en todas partes excepto en los límites, por lo que la matriz resultante tendrátrues en el mediofalseys alrededor del borde.Ejemplos:
¡Guardado 12 bytes gracias a Dennis!
fuente
CJam, 20 bytes
La entrada debe estar en la forma
height width, la salida es una cuadrícula ASCII que usa espacios para el centro y#el límite.Pruébalo aquí.
Explicación
fuente
Pyke,
1615 bytesPruébalo aquí!
Explicación:
Para salida prettificada, use este código .
O 13 bytes con una máscara puesta a cero alrededor del borde (caracteres medios distintos de cero)
Pruébalo aquí!
fuente
JavaScript (ES6), 80
82 85Editar 3 bytes guardados gracias a @Neil
Editar 2 bytes guardados usando
reducepor una vezFunción anónima que devuelve una cadena de varias líneas
Prueba
fuente
!--h|!oya es un número entero? De lo contrario, me gusta el uso de!o.Ruby, 63 bytes
Función anónima, imprime en STDOUT. Frontera es
#.fuente
JavaScript (ES6), 97 bytes
Crea un anillo de
0s. Probablemente un enfoque terrible, pero quería evitar casos extremos.fuente
JavaScript (ES6), 77 bytes
fuente
f(4)(4)->Array [ Array[4], Array[4], Array[4], Array[4] ]Retina ,
4543 bytesLa entrada debe estar en la forma
height width, la salida es una cuadrícula ASCII que se usa1para el centro y#el límite.Pruébalo en línea!
Explicación
Convierta cada número
Nen una cadena deNunos (es decir, convierta la entrada en unario).Relacionar cada
1enheighty sustituirla porwidth, al mismo tiempo que a juego todo lo demás y retirarlo. Hacemos esto abusando de una etapa dividida. Esto crea unaw x hcuadrícula.Finalmente, reemplazamos cada uno
1con uno#que se encuentra en la primera línea, la última línea o al principio o al final de una línea.fuente
En realidad , 23 bytes
Pruébalo en línea!
Este enfoque es muy similar a mi enfoque en este desafío relacionado .
Explicación:
fuente
QBasic, 69 bytes
Toma dimensiones como
width,height. El valor booleano de la prueba is-it-on-the-border simplemente se imprime:-1para verdadero y0para falso. Una ejecución de muestra se ve así:Bonus: versión gráfica, 88 bytes
Creo que esto cuenta como "no una línea". Cuando la
MODexpresión es falsa (0),PSETtraza un píxel negro; cuando es cierto (-1),PSETaparentemente traza un píxel blanco. Aquí17,31, se muestra en tamaño 2x:fuente
TSQL,
10710597 bytesfuente
Unicornio ,
2623 bytes¿Porque a quién no le gustan los unicornios?
Explicación (salida del "programa de lista"):
Salida para
tilesX= 3,tilesY= 5:Nota: Esta versión solo funciona para
tilesXhasta 6 ytilesYhasta 5. Sin embargo, la pregunta no menciona qué rango debemos admitir, así que supongo que esto está bien. De lo contrario, una pequeña adición al programa produce esta alternativa, que admite un rango ligeramente mayor:Unicornio,
3027 bytesAl agregar
x0y9, que comienza el cuadro en (0,9), el programa funciona paratilesXhasta 9 ytilesYhasta 9 (porque la entrada solo sube a 9).fuente
J, 16 bytes
Use la forma
$para crear un rectángulo de todos del tamaño de las entradas, y luego use la forma complementaria de Enmendar}para convertir el interior en ceros.Pruébalo en línea!
fuente
Perl 5 , 76 + 1 (
-a) = 77 bytesPruébalo en línea!
fuente
Perl 5, 45 + 1 (
-p) = 46 byteslos siguientes 45 bytes no manejan tileY = 1
Pruébalo en línea
fuente