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 zweite Herausforderung in dieser Reihe. Die erste Herausforderung finden Sie hier .
Bei dieser Herausforderung verwenden wir Gray-Codes, um die natürlichen Zahlen neu zu ordnen. Ein Gray-Code oder "gespiegelter Binärcode" ist eine Binärcodierung, bei der sich zwei aufeinanderfolgende Werte in nur einem Bit unterscheiden. Eine praktische Anwendung dieser Kodierung ist die Verwendung in Drehgebern , daher mein Verweis auf "Turn My Way" .
Beachten Sie, dass diese Codierung einen gewissen Freiheitsgrad lässt. Beispielsweise gibt es nach der Binärzahl 1100 vier mögliche folgende Codes: 1101, 1110, 1000 und 0100. Aus diesem Grund definiere ich als den kleinsten, bisher nicht verwendeten Wert, der sich in der Binärkodierung nur um ein Zeichen unterscheidet. Diese Reihenfolge entspricht A163252 .
Da dies eine „reine Sequenz“ Herausforderung ist, die Aufgabe zu Ausgang ist für ein gegebenen als Eingabe, wobei ist A163252 .
Aufgabe
Bei einer Ganzzahleingabe wird im Ganzzahlformat ( nicht im Binärformat) ausgegeben.
a ( n - 1 ) a ( n ) ist definiert als die am wenigsten positive Ganzzahl, die nicht früher in der Sequenz auftritt, so dass sich und in nur einem Bit unterscheiden, wenn sie in Binärform geschrieben sind.
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 | 4
20 | 18
50 | 48
123 | 121
1234 | 1333
3000 | 3030
9999 | 9997
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. In A163252 wird als 0 definiert. Bei dieser Herausforderung werden wir dies ignorieren.
- Es gelten die Standard- E / A-Regeln .
- Standardlücken sind verboten.
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes
Schlussbemerkung
Siehe die folgenden verwandten (aber nicht gleichen) PP & CG-Fragen:
