Einleitung (kann ignoriert werden)
Es ist ein bisschen langweilig, alle positiven Zahlen in der regulären Reihenfolge (1, 2, 3, ...) anzuordnen, nicht wahr? Hier ist also eine Reihe von Herausforderungen im Zusammenhang mit Permutationen (Umformungen) aller positiven Zahlen. Dies ist die vierte Herausforderung in dieser Reihe (Links zur ersten , zweiten und dritten Herausforderung).
In dieser Herausforderung werden wir nicht nur eine Permutation der natürlichen Zahlen untersuchen, sondern eine ganze Welt von Permutationen!
Im Jahr 2000 Clark Kimberling stellte ein Problem in der 26 - ten Ausgabe von Crux mathe , eine wissenschaftlichen Zeitschrift der Mathematik von dem kanadischen Mathematical Society veröffentlicht. Das Problem war:
Kommt jede positive ganze Zahl in dieser Reihenfolge genau einmal vor?
Im Jahr 2004 vorgesehen Mateusz Kwaśnicki positiven Beweis in der gleichen Zeitschrift und im Jahr 2008, er veröffentlichte einen formellere und ( im Vergleich zu der ursprünglichen Frage) ein allgemeinere Beweis. Er formulierte die Sequenz mit den Parametern und :
Er bewies, dass für jedes so dass irrational ist, die Sequenz eine Permutation der natürlichen Zahlen ist. Da es unendlich viele und Werte gibt, für die dies zutrifft, ist dies wirklich eine ganze Welt von Permutationen der natürlichen Zahlen. Wir bleiben beim Original , und für diese Parameter kann die Sequenz als A050000 gefunden werdenin der OEIS. Die ersten 20 Elemente sind:
1, 3, 9, 4, 2, 6, 18, 54, 27, 13, 39, 19, 57, 28, 14, 7, 21, 10, 5, 15
Da dies eine „reine Sequenz“ Herausforderung ist, die Aufgabe zu Ausgang ist für eine gegebene als Eingabe, wobei ist A050000 .
Aufgabe
Bei einem gegebenen ganzzahligen Eingangs , Ausgabe in Ganzzahl - Format, wobei:
Hinweis: Hier wird eine 1-basierte Indizierung angenommen. Sie können eine 0-basierte Indizierung verwenden, also usw. Bitte erwähnen Sie dies in Ihrer Antwort, wenn Sie dies verwenden möchten.
Testfälle
Input | Output
---------------
1 | 1
5 | 2
20 | 15
50 | 165
78 | 207
123 | 94
1234 | 3537
3000 | 2245
9999 | 4065
29890 | 149853
Regeln
- Eingabe und Ausgabe sind ganze Zahlen (Ihr Programm sollte mindestens Eingabe und Ausgabe im Bereich von 1 bis 32767 unterstützen)
- Ungültige Eingaben (0, Gleitkommazahlen, Zeichenfolgen, negative Werte usw.) können zu unvorhergesehenen Ausgaben, Fehlern oder (un) definiertem Verhalten führen.
- Es gelten die Standard- E / A-Regeln .
- Standardlücken sind verboten.
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes
Antworten:
Japt ,
15 bis14 Bytes1-indiziert.
Versuch es
quelle
JavaScript (ES6),
55 5150 Byte1 Byte dank @EmbodimentofIgnorance
gespeichert 1 Byte dank @tsh gespeichert
Probieren Sie es online!
quelle
n=>eval("for(o=[p=2];n--;)o[p=o[q=p>>1]?3*p:q]=p")
Gelee , 15 Bytes
Ein vollständiges Programm, das die Ganzzahl
n
(1-basiert) von STDIN akzeptiert und das Ergebnis ausgibt.Probieren Sie es online!
Wie?
quelle
05AB1E ,
1615 BytesDank Kevin Cruijssen 1 Byte gespeichert .
0-indiziert.
Probieren Sie es online!
Erläuterung
Unter Verwendung
n=1
als Beispielquelle
Perl 6 , 49 Bytes
-2 Bytes dank nwellnof
Probieren Sie es online!
Gibt das 0-indizierte Element in der Sequenz zurück. Sie können dies in 1-indiziert ändern, indem Sie die Startelemente in
0,1
anstelle von ändern1,3
Erläuterung:
quelle
J ,
4740 BytesProbieren Sie es online!
ungolfed
Direkte Übersetzung der Definition in J. Sie wird von Grund auf aufgebaut, indem
^:
die erforderliche Anzahl von Iterationen vom Startwert ausgeführt wird.quelle
Java 10,
12099 BytesProbieren Sie es online aus.
Erläuterung:
quelle
Haskell ,
6765 BytesProbieren Sie es online!
Verwendet eine 0-basierte Indizierung.
BEARBEITEN: Speichert 2 Bytes, indem
elem
anstelle vonnotElem
und Bedingungen geändert werdenquelle
Jelly , 21 Bytes
Probieren Sie es online!
quelle
Ruby ,
545248 BytesProbieren Sie es online!
quelle
C ++ (GCC) ,
189180 Bytes-9 Bytes zu kleinem Golfen
Probieren Sie es online!
Berechnet die Sequenz bis und
n
gibt dann das gewünschte Element zurück. Langsam für größere Indizes.quelle
Python 2 , 66 Bytes
Probieren Sie es online!
Verwendet nullbasierte Indizierung. Das Lambda baut die Sequenz nur rekursiv auf und kehrt zurück, sobald der erforderliche Index erreicht ist.
quelle
Stax , 14 Bytes
Führen Sie es aus und debuggen Sie es
Nullindexiert.
quelle
Wolfram Language (Mathematica) , 63 Byte
Probieren Sie es online!
Dies ist 0-indiziert
(in TIO habe ich in jedem Testfall -1 hinzugefügt)
quelle
Python 2 , 62 Bytes
Probieren Sie es online!
Rückgabe
True
füra(0)
. 0-indiziert.quelle
Python 3 ,
1051031009583 Bytes-2 Bytes dank agtoever
-12 Bytes dank ArBo
Probieren Sie es online!
quelle
while len(s)<=n
und die i ersetzen-1
. Dies sollte eines von zwei Zeichen abschneiden.if
aus derwhile
Schleife entfernen , um diese Schleife mit einerGaia ,
22-20BytesProbieren Sie es online!
0-basierter Index.
Dank an Shaggy für die Annäherung
;D
quelle
Haskell , 55 Bytes
Probieren Sie es online!
Golfen user1472751 der Slick - Liste-Erzeugungsverfahren .
Die gleiche Länge:
Probieren Sie es online!
quelle
Lua , 78 Bytes
Probieren Sie es online!
quelle
z
Variablen und Ändern der if-Anweisung in ternary