La tarea es dibujar un polígono regular de n lados usando solo una brújula y una regla sin marcar.
La entrada (n) es uno de los siguientes 10 números: 3, 4, 5, 6, 8, 10, 12, 15, 16, 17.
Método : como solo tienes una regla y una brújula, solo puedes dibujar puntos, líneas y círculos.
Solo se puede dibujar una línea:
- a través de dos puntos existentes.
Un círculo solo se puede dibujar:
- con un punto como centro y con su perímetro pasando por un segundo punto.
Solo se puede dibujar un punto:
en la intersección de dos líneas,
en la (s) intersección (es) de una línea y un círculo,
en la (s) intersección (es) de dos círculos,
Al principio, cuando puedas sacar 2 puntos para comenzar.
A través de este proceso (y solo a través de este proceso) debe dibujar las n líneas del n-gon solicitado, junto con cualquier trabajo requerido para llegar a esa etapa.
EDITAR: Se debe calcular la posición de las intersecciones, pero las líneas y los círculos se pueden dibujar por cualquier medio que proporcione el idioma.
La salida es una imagen de un polígono regular de n lados, que muestra el funcionamiento.
Gráficamente no hay restricciones en el tamaño de la imagen, el formato, el grosor de la línea o cualquier otra cosa que no se mencione aquí. Sin embargo, debe ser posible distinguir visualmente distintas líneas, círculos y sus intersecciones. Adicionalmente:
- Las n líneas que componen los lados de su n-gon deben ser de un color diferente a su 'trabajo' (es decir, cualquier punto, círculo u otras líneas) y un color diferente nuevamente a su fondo.
- El trabajo puede dejar los bordes del área de dibujo, excepto los puntos, que deben estar dentro de los límites visibles de la imagen.
- Un círculo puede ser un círculo completo o simplemente un arco (siempre que muestre las intersecciones requeridas).
Una línea es infinita (es decir, abandona el área de dibujo) o está cortada en los dos puntos por los que pasa.EDITAR: Se puede dibujar una línea en cualquier longitud. Los puntos solo se pueden crear donde la línea dibujada se cruza visualmente.- Se puede dibujar un punto como desee, incluso sin marcarlo.
La puntuación es doble, una presentación obtiene 1 punto por entrada que admite, para un máximo de 10 puntos. En caso de empate, gana el conteo de bytes más corto.
Se reconocerán las presentaciones que puedan construir n-gons en la menor cantidad de pasos o que puedan construir n-gons fuera del rango dado, pero no ayudará a su puntaje.
CIRCLE 0,0,500
o debo hacerR=SQRT(300^2+400^2): CIRCLE 0,0,R
? (Por cierto, calcular las posiciones de las intersecciones es probablemente más difícil que las líneas y los círculos).Carl Friedrich Gauss in 1796 showed that a regular n-sided polygon can be constructed with straightedge and compass if the odd prime factors of n are distinct Fermat primes
Respuestas:
BBC Basic, 8 polígonos: 3,4,5,6,8,10,12,15 lados (también 60 lados)
Descargue el emulador en http://www.bbcbasic.co.uk/bbcwin/download.html
Decidí no incluir 16 lados, simplemente porque mi pre-construcción se estaba volviendo desordenada. Se necesitarían 2 círculos más y una línea. Por cierto 17 lados es muy complicado, y tal vez iría mejor como un programa separado.
Obtuve más rendimiento por agregar 2 círculos a mi construcción original para hacer el pentágono, ya que esto también me dio acceso a 10,15 y 60 lados.
El programa realiza una construcción previa antes de solicitar cualquier entrada del usuario. Esto es suficiente para definir al menos 2 puntos en el círculo principal que corresponden a vértices adyacentes de una figura de 3, 4, 5, 6, 8, 10, 12, 15 o 60 lados. Los puntos se almacenan en un conjunto de matrices de 99 elementos, en los que los elementos 0-59 se reservan para puntos igualmente espaciados alrededor de la circunferencia. Esto es principalmente por claridad, el octágono no encaja perfectamente en 60 puntos, por lo que se necesita cierta flexibilidad allí (y también para el 16-gon si se incluyera). La imagen se ve como la imagen de abajo, en blanco y gris, con solo los dos círculos en amarillo están dedicados exclusivamente a formas con múltiplos de 5 lados. Ver http://en.wikipedia.org/wiki/Pentagon#mediaviewer/File:Regular_Pentagon_Inscriptions_in_a_Circle_240px.gifpara mi método preferido de dibujo del pentágono. El ángulo alegre es evitar las líneas verticales, ya que el programa no puede manejar gradientes infinitos.
El usuario ingresa un número
d
para el número de lados requeridos. El programa busca en la matriz el índice del primero de los dos puntos (el siguiente está a 60 / d de distancia en sentido horario).Luego, el programa recorre el proceso de dibujar un círculo centrado en el segundo punto que pasa por el primero, y calcula la nueva intersección para recorrer el círculo principal. Los círculos de construcción se dibujan en azul y el polígono requerido se dibuja en rojo. Las imágenes finales se ven así.
Estoy bastante satisfecho con ellos. BBC Basic realiza los cálculos con suficiente precisión. Sin embargo, es evidente (particularmente con 15 y 60 lados) que BBC Basic tiende a dibujar círculos con un radio un poco más pequeño de lo que debería.
fuente
Mathematica,
234 polígonos, 759 bytesPuntos aleatorios:
Switch
para seleccionar los círculos y líneas relevantes para cada construcción. De esa manera podría reutilizar muchas primitivas entre ellos.Aquí está el código sin golf:
Y aquí están los resultados:
fuente
Switch
. Eso probablemente me permitiría reutilizar muchas más líneas y puntos circulares.