Escriba el código más corto medido por el recuento de bytes para generar una cuadrícula ASCII compuesta de rombos, dados los siguientes parámetros:
- m - número de rombos completos en una fila
 - n - número de filas
 - s - lado del rombo más pequeño
 - r - nivel de anidamiento - cuántos rombos hay dentro de los "base" (que son fonud entre las intersecciones de la cuadrícula)
 
Ejemplos
1. Input: 5 3 1 0
Output:
/\/\/\/\/\
\/\/\/\/\/
/\/\/\/\/\
\/\/\/\/\/
/\/\/\/\/\
\/\/\/\/\/
A 5x3 grid of rhombi with side 1, no nesting
2. Input: 3 2 2 0
Output:
 /\  /\  /\
/  \/  \/  \
\  /\  /\  /
 \/  \/  \/ 
 /\  /\  /\
/  \/  \/  \
\  /\  /\  /
 \/  \/  \/ 
A 3x2 grid of rhombi with side 2, no nesting
3. Input: 5 2 1 2
Output:
///\\\///\\\///\\\///\\\///\\\
///\\\///\\\///\\\///\\\///\\\
///\\\///\\\///\\\///\\\///\\\
\\\///\\\///\\\///\\\///\\\///
\\\///\\\///\\\///\\\///\\\///
\\\///\\\///\\\///\\\///\\\///
///\\\///\\\///\\\///\\\///\\\
///\\\///\\\///\\\///\\\///\\\
///\\\///\\\///\\\///\\\///\\\
\\\///\\\///\\\///\\\///\\\///
\\\///\\\///\\\///\\\///\\\///
\\\///\\\///\\\///\\\///\\\///
A 5x2 grid of rhombi with side 1 (the smallest rhombus), level of nesting is 2
4. Input: 4 2 2 1
Output:
 //\\  //\\  //\\  //\\ 
///\\\///\\\///\\\///\\\
//  \\//  \\//  \\//  \\
\\  //\\  //\\  //\\  //
\\\///\\\///\\\///\\\///
 \\//  \\//  \\//  \\//   
 //\\  //\\  //\\  //\\ 
///\\\///\\\///\\\///\\\
//  \\//  \\//  \\//  \\
\\  //\\  //\\  //\\  //
\\\///\\\///\\\///\\\///
 \\//  \\//  \\//  \\//   
A 4x2 grid of rhombi with side 2 with level of nesting 1 
5. Input: 4 2 3 3
Output:
  ////\\\\    ////\\\\    ////\\\\    ////\\\\
 /////\\\\\  /////\\\\\  /////\\\\\  /////\\\\\
//////\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\
//////\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\
/////  \\\\\/////  \\\\\/////  \\\\\/////  \\\\\
////    \\\\////    \\\\////    \\\\////    \\\\
\\\\    ////\\\\    ////\\\\    ////\\\\    ////
\\\\\  /////\\\\\  /////\\\\\  /////\\\\\  /////
\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\//////
\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\//////
 \\\\\/////  \\\\\/////  \\\\\/////  \\\\\/////  
  \\\\////    \\\\////    \\\\////    \\\\////  
  ////\\\\    ////\\\\    ////\\\\    ////\\\\
 /////\\\\\  /////\\\\\  /////\\\\\  /////\\\\\
//////\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\
//////\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\
/////  \\\\\/////  \\\\\/////  \\\\\/////  \\\\\
////    \\\\////    \\\\////    \\\\////    \\\\
\\\\    ////\\\\    ////\\\\    ////\\\\    ////
\\\\\  /////\\\\\  /////\\\\\  /////\\\\\  /////
\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\//////
\\\\\\//////\\\\\\//////\\\\\\//////\\\\\\//////
 \\\\\/////  \\\\\/////  \\\\\/////  \\\\\/////  
  \\\\////    \\\\////    \\\\////    \\\\////  
A 4x2 grid of rhombi with side 3, level of nesting 3
Asegúrese de mostrar el rombo parcialmente visible en los bordes y esquinas donde sea necesario.

Respuestas:
SOGL V0.12 , 20 bytes
Pruébalo aquí! Toma la entrada en el orden inverso de lo que son en los ejemplos: r, s, n, m.
Explicación:
fuente
∙*...Carbón ,
483937 bytesPruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Dibuja un cuadrado de tamaño
r + 1. Este es un cuarto de un diamante anidado de tamaño 1.Copie el cuadrado 1 cuadrado a la derecha y hacia abajo
s - 1para obtener el tamaño correcto.Reflexiona para que se convierta en un diamante anidado completo.
Calcule el tamaño de este diamante anidado.
Copie el diamante en los
m - 1momentos correctos .Copie el diamante hacia abajo
n - 1veces.fuente
Python 2 ,
160159158 bytes-1 byte gracias a Jonathan Frech
Pruébalo en línea!
Esto utiliza el hecho de que la parte inferior del rombo es la parte superior invertida (
[::-1]), iterandorange(n*2)y usando~x%2*2-1para controlar si es la parte superior o inferior.Para la parte superior (y la inferior), el lado derecho es solo el lado izquierdo invertido y reemplazado
/con\->l.replace(*'/\\')..[::-1]Para generar el patrón / anidamiento
~-s*' '+'/'*(1+r*2)+~-s*' 'se usa para hacer que una cadena como///esa se repita y se corte:fuente
(1+r*2)puede ser(r-~r).Julia 0.6 , 190 bytes
Esta es una solución funcional que calcula para cada par de índices
i,jlo que debe mostrarse el símbolo.Pruébalo en línea!
Ilustración
Comience con una cuadrícula
r > 0significa líneas más gruesasManeje las esquinas comprobando qué línea de la cuadrícula original está más cerca
Un hada nos dice que eliminemos cada
s-1líneaAtravesar en diagonal y listo
fuente
JavaScript (ES6), 154 bytes
Calcula directamente el carácter en cada celda de la salida.
fuente
CJam, 44
Pruébalo en línea
Explicación:
fuente
C # (.NET Core) , 167 bytes
Pruébalo en línea!
Estoy sorprendido por el tamaño que logré; Inicialmente esperaba una solución más larga. Al decir esto, estoy seguro de que hay otros trucos que me he perdido.
DeGolfed
fuente
Python 2 ,
201189 bytesPruébalo en línea!
Utiliza el hecho de que la parte inferior es igual a la parte superior, pero cambia:
Guardado 22 bytes gracias a Jonathan Frech
fuente
s-i-1puede sers+~i, ahorrando dos bytes.r+1+min(...puede serr-~min(..., guardando otro.L=[(...)*m forpuede serL=[m*(...)for, guardando un byte más.L+=[...];print'\n'.join(L*n)puede serprint'\n'.join((L+[...])*n)guardar otro byte, resultando en 196 bytes .s+r-i-1cons+~i+r.execformato de cadena.Perl 5, 159 + 3 (-anl) bytes
Pruébalo en línea
fuente