En primer lugar ... Me gustaría desearles a todos una Feliz Navidad (lo siento si llego un día tarde a su zona horaria).
Para celebrar la ocasión, vamos a dibujar un copo de nieve. Debido a que el año es 201 5 y la Navidad es el día 2 5 (para una gran parte de las personas), dibujaremos un copo Penta . El pentaflake es un fractal simple compuesto de pentágonos. Aquí hay algunos ejemplos (tomados de aquí) :
Cada Pentaflake tiene un orden n. El Pentaflake de orden 0 es simplemente un pentágono. Para todas las demás órdenes n, un Pentaflake se compone de 5 Pentaflakes del orden anterior dispuestos alrededor de un sexto Pentaflake del orden anterior. Por ejemplo, un Pentaflake de orden 1 se compone de 5 pentágonos dispuestos alrededor de un pentágono central.
Entrada
El orden n
. Esto puede darse de cualquier manera, excepto la de una variable predefinida.
Salida
Una imagen de la orden n
Pentaflake. Debe tener al menos 100 px de ancho y 100 px de largo. Puede guardarse en un archivo, mostrarse al usuario o enviarse a STDOUT
. No se permite ninguna otra forma de salida. Todos los formatos de imagen existentes antes de este desafío están permitidos.
Victorioso
Como codegolf, la persona con el menor número de bytes gana.
fuente
n
no se puede predefinir en su archivo de script. Usted puede leern
desdeSTDIN
, rápido desde el usuario, tomarlo como un argumento de línea de la función / commad ... básicamente cualquier cosa que desee, excepto para incrustar directamente en el código.Respuestas:
Matlab, 226
Sin golf:
Quinta iteración (ya tomó bastante tiempo renderizar).
Una ligera alteración del código (desafortunadamente más bytes) da como resultado esta belleza =)
Ah, y otro:
fuente
Mathematica, 200 bytes
La última línea es una función que se puede aplicar a un número entero
n
.Los nombres de las funciones de Mathematica son largos. Alguien debería codificarlos en entropía y crear un nuevo lenguaje a partir de él. :)
Cuando se aplica a
1
:Cuando se aplica a
2
:fuente
MATLAB,
235233217 bytesActualización: un montón de sugerencias de @flawr me ayudaron a perder 16 bytes. Como solo esto me permitió superar la solución de flawr , y que no habría encontrado el desafío sin la ayuda de flawr en primer lugar, considere esto como una presentación conjunta de nosotros :)
Esta es otra solución de MATLAB, esta basada en una filosofía de sistemas de funciones iteradas. Estaba principalmente interesado en desarrollar el algoritmo en sí, y no he jugado demasiado en la solución. Seguramente hay margen de mejora. (Contemplé el uso de una aproximación de punto fijo codificada para
c
, pero eso no sería bueno).Versión sin golf:
Resultado para
N=5
(con un posterioraxis equal off
para la belleza, pero espero que no cuente en bytes):fuente
R=[p(:,2),[-p(2,2);p(1,2)]];
(y eliminando el anteriorR,C,S
) y puede usarq=[q R^l*[c-1+t(1,:);t(2,:)]/c]
y creoc=1.5+5^.5/2;
q
, incluso tuve un par de paréntesis innecesarios allí ... 3. gracias, pero ¿qué es esta magia ??: D 4. Dado que la solución ahora es más corta que la original, considero que esta también es en parte su presentación.Mathematica, 124 bytes
Mathematica admite una nueva sintaxis
Table
desde la versión 10:Table[expr, n]
que guarda otro byte.Table[expr, n]
es equivalente aTable[expr, {n}]
.El núcleo de esta función es usar números complejos para hacer transformaciones y luego convertirlas en puntos por
ReIm
.Caso de prueba:
fuente
π
ocupa dos bytes en UTF-8, por lo que sale a 125 bytes en total.Mathematica,
199196 bytesBorrando la respuesta de Peter Richter por un pelo, esta es la mía. Se apoya en gran medida en la funcionalidad gráfica, y menos en matemáticas y FP. La construcción integrada CirclePoints es nueva en 10.1 .
Editar: Gracias a DumpsterDoofus por GoldenRatio
fuente
((1+Sqrt@5)/2)
conGoldenRatio
. También en la segunda línea, creo que debería ser enp@0=Polygon@c[{1,0},5];
lugar dep@0=Polygon@cp[{1,0},5];
. (Por cierto, en realidad soy Peter, tengo dos perfiles jajaja).Mathematica, 130 bytes
Utilizo una técnica similar a la respuesta de njpipeorgan (de hecho, robé su
2Pi I/5 == Pi.4I
truco), pero implementado como una función recursiva.Ejemplo de uso (uso
%
para acceder a la función anónima que se generó en la última línea):fuente