Todo mundo conhece a sequência de Fibonacci:
você pega um quadrado, anexa um quadrado igual a ele e, em seguida, anexa repetidamente um quadrado cujo comprimento lateral é igual ao maior comprimento lateral do retângulo resultante.
O resultado é uma bela espiral de quadrados cuja sequência de números é a sequência de Fibonacci :
Mas, e se não quiséssemos usar quadrados?
Se usarmos triângulos equilaterais - em vez de quadrados - de maneira semelhante, obteremos uma espiral igualmente bonita de triângulos e uma nova sequência: a sequência Padovan , também conhecida como A000931 :
Tarefa:
Dado um número inteiro positivo, , saída , o ° prazo na sequência Padovan ou as primeiras termos.
Suponha que os três primeiros termos da sequência sejam todos . Assim, a sequência começará da seguinte forma:
Entrada:
Qualquer número inteiro positivo
Entrada inválida não precisa ser levada em consideração
Resultado:
O ° prazo na sequência Padovan OU os primeiros termos da sequência Padovan.N
Se os primeiros termos forem impressos, a saída poderá ser o que for mais conveniente (lista / matriz, sequência de linhas múltiplas, etc.)
Pode ser indexado ou indexado
Casos de Teste:
(0-indexados, th prazo)
Input | Output
--------------
0 | 1
1 | 1
2 | 1
4 | 2
6 | 4
14 | 37
20 | 200
33 | 7739
(Indexados em 1, primeiros termos)
Input | Output
--------------
1 | 1
3 | 1,1,1
4 | 1,1,1,2
7 | 1,1,1,2,2,3,4
10 | 1,1,1,2,2,3,4,5,7,9
12 | 1,1,1,2,2,3,4,5,7,9,12,16
Regras:
Isso é código-golfe : quanto menos bytes, melhor!
As brechas padrão são proibidas.
14
(0-indexado) é mostrado como saída28
enquanto eu acredito que deveria render37
a_0=1, a_1=0, a_2=0
. Ele acaba sendo deslocado um pouco, porque entãoa_5=a_6=a_7=1
Respostas:
Gelatina , 10 bytes
Experimente online!
1 indexado. Calcula o maior elemento de:⎡⎣⎢0 010 00 00 01110 0⎤⎦⎥n
onde a matriz binária é convenientemente calculada como:⎡⎣⎢i s p r i m e (0)i s p r i m e (3)i s p r i m e (6)i s p r i m e (1)isprime(4)isprime(7)isprime(2)isprime(5)isprime(8)⎤⎦⎥
(isso é uma total coincidência.)
fonte
Oásis , 5 bytes
nono termo indexado a 0
Experimente online!
Explicação
fonte
Geléia ,
10 98 bytesUm link monádico que aceita
n
(indexado 0) que produzP(n)
.Experimente online!
Quão?
ImplementaçõesP( n ) = ∑⌊ n2⌋i = 0( i+1n - 2 i)
E aqui está um "duplo"
... um método totalmente diferente também para 8 bytes (este é 1 indexado, mas muito mais lento):
fonte
Haskell , 26 bytes
Experimente online! Gera o nono termo indexado a zero.
Eu pensei que a solução recursiva "óbvia" abaixo seria imbatível, mas então eu achei isso. É semelhante à expressão clássica de golfe
l=1:scanl(+)1l
para a lista infinita de Fibonacci, mas aqui a diferença entre elementos adjacentes é o termo 4 posições de volta. Podemos escrever mais diretamentel=1:1:zipWith(+)l(0:l)
, mas isso é mais longo.Se esse desafio permitisse a saída infinita da lista, poderíamos cortar a primeira linha e ter 20 bytes.
27 bytes
Experimente online!
fonte
Python 2 , 30 bytes
Experimente online!
Retorna o nono termo zero indexado. Saídas
True
para 1.fonte
Wolfram Language (Mathematica) , 33 bytes
Indexado em 1, retorna o enésimo termo
Experimente online!
fonte
Oitava / MATLAB,
3533 bytesProduz os primeiros n termos.
Experimente online!
Como funciona
Função anônima que implementa um filtro recursivo .
'cbaa'-98
é uma forma mais curta de produzir[1 0 -1 -1]
.2:n<5
é uma forma mais curta de produzir[1 1 1 0 0 ··· 0]
( n- 1 termos).filter(1,[1 0 -1 -1],[1 1 1 0 0 ··· 0])
passa a entrada[1 1 1 0 0 ··· 0]
por um filtro de tempo discreto definido por uma função de transferência com coeficiente numerador1
e coeficiente denominador[1 0 -1 -1]
.fonte
J , 22 bytes
-2 bytes graças a ngn e Galen
formulário fechado, 26 bytes
Experimente online!
iterativo, 22 bytes
Experimente online!
fonte
1:
->#
: Experimente online!1:
->1
. "adverso" funciona com um substantivo à direita, aparentementeRetina ,
4742 bytesExperimente online! Produz os primeiros
n
termos em linhas separadas. Explicação:Substitua a entrada pelos termos para
-2
,-1
e0
.Gere os próximos
n
termos usando a relação de recorrência.*_
aqui é curto para o$&*_
qual converte o (primeiro) número da correspondência em unário, enquanto$1*
é curto para o$1*_
qual converte o número do meio em unário. O$.(
retorna a soma decimal de seus argumentos unários, ou seja, a soma do primeiro e do meio números.Descarte os seis primeiros caracteres, ou seja, as três primeiras linhas.
fonte
Cubix , 20 bytes
Este é indexado 0 e emite o N ° termo
Experimente online!
Envolve em um cubo com comprimento lateral 2
Assista correr
I010
- Inicia a pilha+p?
- Adiciona o topo da pilha, puxa o contador da parte inferior da pilha e testa/;UO@
- Se o contador for 0, reflita na face superior, remova os TOS, inversão de marcha, saída e pare\(sqq;W
- Se o contador for positivo, reflita, diminua o contador, troque o TOS, empurre de cima para baixo duas vezes, remova o TOS e mude a faixa de volta para o loop principal.fonte
Python 2 ,
5648 bytesExperimente online!
Retorna o enésimo valor, indexado em 0.
fonte
Perl 6 , 24 bytes
Experimente online!
Uma sequência gerada bastante padrão, com cada novo elemento gerado pela expressão
* + * + !*
. Isso adiciona o terceiro elemento anterior, o segundo elemento anterior e a negação lógica do elemento anterior, que é sempreFalse
, que é numericamente zero.fonte
05AB1E , 8 bytes
Experimente online!
1Ð)
1D)
3Å1
£
Quão?
fonte
1Ð)
pode ter 2 bytes tbh. Eu posso pensar em seis alternativas diferentes de 3 bytes , mas não em 2 bytes.APL (Dyalog Unicode) ,
201817 bytes SBCSEste código é indexado em 1. É o mesmo número de bytes para obter
n
itens da sequência Padovan, pois você precisa eliminar os últimos membros extras. Também é o mesmo número de bytes para obter a indexação 0.Edit: -2 bytes graças a ngn. -1 byte graças a ngn
Experimente online!
Explicação
fonte
K (ngn / k) ,
2420 bytes-4 bytes graças a ngn!
Experimente online!
Indexado em 0, primeiros termos N
fonte
f[x-2]+f[x-3]
->+/o'x-2 3
(o
é "recorrente")1:
->#
na solução jcódigo de máquina x86 de 32 bits, 17 bytes
Desmontagem:
É 0 indexado. A inicialização é convenientemente alcançada calculando-se eax * 0. O resultado de 128 bits é 0 e entra em edx: eax.
No início de cada iteração, a ordem dos registros é ebx, eax, edx. Eu tive que escolher a ordem certa para tirar proveito da codificação da
xchg eax
instrução - 1 byte.Eu tive que adicionar 4 ao contador de loop para permitir que a saída chegasse
eax
, o que mantém o valor de retorno da função nafastcall
convenção.Eu poderia usar outra convenção de chamadas, que não requer salvamento e restauração
ebx
, masfastcall
é divertido mesmo assim :)fonte
Gelatina , 11 bytes
Experimente online!
Indexado a 0.
fonte
Lua 5.3,
49.48 bytesExperimente online!
Vanilla Lua não possui coerção de booleanos em strings (
tonumber(true)
retornos paresnil
), então você deve usar um operador pseudo-ternário. Esta versão é indexada em 1, como toda Lua. A1or
peça deve ser alterada para1 or
Lua 5.1, que possui uma maneira diferente de lexar números.fonte
Ruby , 26 bytes
Experimente online!
fonte
JavaScript (ES6), 23 bytes
Experimente online!
fonte
true
é o mesmo que retornar1
se o restante da saída for números.Japonês
-N
, 12 bytesTente
fonte
TI-BASIC (TI-84), 34 bytes
A entrada é no
Ans
.A saída está dentro
Ans
e é impressa automaticamente.Imaginei que havia passado tempo suficiente, além de várias respostas terem sido postadas, das quais muitas foram superadas por essa resposta.Exemplo:
Explicação:
fonte
Pitão, 16 bytes
Isso define a função
y
. Experimente aqui!Aqui está uma solução mais divertida, apesar de ter 9 bytes a mais; bytes podem ser raspados.
Isso usa a definição dada por David Callan na página da OEIS: "a (n) = número de composições de n em partes ímpares e> = 3." Experimente aqui! Ele recebe entrada diretamente em vez de definir uma função.
fonte
y-b2y-b3
talvez pudesse ser refatorado com bifurcado ouL
? Embora declarar uma matriz de 2 elementos seja caro.yL-Lb2,3
é mais :(+y-b2y-b3
com osmy-bdhB2
que é a mesma quantidade de bytes;hB2
resulta na matriz[2, 3]
hB2
. Pena que é a mesma contagem de bytes.d
no mapa.Java, 41 bytes
Não é possível usar um lambda (erro de tempo de execução). Porta desta resposta Javascript
TIO
fonte
R + pryr ,
3836 bytesFunção recursiva indexada a zero.
Experimente online!
Obrigado a @ Giuseppe por apontar dois bytes obviamente desnecessários.
fonte
pryr
, o idioma deve serR + pryr
e pode ser de 36 bytesC (clang) ,
4133 bytesExperimente online!
fonte
C # (compilador interativo do Visual C #) , 34 bytes
Experimente online!
fonte
Perl 5 , 34 bytes
Experimente online!
fonte
Wolfram Language (Mathematica) , 26 bytes
Experimente online!
fonte
Pari / GP , 28 bytes
Indexado a 0.
Experimente online!
Pari / GP , 35 bytes
1 indexado.
Experimente online!
fonte