Dado el número de vértices n ≥ 3
y el "tamaño del paso" 1 ≤ m < n/2
(que indica la distancia entre dos vértices conectados), genera una representación gráfica del correspondiente poligrafo regular . Si el poligrama consta de múltiples bucles cerrados, cada bucle debe representarse en un color de línea diferente. (Si esto suena confuso, los ejemplos a continuación deberían aclarar las cosas).
Reglas
Es probable que cualquier solución razonable al problema satisfaga estas reglas automáticamente: solo están allí para poner algunas restricciones en los parámetros de la salida a fin de evitar respuestas como "Este bloque negro es totalmente un poligrama, pero no puede verlo porque Configuré el ancho de línea en más de 9000 "
- Puede representar el poligrama en un archivo (que puede escribirse en el disco o en la secuencia de salida estándar) o mostrarlo en la pantalla.
- Puede usar gráficos vectoriales o de trama. Si su salida está rasterizada, su imagen debe tener dimensiones de 400x400 píxeles o más, y el radio del poligramo (la distancia desde el centro a cada vértice) debe estar entre el 35% y el 50% de la longitud del lado.
- La relación de aspecto del poligrafo debe ser 1 (para que sus vértices se encuentren en un círculo apropiado): el lienzo de la imagen puede ser rectangular.
- Las líneas del poligrafo no deben ser más gruesas que el 5% del radio (y, por supuesto, deben tener un grosor distinto de cero para ser visibles).
- Puede renderizar ejes o un marco además del poligrafo, pero nada más.
- Puede elegir cualquier color de fondo (sólido).
- Para los poligramas que consisten en múltiples bucles cerrados, debe admitir al menos 6 colores visualmente distintos , todos los cuales deben ser diferentes del fondo. (La escala de grises está bien, siempre que los tonos estén lo suficientemente extendidos en todo el espectro). Su código aún debe funcionar para más de 6 bucles, pero los colores no tienen que distinguirse para ningún bucle adicional (es decir, también puede reutilizar colores de bucles anteriores en ese punto).
Este es el código de golf, por lo que gana la respuesta más corta (en bytes).
Ejemplos
Aquí están todas las salidas hasta n = 16
(donde corresponde la columna n
y la fila a m
):
Haga clic para una versión más grande.
Como ejemplos para grandes n
, aquí están (n, m) = (29, 11)
y (30, 12)
:
fuente
Respuestas:
MATLAB,
8581La función muestra un gráfico en la pantalla.
Resultado para n = 30, m = 12:
fuente
hold all
conduce a que el siguiente diagrama se dibuje sobre el primero ... No sé si tenemos un consenso sobre la reutilización de las funciones honesto.hold on
guardar un byte de todos modos; si agrega cuatro bytes se vuelve reutilizable (clf\n
)hold
.hold all
aclf\nhold on
¿eso soluciona el problema?CJam, 114
Emite la imagen en formato ASCII PGM.
Puedes probarlo en línea , pero el resultado es bastante largo. Puede cambiar
400
y199
a números más pequeños para reducir el tamaño de la imagen.CJam no tiene ningún concepto de imágenes, dibujos, líneas o formas, por lo que generé la imagen en una matriz cuadrada, píxel por píxel (un número que representa un tono gris para cada píxel).
Así es como se ve el resultado
30 12
:fuente
Mathematica, 70 bytes
Bueno ... esta es mi implementación de referencia que supera las dos presentaciones hasta ahora. No tengo la intención de ganar mi propio desafío, así que espero que alguien supere esto.
La salida es como las tramas en el desafío en sí, excepto que no estoy eliminando los ejes aquí:
fuente