Intro
Die Schaltsequenz ist wie folgt definiert:
Beginnen Sie mit n
Personen, die in einem Kreis stehen ( 6
für dieses Beispiel).
1 2
6 3
5 4
Ausgehend von der Person 1
wird die Person entfernt, die sich links von der "ausgewählten" Person befindet.
1
6 3
5 4
Die entfernte Person kann die Entfernungsmethode "umschalten":
- Wenn die entfernte Person gerade ist (was in diesem Fall der Fall ist), befindet sich die nächste entfernte Person rechts von der nächsten "ausgewählten" Person.
- Wenn die entfernte Person ungerade ist, befindet sich die nächste entfernte Person links von der nächsten "ausgewählten" Person.
Die nächste ausgewählte Person ist auch von der zuvor entfernten Person abhängig.
- Wenn die entfernte Person gerade ist, befindet sich die nächste ausgewählte Person rechts von der zuvor ausgewählten Person.
- Wenn die entfernte Person ungerade ist, siehe oben, aber ersetzen Sie "rechts" durch "links".
Also ist die nächste gewählte Person dann 6
.
Jetzt entfernen wir die Person rechts von 6
, das ist 5
:
1
6 3
4
Weil 5
es seltsam ist, befindet sich die entfernte Person jetzt links. Die neu gewählte Person ist 1
.
Wir entfernen jetzt 3
:
1
6
4
Wir setzen diesen Prozess fort, bis wir 1 Nummer haben - in diesem Beispiel ist die endgültige Nummer 1
. Also deshalb S(6) = 1
.
Die ersten Zahlen sind:
n | S(n)
---------
1 | 1
2 | 1
3 | 3
4 | 1
5 | 5
6 | 1
7 | 3
8 | 6
9 | 5
10 | 6
11 | 9
Aufgabe
Ihre Aufgabe ist es, ein Programm (oder eine Funktion) zu erstellen, das bei Angabe mit der geringsten Anzahl von Bytes S(n)
(die n
dritte Nummer in der Schaltsequenz) zurückgibt n
.
Beispiel für Ein- und Ausgänge:
1 -> 1
10 -> 6
13 -> 13
Sie erhalten garantiert eine positive Ganzzahl.
Dies ist Code-Golf , also gewinnt der kürzeste Code in Bytes!
Hinweis: Es gibt keine OEIS-Sequenz (was?), Um Ihnen die Suche zu ersparen.
2
bleibt nie, aber tut7
?Antworten:
Python 2,
18394 Bytes-4 Bytes dank Artyer (verwenden
input()
undprint
stattdef
undreturn
)-1 Byte dank FlipTack (verwenden
print-~p[0]
statt undprint p[0]+1
)repl.it
Dies folgt nur den Anweisungen gegeben, ich habe ein Muster bemerkt, vielleicht könnte es ausgenutzt werden?
Die einzigen Änderungen sind:
0
basierte Indizierung zu verwenden (so dass gerade Leute ungerade sind und umgekehrt) - dies spart 5 Bytes in der Golflogik und wird am Ende mit korrigiert+1
1
als links und-1
als rechts (eine Auswahl verwenden - wie jeder nach außen statt konfrontiert ist )pop
aus der Liste berücksichtigt wird , wird der "Zeiger" -Index bereits Schritt eins rechts in der Liste (oder links in der ursprünglichen Terminologie).Ungolfed:
quelle
print-~p[0]
?