Wprowadzenie
Sekwencja przełączania jest zdefiniowana w następujący sposób:
Zacznij od nosób stojących w kręgu ( 6w tym przykładzie).
1 2
6 3
5 4
Zaczynając od osoby 1, osoba znajdująca się na lewo od „wybranej” osoby jest usuwana.
1
6 3
5 4
Osoba usunięta może „zmienić” metodę usuwania:
- Jeśli usunięta osoba jest parzysta (tak jest w tym przypadku), następna usunięta osoba będzie na prawo od następnej „wybranej” osoby.
- Jeśli usunięta osoba jest nieparzysta, następna usunięta osoba będzie na lewo od następnej „wybranej” osoby.
Kolejna wybrana osoba zależy również od poprzednio usuniętej osoby.
- Jeśli usunięta osoba jest parzysta, następna wybrana osoba będzie po prawej stronie poprzedniej wybranej osoby.
- Jeśli usunięta osoba jest nieparzysta, patrz wyżej, ale zamień „prawo” na „lewo”.
Zatem następna wybrana osoba jest 6.
Teraz usuwamy osobę po prawej stronie 6, czyli 5:
1
6 3
4
Ponieważ 5jest to dziwne, usunięta osoba jest teraz po lewej stronie. Nowa wybrana osoba to 1.
Teraz usuwamy 3:
1
6
4
Kontynuujemy ten proces, dopóki nie zostanie nam 1 liczba - w tym przykładzie ostatnia liczba to 1. Tak więc S(6) = 1.
Pierwsze kilka liczb to:
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
Zadanie
Twoim zadaniem jest stworzenie programu (lub funkcji), który zwraca S(n)( nnumer th w sekwencji przełączania), gdy jest podany n, przy użyciu najmniejszej ilości bajtów.
Przykładowe dane wejściowe i wyjściowe:
1 -> 1
10 -> 6
13 -> 13
Masz gwarancję uzyskania dodatniej liczby całkowitej.
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach!
Uwaga: Nie ma sekwencji OEIS (co?), Aby zaoszczędzić ci kłopotu z wyszukiwaniem.
2nigdy nie pozostaje, ale czy tak 7?