Introducción
Similar a la secuencia de Fibonacci, la secuencia de Padovan ( OEIS A000931 ) es una secuencia de números que se produce al agregar términos anteriores en la secuencia. Los valores iniciales se definen como:
P(0) = P(1) = P(2) = 1
Los términos 0º, 1º y 2º son todos 1. La relación de recurrencia se establece a continuación:
P(n) = P(n - 2) + P(n - 3)
Por lo tanto, produce la siguiente secuencia:
1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12, 16, 21, 28, 37, 49, 65, 86, 114, 151, 200, 265, 351, ...
El uso de estos números como longitudes laterales de triángulos equiláteros produce una espiral agradable cuando los coloca todos juntos, al igual que la espiral de Fibonacci:
Imagen cortesía de Wikipedia.
Tarea
Su tarea es escribir un programa que recrea esta espiral por salida gráfica, con la entrada correspondiente a qué término.
Reglas
- Su envío debe ser capaz de manejar al menos hasta el décimo término (9)
- Su envío debe ser un programa completo o una función que reciba información y muestre un resultado gráfico (ya sea que genere una imagen o gráficos, etc.)
- Debe mostrar prueba de su salida gráfica en su envío
- Se permiten rotaciones de la salida, en múltiplos de 60 grados, con la misma representación
- Ir en sentido antihorario también está permitido
- Las lagunas estándar están prohibidas
Puede suponer que la entrada será> 0 y que se dará el formato correcto de entrada.
Tanteo
Este es el código de golf , por lo que gana el código más corto en bytes. ¡Feliz Año Nuevo a todos!
fuente
Respuestas:
Mathematica,
119108bytes¡Gracias a Martin Ender por guardar 11 bytes!
Función sin nombre que toma un argumento entero positivo (1 indexado) y devuelve la salida de gráficos. Ejemplo de salida para la entrada
16
:Desarrollado simultáneamente con la respuesta Matlab de flawr pero con muchas similitudes en el diseño, ¡incluso incluyendo la definición
I^(2/3)
de la sexta raíz de la unidad! Versión más fácil de leer:La línea 1 define la secuencia de Padovan
±n = P(n)
. La línea 4 crea una matriz anidada de números complejos, que se definen a loz
largo del camino; la última parte±# z^(#+{2,4,1})&~Array~#
genera muchos triples, cada uno de los cuales corresponde a los vectores que necesitamos dibujar para completar el triángulo correspondiente (±#
controla la longitud mientrasz^(#+{2,4,1})
controla las direcciones). La línea 3 elimina la anidación de la lista y luego calcula los totales acumulados de los números complejos, para convertir de vectores a coordenadas puras; la línea 2 luego convierte números complejos en pares ordenados de números reales y genera la línea poligonal correspondiente.fuente
Matlab,
202190 bytesSalida para
N=19
(indexación basada en 1):Explicación
La idea aproximada es básicamente trabajar con números complejos. Entonces los bordes de los triángulos apuntan siempre en la dirección de una sexta raíz de la unidad.
fuente
PHP + SVG, 738 bytes
Salida para 16
fuente
$k%6==0
puede ser$k%6<1
y$k%6==5
puede ser$k%6>4
.Python 3,
280, 262 bytes18 bytes guardados gracias a los ovs
Golfizado:
Lo mismo con algunos comentarios:
Captura de pantalla para
N=9
:fuente
dwitter 151
se puede probar en http://dwitter.net (usar pantalla completa)
La idea básica es el logotipo de tortuga, golf. ¡Robó la función P () desde arriba!
Me imagino que se podría jugar más por recursión, pero esto no está mal.
fuente
LOGOTIPO, 119 bytes
Para usar, haga algo como esto :
Salida de muestra (no se puede incrustar porque no es HTTPS y no se pudo cargar a imgur)
fuente