El siguiente patrón formará la base de este desafío.
/\
\/
/\
/ \
/ \
/\/ \/\
\/\ /\/
\ /
\ /
\/
/\
\/
Dado un ancho y una altura de entrada, cada uno >=1
, genera el patrón de arte ASCII anterior repetido tantas veces, uniéndose (y superponiéndose) en los diamantes pequeños.
Por ejemplo, aquí hay una entrada con width = 2
y height = 1
:
/\ /\
\/ \/
/\ /\
/ \ / \
/ \ / \
/\/ \/\/ \/\
\/\ /\/\ /\/
\ / \ /
\ / \ /
\/ \/
/\ /\
\/ \/
Aquí hay una entrada width = 3
y height = 2
:
/\ /\ /\
\/ \/ \/
/\ /\ /\
/ \ / \ / \
/ \ / \ / \
/\/ \/\/ \/\/ \/\
\/\ /\/\ /\/\ /\/
\ / \ / \ /
\ / \ / \ /
\/ \/ \/
/\ /\ /\
\/ \/ \/
/\ /\ /\
/ \ / \ / \
/ \ / \ / \
/\/ \/\/ \/\/ \/\
\/\ /\/\ /\/\ /\/
\ / \ / \ /
\ / \ / \ /
\/ \/ \/
/\ /\ /\
\/ \/ \/
Reglas y E / S
- La entrada y salida se pueden dar por cualquier método conveniente .
- Puede imprimirlo en STDOUT o devolverlo como resultado de una función.
- Un programa completo o una función son aceptables.
- Cualquier cantidad de espacios en blanco extraños es aceptable, siempre y cuando los caracteres se alineen apropiadamente.
- 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).
Respuestas:
Lienzo ,
2625242118 bytesPruébalo aquí!
-3 bytes arreglando el
m
lienzo no repetidoExplicación:
fuente
JavaScript (ES8),
167161159 bytesNB: Esto codifica el patrón. Vea mi otra respuesta para un enfoque matemático más corto.
Toma entrada como
(width)(height)
.Pruébalo en línea!
¿Cómo?
Codificamos la mitad superior del patrón con dígitos:
\
/
Esto da:
Para la mitad inferior, usamos las filas4 , 3 , 2 , 0 con
/
e\
invertidas.fuente
JavaScript (ES6), 139 bytes
Esto está usando un enfoque bastante diferente de mi respuesta inicial, así que estoy publicando esto por separado.
Toma entrada como
(width)(height)
.Pruébalo en línea!
¿Cómo?
Dado el anchow la altura h , dibujamos el carácter de salida por carácter sobre una cuadrícula que es:
Para todas las demás celdas, calculamos:
Dibujamos un
"/"
if:Dibujamos un
"\"
if:O dibujamos un espacio si ninguna de estas condiciones se cumple.
fuente
C ++ (gcc) , 137 bytes
Pruébalo en línea!
Explicación
fuente
#include
Haskell , 179 bytes
Pruébalo en línea!
Haskell , 181 bytes
Pruébalo en línea!
fuente
reverse.map(map k)<>id
over le(++).reverse=<<map(map k)
ahorra 3 bytes en ambas soluciones.map t
puede llegar a sert<$>
ytake$10*x+2
ahorra otro byte demasiado y, finalmente, se puede utilizarcycle"\\ /"!!n
sobre"\\ /"!!mod n 3
- ahora el segundo es más corto :) Pruébelo en línea!Carbón ,
242220 bytesPruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Dibuja una octava parte del patrón original.
Duplícalo tres veces para completar el patrón original.
Copie el número requerido de veces horizontalmente.
Copie el número requerido de veces verticalmente.
fuente
Powershell, 146 bytes
Explicación
El patrón es una matriz de 10x10 caracteres:
La secuencia de comandos:
Dos cosas para el golf:
replace
.fuente
Perl 5
-p
, 148 bytesPruébalo en línea!
fuente
PHP, 159 bytes
patrón tomado de mazzy; traducido a 1-2-3, convertido a base26 -> decodificado por el programa
requiere PHP 5.5 o posterior. Ejecutar
-nr
o probarlo en línea .el cálculo puede ser más corto (como lo fue para Arnauld). Puedo investigar eso.
fuente
Kotlin ,
196135 bytesAhorró 61 bytes gracias a la sugerencia de ASCII-only de usar el algoritmo C ++ de AZTECCO.
Pruébalo en línea!
fuente
Pitón 3 ,
194192187127 bytesLa solución de @ ASCII-only:
Pruébalo en línea!
Solución original
Pruébalo en línea!
-2 bytes gracias a @Black Owl Kai que muestra que se puede acceder a las partes superior e inferior desde la matriz generada en lugar de hacerlo en variables separadas.
-5 bytes más gracias a @Black Owl Kai usando una forma más creativa para almacenar los diamantes
Genera esta porción de cada diamante:
A
/\
agregado al final de cada fila para completarlo. A continuación, las/
s y\
s se intercambian para formar la parte superior de cada diamante, y el orden de las líneas se invierte para formar la mitad inferior. Finalmente, agrega en la fila superior de/\
sy la fila inferior de\/
s para completar la imagen.fuente
+=
/*=
asignaciones y volteando todo el diamante al revés, haciendo que la última cadena sea más fácil de almacenar