Dado solo una regla y una brújula, inscriba un rombo dentro del rectángulo dado, compartiendo dos puntos opuestos.
Entrada
La entrada es las dimensiones del rectángulo. En el ejemplo que se muestra, eso sería 125, 50
. Puede tomar la entrada de la forma más conveniente (como dos enteros, lista, cadenas, etc.).
La dimensión más grande será de un mínimo de 100, mientras que la más pequeña será de un mínimo de 25. Ambos tope a 200.
Salida
La salida será una imagen (mostrada en la pantalla o guardada como un archivo) que muestra
- El rectángulo de entrada
- Todas las líneas / círculos "de trabajo"
- El rombo inscrito
En distintos colores. En la imagen de arriba, El rectángulo es negro, las líneas de trabajo son azules y el rombo naranja. Las líneas deben dibujarse en el orden que se muestra en la lista (por ejemplo, el rombo sobrescribe las líneas de trabajo y el rectángulo).
La imagen de salida debe ser lo suficientemente grande como para contener todo. Por ejemplo, los círculos que se muestran no pueden salir de los límites.
Método
El método utilizado en la imagen de ejemplo anterior es:
- Dibuja un círculo usando la esquina inferior izquierda como centro y la superior derecha como un punto en el perímetro, dando un radio igual a la diagonal del rectángulo.
- Haga lo mismo, pero intercambiando puntos centrales y perimetrales.
- Dibuja una línea entre las intersecciones de los dos círculos, dando una bisectriz perpendicular a la diagonal del rectángulo.
- Usa las intersecciones de la nueva línea y rectángulo para dibujar el rombo.
Esto funciona porque las diagonales interiores de un rombo siempre se bisecan perpendicularmente entre sí. Sin embargo, no incluyo una prueba completa de esto aquí.
Este no es el único método para obtener tu rombo, y puedes usar otro, dado que explicas lo que estás haciendo. Sin embargo, creo que es probablemente la más fácil.
Reglas
Solo puede dibujar círculos y líneas (o más bien, segmentos de línea). Un círculo se define con un punto central y un punto perimetral. Una línea se define por dos puntos cualesquiera. Las líneas no tienen que tener una longitud específica, pero al menos deben cubrir los puntos de definición (tenga en cuenta la imagen de ejemplo: la línea pasa un poco más allá de las intersecciones del círculo, pero no hasta el borde). Para los círculos, el radio desde el centro hasta el punto del perímetro elegido se considera una línea de trabajo y debe mostrarse.
Para rasterizar las líneas, puede usar cualquier algoritmo reconocido (por ejemplo, el de Bresenham), o confiar en cualquier componente que pueda tener su idioma. Si su salida está basada en vectores, asegúrese de que se muestre con una resolución al menos tan grande como el rectángulo de entrada en píxeles. Además, dibujará en un lienzo plano, por lo tanto, elimine las marcas de cuadrícula o los resultados extraños.
No hacer trampa! Solo puede determinar la ubicación de puntos / líneas / círculos utilizando lo que ha establecido hasta ahora. Si no puede explicar cómo usar sus líneas / círculos de trabajo para mostrar que es un rombo, lo está haciendo mal.
Puede usar cualquier par de puntos opuestos que desee, y el rectángulo no necesita dibujarse alineado con el eje, siempre que la salida sea correcta.
La entrada siempre será un rectángulo no cuadrado, así que no te preocupes por una carcasa especial.
Por último, este es el código estándar de golf, por lo que gana el tamaño más bajo en bytes.