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 - 1
para 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 - 1
momentos correctos .Copie el diamante hacia abajo
n - 1
veces.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-1
para 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,j
lo que debe mostrarse el símbolo.Pruébalo en línea!
Ilustración
Comience con una cuadrícula
r > 0
significa 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-1
lí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-1
puede sers+~i
, ahorrando dos bytes.r+1+min(...
puede serr-~min(...
, guardando otro.L=[(...)*m for
puede 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-1
cons+~i+r
.exec
formato de cadena.Perl 5, 159 + 3 (-anl) bytes
Pruébalo en línea
fuente