Hintergrund
Betrachten Sie eine Sequenz, die wie folgt definiert ist:
- Das erste Element ist 0;
- Das zweite Element ist 4;
- Ab dem dritten Element kann sein Wert berechnet werden durch:
- Nehmen Sie den Satz von Ganzzahlen von 0 bis zum vorherigen Element der Sequenz (einschließlich oder ausschließlich, es spielt keine Rolle);
- Entfernen aller Ganzzahlen, die bereits früher in der Sequenz aufgetreten sind, aus der Menge;
- Addiere die verbleibenden Elemente der Menge; Das ist der Wert, den Sie wollen.
Interessanterweise scheint diese Sequenz noch nicht auf OEIS zu sein .
Die Aufgabe
Schreiben Sie ein Programm oder eine Funktion, die eine ganze Zahl n als Eingabe verwendet und das n- te Element der Sequenz ausgibt .
Testfälle
Die ersten Elemente der Sequenz sind:
- 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)
Klarstellungen
- Ihr Programm sollte theoretisch in der Lage sein, beliebiges n zu verarbeiten, wenn es mit einer Variante Ihrer Sprache ausgeführt wird, die unbegrenzt große ganze Zahlen und unbegrenzten Speicherplatz hat. (Sprachen ohne Bignums werden wahrscheinlich nicht viel über 468930 hinaus kommen, aber das ist keine Entschuldigung, um die Antworten hart zu kodieren.)
- Sie können entweder 0-basierte oder 1-basierte Indizierung für die Sequenz wählen (z. B. liegt es an Ihnen, ob n = 1 das erste Element, n = 2 das zweite Element usw. zurückgibt oder ob n = 0 das erste Element zurückgibt , n = 1 das zweite Element und so weiter).
- Es gibt keine Anforderungen an den von Ihnen verwendeten Algorithmus oder dessen Effizienz. Sie können die Definition der Sequenz direkt implementieren (obwohl sie wirklich ineffizient ist), und Sie können auch einen anderen Algorithmus implementieren, der zu den gleichen Ergebnissen führt.
Siegbedingung
Das ist Code-Golf , also gewinnt das kürzeste richtige Programm, gemessen in Bytes.