Esta espiral geométrica parece complicada, pero es bastante simple de dibujar; toma el siguiente cuadro:
Dibuje una línea recta entre la esquina de la caja y cierta distancia establecida sobre la siguiente esquina en sentido antihorario.
Continúe este patrón hacia adentro, siempre manteniéndose a esa distancia establecida de la esquina de la siguiente línea. Aquí hay algunas líneas más en.
Como puede ver, a medida que el patrón continúa, la espiral se acerca al centro y los cuadros que dibuja comienzan a girar. Tenga en cuenta que la distancia permanece constante, independientemente del ángulo.
El reto
La inspiración (y también gracias a la maravillosa persona que me presentó este concepto <3)
Dada una entrada numérica (posiblemente fraccionaria) del 1 al 25, escriba una imagen en el disco que use este patrón o muestre la salida en la pantalla, donde la distancia desde cada esquina es la distancia de un lado inicial del cuadro dividido por la entrada . Continúe el patrón hacia adentro hasta que la distancia desde la esquina especificada sea mayor que la longitud del siguiente lado.
Reglas
- No puede utilizar elementos integrados para esta creación en espiral, pero puede utilizar las funciones integradas de procesamiento de imágenes.
- Si escribe en el disco, debe generar una imagen en cualquiera de .jpg, .gif, .tiff, .pbm, .ppm y .png.
- La longitud del lado inicial debe ser de al menos 500 píxeles.
- La esquina inicial puede ser la que elija.
- Como siempre, las lagunas estándar no están permitidas.
fuente





Respuestas:
Zapatos (Ruby) 163 bytes
Shoes es un juego de herramientas GUI basado en rubí.
Sin golf
Salidas n = 4 yn = 25
Tenga en cuenta que la forma siempre termina en un triángulo, que colapsa aún más en una línea. Reemplazar
size-1consizeno hace ninguna diferencia en la apariencia de la salida y ahorraría 2 bytes, pero lo dejé para la corrección teórica.Salida n = 300
¡Inspirado por un comentario de OP, los números más altos se ven geniales!
fuente
lineen la línea de fondo?*convierte la matriz de cuatro elementos formada por la conversión de los números complejos en cuatro parámetros paraline. La sintaxis estándar esline(*(a[j-1].rect+a[j].rect))eliminar los paréntesis y agregar un espacio ya es un ahorro de un byte. Al eliminar el espacio, Ruby intenta multiplicarselinepor el contenido de los paréntesis, lo que no tiene sentido y hace que arroje un error. Hay algo de golf que hacer aquí, pero no eso. Lo investigaré más tarde.upto. Además, ¿has intentado eliminar el('')afterask? No lo he probado, pero puede ser innecesarioJava,
10561005985948522508507504502501493492488474465458 bytesGracias a CoolestVeto y ECS por otras formas de reducir el tamaño. :-)
fuente
Maravilloso,
412411403398 bytesfuente
Caught: groovy.lang.MissingMethodException: No signature of method: static s.div() is applicable for argument types: (java.lang.Float) values: [25.0] Possible solutions: is(java.lang.Object), wait(), run(), run(), find(), any() groovy.lang.MissingMethodException: No signature of method: static s.div() is applicable for argument types: (java.lang.Float) values: [25.0] Possible solutions: is(java.lang.Object), wait(), run(), run(), find(), any() at s$1.<init>(s.groovy:3) at s.run(s.groovy:2)