fundo
Considere uma sequência definida da seguinte maneira:
- O primeiro elemento é 0;
- O segundo elemento é 4;
- A partir do terceiro elemento, seu valor pode ser calculado por:
- Tomando o conjunto de números inteiros de 0 até o elemento anterior da sequência (inclusivo ou exclusivo, não importa);
- Remoção de números inteiros que já apareceram anteriormente na sequência do conjunto;
- Adicionando os demais elementos do conjunto; esse é o valor que você deseja.
Curiosamente, essa sequência ainda não parece estar no OEIS .
A tarefa
Escrever um programa ou função que leva um número inteiro n como entrada, e gera o n ésimo elemento da sequência.
Casos de teste
Os primeiros elementos da sequência são:
- 0 0
- 4
- 6 (1 + 2 + 3)
- 11 (1 + 2 + 3 + 5)
- 45 (1 + 2 + 3 + 5 + 7 + 8 + 9 + 10)
- 969 (1 + 2 + 3 + 5 + 7… 10 + 12… 44)
- 468930 (1 + 2 + 3 + 5 + 7… 10 + 12… 44 + 46… 968)
Esclarecimentos
- Em teoria, seu programa deve ser capaz de lidar com n arbitrário se for executado em uma variante de sua linguagem que possua números inteiros ilimitados e acesso a uma quantidade ilimitada de memória. (É improvável que os idiomas sem bignums possam ir muito além do 468930, mas isso não é desculpa para codificar as respostas.)
- Você pode escolher a indexação com base em 0 ou em 1 para a sequência (por exemplo, depende de você se n = 1 retorna o primeiro elemento, n = 2 o segundo elemento e assim por diante; ou se n = 0 retorna o primeiro elemento , n = 1 o segundo elemento e assim por diante).
- Não há requisitos no algoritmo que você usa, nem em sua eficiência; você pode implementar a definição da sequência diretamente (mesmo que seja realmente ineficiente) e também pode implementar um algoritmo diferente que leva aos mesmos resultados.
Condição de vitória
Isso é código-golfe , e o programa correto mais curto, medido em bytes, vence.