Introdução
Semelhante à Sequência de Fibonacci, a Sequência Padovan ( OEIS A000931 ) é uma sequência de números produzida pela adição de termos anteriores na sequência. Os valores iniciais são definidos como:
P(0) = P(1) = P(2) = 1
Os 0º, 1º e 2º termos são todos 1. A relação de recorrência é declarada abaixo:
P(n) = P(n - 2) + P(n - 3)
Assim, produz a seguinte sequência:
1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12, 16, 21, 28, 37, 49, 65, 86, 114, 151, 200, 265, 351, ...
Usar esses números como comprimentos laterais de triângulos equilaterais produz uma espiral agradável quando você os junta, como a Espiral de Fibonacci:
Imagem cortesia da Wikipedia
Tarefa
Sua tarefa é escrever um programa que recria essa espiral por saída gráfica, com entrada correspondente a qual termo.
Regras
- Seu envio deve ser capaz de lidar com pelo menos até o 10º período (9)
- Seu envio deve ser um programa ou função completo que receba informações e exiba um resultado gráfico (gera uma imagem ou gráficos, etc.)
- Você deve mostrar a prova de sua saída gráfica em seu envio
- São permitidas rotações da saída, em múltiplos de 60 graus, com a mesma representação
- Também é permitido ir no sentido anti-horário
- As brechas padrão são proibidas
Você pode assumir que a entrada será> 0 e que o formato correto da entrada será fornecido.
Pontuação
Isso é código-golfe , então o código mais curto em bytes vence. Feliz ano novo a todos!
fonte
Respostas:
Mathematica,
119108 bytesAgradecemos a Martin Ender por salvar 11 bytes!
Função sem nome, usando um argumento inteiro positivo (indexado a 1) e retornando saída gráfica. Exemplo de saída para a entrada
16
:Desenvolvido simultaneamente com a resposta do Matlab da flawr, mas com muitas semelhanças no design - incluindo inclusive a definição
I^(2/3)
para a sexta raiz da unidade! Versão mais fácil de ler:A linha 1 define a sequência de Padovan
±n = P(n)
. A linha 4 cria uma matriz aninhada de números complexos, definindoz
ao longo do caminho; a última parte±# z^(#+{2,4,1})&~Array~#
gera muitos triplos, cada um dos quais corresponde aos vetores que precisamos desenhar para completar o triângulo correspondente (ele±#
controla o comprimento enquantoz^(#+{2,4,1})
controla as direções). A linha 3 se livra do aninhamento da lista e calcula os totais em execução dos números complexos, para converter de vetores em coordenadas puras; a linha 2 converte números complexos em pares ordenados de números reais e gera a linha poligonal correspondente.fonte
Matlab,
202190 bytesSaída para
N=19
(indexação baseada em 1):Explicação
A idéia aproximada é basicamente trabalhar com números complexos. Então as arestas dos triângulos apontam sempre na direção de uma sexta raiz da unidade.
fonte
PHP + SVG, 738 bytes
Saída para 16
fonte
$k%6==0
pode ser$k%6<1
e$k%6==5
podem ser$k%6>4
.Python 3,
280, 262 bytes18 bytes salvos graças a ovs
Golfe:
A mesma coisa com alguns comentários:
Captura de tela para
N=9
:fonte
dwitter 151
pode ser testado em http://dwitter.net (use tela cheia)
idéia básica é logotipo tartaruga, golfed. roubou a função P () de cima!
Eu imagino que mais poderia ser jogado por recursão, mas isso não é ruim.
fonte
LOGO, 119 bytes
Para usar, fazer algo parecido com isso :
Saída de amostra (não é possível incorporar porque não é HTTPS e não foi possível carregar no imgur)
fonte