sfondo
Considera una sequenza definita come segue:
- Il primo elemento è 0;
- Il secondo elemento è 4;
- Dal terzo elemento in poi, il suo valore può essere calcolato da:
- Prendendo l'insieme di numeri interi da 0 fino all'elemento precedente della sequenza (inclusivo o esclusivo, non importa);
- Rimozione di numeri interi che sono già apparsi in precedenza nella sequenza dal set;
- Sommando gli elementi rimanenti dell'insieme; questo è il valore che desideri.
È interessante notare che questa sequenza non sembra essere ancora su OEIS .
L'obiettivo
Scrivere un programma o funzione che prende un numero intero n in ingresso, ed emette il n -esimo elemento della sequenza.
Casi test
I primi elementi della sequenza sono:
- 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)
chiarimenti
- In teoria il tuo programma dovrebbe essere in grado di gestire n arbitrari se eseguito su una variante del tuo linguaggio che ha numeri interi senza limiti e accesso a una quantità illimitata di memoria. (È improbabile che le lingue senza bignum siano in grado di andare molto oltre 468930, ma non è una scusa per decodificare le risposte.)
- Puoi scegliere l'indicizzazione basata su 0 o 1 per la sequenza (ad es. Dipende da te se n = 1 restituisce il primo elemento, n = 2 il secondo elemento e così via; oppure se n = 0 restituisce il primo elemento , n = 1 il secondo elemento e così via).
- Non ci sono requisiti per l'algoritmo che usi, né per la sua efficienza; puoi implementare direttamente la definizione della sequenza (anche se è davvero inefficiente) e puoi anche implementare un algoritmo diverso che porta agli stessi risultati.
Condizione di vittoria
Questo è code-golf , quindi vince il programma corretto più breve, misurato in byte.