Definição
- a (1) = 1
- a (2) = 1
- a (n) = a (na (n-1)) + a (na (n-2)) para n> 2 onde n é um número inteiro
Tarefa
Dado inteiro positivo n
, gere a(n)
.
Casos de teste
n a(n)
1 1
2 1
3 2
4 3
5 3
6 4
7 5
8 5
9 6
10 6
11 6
12 8
13 8
14 8
15 10
16 9
17 10
18 11
19 11
20 12
Referência
- OEIS obrigatório A005185
code-golf
sequence
arithmetic
Freira Furada
fonte
fonte
Respostas:
Retina ,
84837974 bytesA contagem de bytes assume a codificação ISO 8859-1.
Experimente online! (A primeira linha ativa um conjunto de testes separado por avanço de linha.)
Vou ter que jogar isso mais tarde.
fonte
Haskell,
3533 bytesDefine uma função
a
.fonte
(b.b)1+(b.b)2
seria mais curto que a soma?Julia, 29 bytes
Experimente online!
Como funciona
Redefinimos o operador unário
!
para nossos propósitos.Se n é 1 ou 2 ,
n<3
retorna true e esse é o nosso valor de retorno.Se n for maior que 2 ,
n<3
retornará false e o || ramo é executado. Esta é uma implementação direta da definição, onde~-n
produz n - 1 e~-~-n
produz n - 2 .fonte
Sesos, 54 bytes
Experimente online
Desmontado
Ou na notação Brainfuck:
fonte
C,
4342 bytesGuardado 1 byte graças a @Dennis
Cada resposta é a mesma, devo fazer algo diferente!
Experimente online!
Explicação: é basicamente,
a(n-a(n-2))+a(n-a(n-1))
mas com um comportamento indefinido muamba (funciona no meu telefone (gcc) e ideone).fonte
1
meio?
e do:
.$b+=$b[$_-$b[$_-2]]+$b[$_---$b[$_]]
Mathematica, 36 bytes
A contagem de bytes assume a codificação ISO 8859-1 e a do Mathematica
$CharacterEncoding
definida comoWindowsANSI
(o padrão no Windows; outras configurações também podem funcionar, mas outrasUTF-8
definitivamente não).Define
±
como um operador unário.Tentei me livrar da duplicação, mas acabei com a mesma contagem de bytes:
fonte
Gelatina ,
1514 bytesExperimente online! ou verifique todos os casos de teste (leva alguns segundos).
Como funciona
fonte
Geléia ,
141211 bytesEssa é uma abordagem iterativa.
Experimente online! ou verifique todos os casos de teste .
Como funciona
fonte
Python,
4540 bytesSimples interpretação ingênua do desafio.
Guardado 5 bytes graças a @LeakyNun!
fonte
Haskell,
3937 bytesexatamente como descrito no desafio, usando proteções
fonte
n<3
parah 2
ser1
.R, 50 bytes
Uso:
fonte
CJam,
1918 bytesExperimente online!
Usa a abordagem iterativa.
fonte
C #,
5144 bytesGostaria de saber se isso pode ser encurtado, tornando-o anônimograças pinkfloydx33!fonte
int a(int n)=>n<3?1:a(n-a(n-a))+a(n-a(n-2));
-a
no primeiro conjunto de parênteses deve ser-1
JavaScript (ES6),
45 bytes34 bytesUma solução recursiva no ES6. Qualquer dica de golfe muito apreciada.
Obrigado a / u / ismillo por diminuir ainda mais.
fonte
Golfscript, 29 bytes
Experimente online!
fonte
05AB1E, 29 bytes
Uma solução iterativa.
Experimente online
fonte
APL, 20 bytes
Explicação:
fonte
VBA Excel 87 bytes
Não recursivo, já que eu quero que isso funcione para n = 100000, diga:
... e pressione
return
(byte # 87) no final da linha para obter aEnd Function
declaração "de graça". Observe que os valores B são deslocados por -1 para evitar a inicialização para n = 1 e 2.Invoque na planilha normalmente, por exemplo,
=A(100000)
para obter48157
A versão recursiva, 61 bytes ,
começa a ficar excessivamente lento para n> 30 e não se pode dizer que funcione para n> 40.
fonte
Ruby, 36 bytes
Uma implementação direta. Todas as sugestões de golfe são bem-vindas.
fonte
a[n-1]
, a função precisa ser nomeada.Java 7,
686151 bytes17 salvos graças a Leaky Nun.
fonte
int a(int n){return n<3?1:a(n-a(n-2))+a(n---a(n));}
:, mas infelizmente ela usa a mesma quantidade de bytes que a resposta que você já possui. Além disso, eu especificaria que sua resposta está no Java 7, pois a resposta do Java 8 seria mais curta:n->return n<3?1:a(n-a(n-1))+a(n-a(n-2))
( 39 bytes ) .Oasis ,
975 bytes (não concorrente)Não concorrente , uma vez que o idioma pós o desafio. Obrigado a Kenny Lau por salvar 4 bytes. Código:
Formulário expandido (
V
abreviação de11
):Código:
Experimente online! . Calcula n = 1000 em 0,1 segundos.
fonte
PowerShell v2 +,
857969 bytesRecebe a entrada
$n
, define$b
como uma matriz de@(1, 1)
e entra em um loop de2 .. $n
. A cada iteração, aderimos$b
ao cálculo mais recente da sequência com um simples+=
e a definição da sequência. Em seguida, produzimos o número apropriado de$b
(com a-1
porque matrizes no PowerShell são indexadas em zero). Isso funciona se$n
é1
ou2
porque esses dois valores são preenchidos previamente nos índices mais baixos$b
desde o início, portanto, mesmo que o loop fique preso no lixo, ele será ignorado de qualquer maneira.Solução recursiva
7876 bytesNa primeira vez que usei o equivalente a um lambda como resposta, como geralmente uma solução iterativa é mais curta (como você pode ver em todas as parênteses aninhadas).
Mas, nesse caso, os parênteses aninhados são quase duplicados na solução iterativa com as chamadas de matriz aninhada, portanto, a solução recursiva é mais curta.Não, a solução iterativa é realmente mais curta (veja acima).Chame isso através do operador de execução, como
&$a 20
. Apenas uma ligação recursiva direta.fonte
JavaScript (ES6), 66 bytes
Versão não recursiva para velocidade; a versão recursiva é provavelmente mais curta, mas deixarei para outra pessoa escrever. Eu sempre gosto quando uso
reduce
. Nota: 1 byte salvo ao retornartrue
(que é convertido1
quando usado em um contexto inteiro) para ofa(1)
ea(2)
.fonte
Pitão, 16 bytes
Define uma função
y
.Experimente online (adicionado
yMS20
para imprimir os primeiros 20 valores)fonte
Quarto, 76 bytes
Eu finalmente consegui!
Experimente online
Explicação:
Experimente on-line (um pouco sem golfe por cima)
Infelizmente, a recursão mútua é um pouco exagerada para usar no golfe.
fonte
Bordo,
4341 bytesUso:
Esse problema é certamente um bom candidato para memorização. Usando o cache de opções , os tempos de execução são reduzidos significativamente:
Isso pode ser visto usando:
fonte
J,
2928 bytesUsa a definição recursiva.
Uso
Comandos extras são usados para formatar várias entradas / saídas.
Explicação
fonte
dc, 62 bytes
Esta solução faz uso de matrizes e recursão.
fonte
dc
, me avise!Erlang, 46 bytes
fonte
Lua, 59 bytes
fonte